Semaforo con facil programcion

Codigo del semaforo usando uma foto 16f877a.
LISTA P = 16F877A

INCLUIR <p16f877a.INC>

__CONFIG _XT_OSC & _WDT_OFF & _LVP_ON 

; OTRA MANERA DE CONFIGURAR:
;CONFIGURACION EQU 0x2f42 B'0010111101000010'


ORG
0

CONSTANTE_1 EQU
0X20
CONSTANTE_2 EQU
0X21
CONSTANTE_3 EQU
0X22

BCF STATUS
, RP0
BCF STATUS
, RP1
CLRF PORTB

BSF STATUS
, RP0

MOVLW B
'11110000'
MOVWF TRISB

BCF STATUS
, RP0

INICIO

BSF PORTB, 0; LUZ VERDE
CALL RETARDO
CALL RETARDO
BCF PORTB, 0
BSF PORTB, 1; LUZ AMARILLA
CALL RETARDO
BCF PORTB, 1
BSF PORTB, 2; LUZ ROJA
CALL RETARDO
CHAMADA RETARDO RETARDO
BCF PORTB, 2
GOTO INICIO

RETARDO

    MOVLW   .10             ;Inicio: Bloque mas externo
MOVWF CONSTANTE_3

RETARDO_2; Inicio: Bloque intermedio

    MOVLW   .255
MOVWF CONSTANTE_2

RETARDO_1; Inicio: Bloque nucleo del retardo

    MOVLW   .192
MOVWF CONSTANTE_1

CICLO_1

    DECFSZ  CONSTANTE_1
GOTO CICLO_1


DECFSZ CONSTANTE_2

GOTO RETARDO_1




DECFSZ CONSTANTE_3

GOTO RETARDO_2




RETURN

END