Buen dia foro, yo soy nuevo en este foro y hace poco estoy incursionando con los pic. Yo soy programador de plc pero esto hay cosas que no entiendo. Yo soy bombero voluntario y estoy haciendo un secuenciador para las luces de arriba del camion con un pic 16f627 y tengo programado 5 secuencias de las luces pero cuando lo prendo a veces hace las cinco sino hace 2 o 3 o las corta por la mitas y pasa a la siguiente. Como dato adicional las secuencias empiezan cuando energizo el pic. No tiene programada ninguna entrada. Si alguien me puede ayudar se lo agradezco. Muchas gracias
les dejo el programa para ver que opinan
list p=16F627A
include "P16f627A.inc"
__config _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF & _LVP_OFF & _BODEN_ON & _MCLRE_OFF
mem1 equ 0x20 ;
mem2 equ 0x21 ;
mem3 equ 0x22 ;
org 0x00 ; Origen del codigo
nop ; No operacion
nop ; No operacion
goto ala
org 0x04 ;Atiendo interrupcion
goto envio
ala
org 0x05
;--------------------------CONFIGURACION PUERTOS------------------------------------------------------------
clrf PORTA ; Initialize PORTA by
; setting BORRAR ESTO
; output data latches BORRAR ESTO
movlw 0x07 ; Apaga el comparador
MOVWF CMCON ; y configura los pines
; como I/O digitales
bsf STATUS,RP0 ; Ir banco 1
bcf STATUS,RP1
clrf TRISA ; Todo Puerto a como salida
movlw b'00000000' ;
movlw b'00000000'
movwf TRISB ; PORTB salida
bcf STATUS,RP0 ; Ir banco 0
bcf STATUS,RP1
clrf PORTA
clrf PORTB
clrf mem1
clrf mem2
clrf mem3
;--------------------------------------------------------------------------------------------------------;
BUCLE
;-----------------------------------Secuencia 1------------------------------------------
movlw d'3'
movwf mem3
secuencia1
movlw b'10000000'
movwf PORTB
call retardo
movlw b'01000000'
movwf PORTB
call retardo
movlw b'00100000'
movwf PORTB
call retardo
movlw b'00010000'
movwf PORTB
call retardo
movlw b'00001000'
movwf PORTB
call retardo
movlw b'00000100'
movwf PORTB
call retardo
movlw b'00000010'
movwf PORTB
call retardo
movlw b'00000001'
movwf PORTB
call retardo
movlw b'00000010'
movwf PORTB
call retardo
movlw b'00000100'
movwf PORTB
call retardo
movlw b'00001000'
movwf PORTB
call retardo
movlw b'00010000'
movwf PORTB
call retardo
movlw b'00100000'
movwf PORTB
call retardo
movlw b'01000000'
movwf PORTB
call retardo
movlw b'10000000'
movwf PORTB
call retardo
decfsz mem3,1
goto secuencia1
;----------------------------------secuencia 2----------------------------------------
movlw d'3'
movwf mem3
secuencia2
movlw b'00001111'
movwf PORTB
call retardo2
movlw b'00000000'
movwf PORTB
call retardo2
movlw b'00001111'
movwf PORTB
call retardo2
movlw b'00000000'
movwf PORTB
call retardo2
movlw b'00001111'
movwf PORTB
call retardo2
movlw b'00000000'
movwf PORTB
call retardo2
movlw b'11110000'
movwf PORTB
call retardo2
movlw b'00000000'
movwf PORTB
call retardo2
movlw b'11110000'
movwf PORTB
call retardo2
movlw b'00000000'
movwf PORTB
call retardo2
movlw b'11110000'
movwf PORTB
call retardo2
decfsz mem3,1
goto secuencia2
;-----------------------------------Secuencia 3------------------------------------------
movlw d'7'
movwf mem3
secuencia3
movlw b'00011000'
movwf PORTB
call retardo2
call retardo2
movlw b'00111100'
movwf PORTB
call retardo2
call retardo2
movlw b'01111110'
movwf PORTB
call retardo2
call retardo2
movlw b'11111111'
movwf PORTB
call retardo2
call retardo2
movlw b'00000000'
movwf PORTB
call retardo2
call retardo2
decfsz mem3,1
goto secuencia3
;-----------------------------------Secuencia 4-----------------------------------------
movlw d'3'
movwf mem3
secuencia4
movlw b'10000000'
movwf PORTB
call retardo2
call retardo2
movlw b'01000000'
movwf PORTB
call retardo2
call retardo2
movlw b'00100000'
movwf PORTB
call retardo2
call retardo2
movlw b'00010000'
movwf PORTB
call retardo2
call retardo2
movlw b'00001000'
movwf PORTB
call retardo2
call retardo2
movlw b'00000100'
movwf PORTB
call retardo2
call retardo2
movlw b'00000010'
movwf PORTB
call retardo2
call retardo2
movlw b'00000001'
movwf PORTB
call retardo2
call retardo2
decfsz mem3,1
goto secuencia4
;-----------------------------------Secuencia 5------------------------------------------
movlw d'8'
movwf mem3
secuencia5
call retardo2
movlw b'11111111'
movwf PORTB
call retardo2
call retardo2
movlw b'00000000'
movwf PORTB
call retardo2
call retardo2
decfsz mem3,1
goto secuencia5
goto BUCLE
;-------------------------------RETARDOS---------------------------------------------
retardo
movlw d'60'
movwf mem2
arranque
bcf STATUS,Z
movlw b'11111111'
movwf mem1
coso
decfsz mem1,1
goto coso
bcf STATUS,Z
movlw b'11111111'
movwf mem1
coso1
decfsz mem1,1
goto coso1
decfsz mem2,1
goto arranque
return
retardo2
movlw d'80'
movwf mem2
arranque2
bcf STATUS,Z
movlw b'11111111'
movwf mem1
coso20
decfsz mem1,1
goto coso20
bcf STATUS,Z
movlw b'11111111'
movwf mem1
coso21
decfsz mem1,1
goto coso21
decfsz mem2,1
goto arranque2
return
;--------------------------------------------------------------------------------------------------------;
envio
retfie
END