Autor Tema: Por qué no me funciona este programa?  (Leído 2264 veces)

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

Desconectado Carlete71

  • PIC18
  • ****
  • Mensajes: 433
Por qué no me funciona este programa?
« en: 17 de Julio de 2004, 08:52:00 »

Hola a todos. A ver si me pueden echar una mano porque ya la cabeza no me da. Ayer estaba haciendo un programita sencillo para generar cuatro secuencias de luces mediante un pulsador en RB0 (como entrada) y las 12 patas restantes, como salida. Lo curioso del tema es que el circuito me funciona correctamente en el simulador, pero cuando lo llevo a la práctica, no.

Ya verifiqué el WDT y está desactivado. El conexionado del circuito también está correcto. Los LDS´s permanecen todo el tiempo apagados.

Gracias por sus comentarios.

Saludos,

   list   p=16f84a

porta   equ   0x05
portb   equ   0x06
estado   equ   0x03
tmr0   equ   0x01
intcon   equ   0x0b
acu   equ   0x0c
aux   equ   0x0d

      org   0
      goto   inicio

      org   4
      goto   inter

      org   5

inicio      bsf   estado,5   
      movlw   b"00000001"
      movwf   portb
      clrf   porta
      movlw   b"11000111"
      movwf   tmr0
      movlw   b"10110000"
      movwf   intcon
      bcf   estado,5
      clrf   tmr0
      clrf   porta
      clrf   portb
      clrf   aux
      clrf   acu

ppal      clrw   
subwf   aux,0
      btfss   estado,2
      goto   dos
      call   rutina1   
dos      movlw   d"1"
      subwf   aux,0
      btfss   estado,2
      goto   tres
      call   rutina2
tres      movlw   d"2"
      subwf   aux,0
      btfss   estado,2
      goto   cuatro
      call   rutina3
cuatro      movlw   d"3"
      subwf   aux,0
      btfss   estado,2
      goto   ppal
      call   rutina4
      goto   ppal

rutina1      clrf   tmr0
      movlw   b"00010000"
      movwf   porta
      clrf   portb
      call   retardo
etiq1      rrf   porta,1
      call   retardo
      btfss   porta,0
      goto   etiq1
      clrf   porta
      movlw   b"10000000"
      movwf   portb
      call   retardo
etiq2      rrf   portb,1
      call   retardo
      btfss   portb,1
      goto   etiq2
      movlw   b"00000100"
      movwf   portb
      call   retardo
etiq3      rlf   portb,1
      call   retardo
      btfss   portb,7
      goto   etiq3
      clrf   portb
      movlw   b"00000001"
      movwf   porta
      call   retardo
etiq4      rlf   porta,1
      call   retardo
      btfss   porta,3
      goto   etiq4
      return

rutina2      clrf   tmr0
      movlw   b"00010000"
      movwf   porta
      movlw   b"00000010"
      movwf   portb
      call   retardo      
      movlw   b"00001000"
      movwf   porta
      movlw   b"00000100"
      movwf   portb
      call   retardo      
      movlw   b"00000100"
      movwf   porta
      movlw   b"00001000"
      movwf   portb
      call   retardo
      movlw   b"00000010"
      movwf   porta
      movlw   b"00010000"
      movwf   portb
      call   retardo
      movlw   b"00000001"
      movwf   porta
      movlw   b"00100000"
      movwf   portb
      call   retardo
      movlw   b"00000000"
      movwf   porta
      movlw   b"11000000"
      movwf   portb
      call   retardo
      movlw   b"00000001"
      movwf   porta
      movlw   b"00100000"
      movwf   portb
      call   retardo
      movlw   b"00000010"
      movwf   porta
      movlw   b"00010000"
      movwf   portb
      call   retardo
      movlw   b"00000100"
      movwf   porta
      movlw   b"00001000"
      movwf   portb
      call   retardo
      movlw   b"00001000"
      movwf   porta
      movlw   b"00000100"
      movwf   portb
      call   retardo   
      return   
      
rutina3      clrf   tmr0
      movlw   b"00010000"
      movwf   porta
      movlw   b"00000010"
      movwf   portb
      call   retardo      
      movlw   b"00011000"
      movwf   porta
      movlw   b"00000110"
      movwf   portb
      call   retardo      
      movlw   b"00011100"
      movwf   porta
      movlw   b"00001110"
      movwf   portb
      call   retardo
      movlw   b"00011110"
      movwf   porta
      movlw   b"00011110"
      movwf   portb
      call   retardo
      movlw   b"00011111"
      movwf   porta
      movlw   b"00111110"
      movwf   portb
      call   retardo
      movlw   b"00011111"
      movwf   porta
      movlw   b"11111110"
      movwf   portb
      call   retardo
      movlw   b"00001111"
      movwf   porta
      movlw   b"11111100"
      movwf   portb
      call   retardo
      movlw   b"00000111"
      movwf   porta
      movlw   b"11111000"
      movwf   portb
      call   retardo
      movlw   b"00000011"
      movwf   porta
      movlw   b"11110000"
      movwf   portb
      call   retardo
      movlw   b"00000001"
      movwf   porta
      movlw   b"11100000"
      movwf   portb
      call   retardo   
      movlw   b"00000000"
      movwf   porta
      movlw   b"11000000"
      movwf   portb
      call   retardo
      movlw   b"00000000"
      movwf   porta
      movlw   b"00000000"
      movwf   portb
      call   retardo   
      return

rutina4      clrf   tmr0
      movlw   b"00010000"
      movwf   porta
      movlw   b"00000010"
      movwf   portb
      call   retardo      
      movlw   b"00010100"
      movwf   porta
      movlw   b"00001010"
      movwf   portb
      call   retardo      
      movlw   b"00010101"
      movwf   porta
      movlw   b"00101010"
      movwf   portb
      call   retardo
      movlw   b"00011111"
      movwf   porta
      movlw   b"11111110"
      movwf   portb
      call   retardo
      movlw   b"00001111"
      movwf   porta
      movlw   b"11111100"
      movwf   portb
      call   retardo
      movlw   b"00001011"
      movwf   porta
      movlw   b"11110100"
      movwf   portb
      call   retardo
      movlw   b"00001010"
      movwf   porta
      movlw   b"11010100"
      movwf   portb
      call   retardo
      movlw   b"00011111"
      movwf   porta
      movlw   b"11111110"
      movwf   portb
      call   retardo
      return

retardo      clrf   tmr0
      movlw   0x01
      movwf   acu
etiq5      btfsc   acu,0
      goto   etiq5
      return

inter      btfss   intcon,2
      goto   etiq6
      clrf   acu
      bcf   intcon,2
      clrf   tmr0
      retfie
etiq6      incf   aux
      btfss   aux,2
      goto   etiq7
      clrf   aux
      bcf   intcon,1
      retfie
etiq7      bcf   intcon,1
      retfie
      end



Desconectado Carlete71

  • PIC18
  • ****
  • Mensajes: 433
RE: Por qué no me funciona este programa?
« Respuesta #1 en: 17 de Julio de 2004, 09:43:00 »

Bueno, solucioné uno de los problemas, en realidad el circuito no estaba perfecto... había olvidado poner la resistencia de Pull up en RA4 (que es Open Colector) . Pero ahora lo que hace el circuito es que cuando lo energizo, hace la primera secuencia una sola vez y luego se queda muerto de nuevo. La primera secuencia es como la del coche fantástico que comienza con RA4,RA3,RA2,RA1,RA0,RB7,RB6... -> RB1,RB2,RB3...->RA4. Y debería reepetirse hasta que se le de una orden con RB0 de pasar a la siguiente secuencia.


Desconectado Carlete71

  • PIC18
  • ****
  • Mensajes: 433
RE: Por qué no me funciona este programa?
« Respuesta #2 en: 17 de Julio de 2004, 13:19:00 »
Bueno señores, ahora si que les puedo decir que esto es un CANGREJO!!! Inexplicable . Por favor, el que crea saber la respuesta que me lo explique.

Resulta, que se me ocurrió bajar el voltaje de la fuente que alimenta al circuito de 5V a 3V, y el resultado es que ahora funciona perfectamente... Alguien tiene idea de por qué puede estar pasando esto? Será que el PIC está medio malo?... Primera vez que me pasa esto...

Desconectado Carlete71

  • PIC18
  • ****
  • Mensajes: 433
RE: Por qué no me funciona este programa?
« Respuesta #3 en: 17 de Julio de 2004, 13:52:00 »

RESUELTO EL PROBLEMA!!!!!!  

Gracias de todos modos