Autor Tema: Duda inquietante!  (Leído 4927 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Duda inquietante!
« Respuesta #15 en: 30 de Junio de 2010, 22:16:39 »
¿Cómo está el WatchDogTimer? Tal vez pueda ser eso y te está reiniciando el micro constantemente.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado Iten

  • PIC10
  • *
  • Mensajes: 17
Re: Duda inquietante!
« Respuesta #16 en: 30 de Junio de 2010, 23:31:05 »
Off. Asi lo configuro cuando encabezo el programa
Te dejo el programa para que lo veas:


__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
   LIST P=16F84A
   INCLUDE <P16F84A.INC>

; Comienzo del programa -------------------------------------------------------------------------------------

   org 00h         ; El programa comienza en la dirección cero.
      
   bsf STATUS, RP0   ; Ponemos a uno el bit 5 (RP0) del registro STATUS para acceder al Banco 1.
   movlw b'00011111'
   movwf TRISA      ; Ponemos a 1 los 5 bits del registro TRISA para configurar al Puerto A como entrada.
   clrf TRISB      ; Ponemos a 0 los 8 bits del registro TRISB para configurar al Puerto B como salida.
   bcf STATUS, RP0   ; Acceso al banco 0.
      
inicio            ; Esta es una etiqueta.
   movf PORTA, 0      ; Lee el dato que esta en el puerto A y lo almacena en W.
   movwf PORTB      ; Mueve el dato que tiene W al puerto B.
   goto inicio      ; Ve a la etiqueta "inicio".
      
   end            ; Fin del programa (esta directiva es obligatoria).

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Duda inquietante!
« Respuesta #17 en: 30 de Junio de 2010, 23:38:31 »
Off. Asi lo configuro cuando encabezo el programa
Te dejo el programa para que lo veas:


__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
   LIST P=16F84A
   INCLUDE <P16F84A.INC>

; Comienzo del programa -------------------------------------------------------------------------------------

   org 00h         ; El programa comienza en la dirección cero.
      
   bsf STATUS, RP0   ; Ponemos a uno el bit 5 (RP0) del registro STATUS para acceder al Banco 1.
   movlw b'00011111'
   movwf TRISA      ; Ponemos a 1 los 5 bits del registro TRISA para configurar al Puerto A como entrada.
   clrf TRISB      ; Ponemos a 0 los 8 bits del registro TRISB para configurar al Puerto B como salida.
   bcf STATUS, RP0   ; Acceso al banco 0.
      
inicio            ; Esta es una etiqueta.
   movf PORTA, 0      ; Lee el dato que esta en el puerto A y lo almacena en W.
   movwf PORTB      ; Mueve el dato que tiene W al puerto B.
   goto inicio      ; Ve a la etiqueta "inicio".
      
   end            ; Fin del programa (esta directiva es obligatoria).

Si bien el programa es correcto yo haría lo siguiente

Código: ASM
  1. org 0x00
  2.     goto inicio
  3.  
  4.     org 0x05
  5. inicio
  6.     ..............
  7.     ...............
  8.     ...............                       ; todas las líneas de configuración
  9.  
  10. bucle
  11.     movf PORTA,W
  12.     movwf PORTB
  13.     goto bucle
  14.     end

  En sí el programa es el mismo sólo que dejo libre la dirección 0x04 porque es el vector de interrupciones. Ya cuando estés avanzado (digo yo sin saber si ya leiste y/o hiciste algo con interrupciones) vas a notar el porque.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas