;-----------------------------------------------------------
; CONDIÇÃO IF ELSE
;-----------------------------------------------------------
MOVLW d'3' ; WREG = 3
MOVWF z ; Z = WREG
MOVF z, W ; WREG = Z
SUBWF D1, W ; WREG = D3 - WREG
BTFSS STATUS, C ; SE D1<Z, ENTÃO C NÃO DEVE SER DEFINIDO
GOTO TRANSITO_ABERTO
; SE CHEGOU AQUI SIGNIFICA QUE D1>=3
; TESTE SE D3>=3
MOVLW d'3' ; WREG = 3
MOVWF z ; Z = WREG
MOVF z, W ; WREG = Z
SUBWF D3, W ; WREG = D3 - WREG
BTFSS STATUS, C ; SE D3<Z, ENTÃO C NÃO DEVE SER DEFINIDO
GOTO TRANSITO_ABERTO
; SE CHEGOU AQUI SIGNIFICA QUE D3>=3
; TESTE SE D5 >= 5
MOVLW d'3' ; WREG = 3
MOVWF z ; Z = WREG
MOVF z, W ; WREG = Z
SUBWF D5, W ; WREG = D5 - WREG
BTFSS STATUS, C ; SE D5<Z, ENTÃO C NÃO DEVE SER DEFINIDO
GOTO TRANSITO_ABERTO
; SE CHEGOU AQUI SIGNIFICA QUE D5>=3
; TESTE SE D7>=3
MOVLW d'3' ; WREG = 3
MOVWF z ; Z = WREG
MOVF z, W ; WREG = Z
SUBWF D7, W ; WREG = D7 - WREG
BTFSS STATUS, C ; SE D7<Z, ENTÃO C NÃO DEVE SER DEFINIDO
GOTO TRANSITO_ABERTO
; SE CHEGOU AQUI SIGNIFICA QUE D7>=3
; E VAI ABRIR O TRANSITO
TRANSITO_FECHADO
bank0
BCF RS ;SELECIONA O DISPLAY PARA COMANDOS
MOVLW B'00000001'
CALL ESCREVE ;ESCREVE COMANDO PARA LIMPAR TODO O DISPLAY
BSF RS ;SELECIONA O DISPLAY PARA DADOS
CALL DELAY1
MOVLW 'T' ;
CALL ESCREVE
MOVLW 'R' ;
CALL ESCREVE
MOVLW 'A' ;
CALL ESCREVE
MOVLW 'N' ;
CALL ESCREVE
MOVLW 'S' ;
CALL ESCREVE
MOVLW 'I' ;
CALL ESCREVE
MOVLW 'T' ;
CALL ESCREVE
MOVLW 'O' ;
CALL ESCREVE
MOVLW 'G' ;
CALL ESCREVE
MOVLW 'F' ;
CALL ESCREVE
MOVLW 'E' ;
CALL ESCREVE
MOVLW 'C' ;
CALL ESCREVE
MOVLW 'H' ;
CALL ESCREVE
MOVLW 'A' ;
CALL ESCREVE
MOVLW 'D' ;
CALL ESCREVE
MOVLW 'O' ;
; ACIONAMENTO E DESLIGAMENTO DOS LEDS
BSF STATUS, 5; SELECIONA BANCO 1
CLRF TRISC ; TRISC = 0
BCF STATUS,5; SELECIONA BANCO 0
BSF PORTC,1 ; PORTC RC1 = 1
BCF PORTC,0 ; PORTC RCO = 0
goto INICIO ;loop
continuacao
TRANSITO_ABERTO
; SE CHEGOU AQUI, SIGNIFICA QUE D1>Z
bank0
BCF RS; SELECIONA O DISPLAY PARA COMANDOS
MOVLW B'00000001'
CALL ESCREVE ;ESCREVE COMANDO PARA LIMPAR TODO O DISPLAY
BSF RS ;SELECIONA O DISPLAY PARA DADOS
CALL DELAY1
MOVLW 'S' ;
CALL ESCREVE
MOVLW 'I' ;
CALL ESCREVE
MOVLW 'G' ;
CALL ESCREVE
MOVLW 'A' ;
CALL ESCREVE
MOVLW 'D' ;
CALL ESCREVE
MOVLW 'E' ;
CALL ESCREVE
MOVLW 'V' ;
CALL ESCREVE
MOVLW 'A' ;
CALL ESCREVE
MOVLW 'G' ;
CALL ESCREVE
MOVLW 'A' ;
CALL ESCREVE
MOVLW 'R' ;
; ACIONAMENTO E DESLIGAMENTO DOS LEDS
BSF STATUS, 5; SELECIONA BANCO 1
CLRF TRISC ; TRISC = 0
BCF STATUS,5; SELECIONA BANCO 0
BCF PORTC,1 ; PORTC RC1 = 0
BSF PORTC, 0 ; PORTC RC0 = 1
CALL DELAY20
BCF PORTC,0 ; PORTC RCO = 0
goto INICIO ;loop
GOTO continuacao