Control de semaforos en una vialidad usando un pic16f887 y ensamblador
pic16f887, ensamblador, proteus
Control de semaforos en una vialidad usando un pic16f887 y ensamblador
Objetivos:
- Interruptor de on/off
- Interruptor de modo ( día o noche)
Diagrama Proteus:

Programa ASM:
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOREN_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDTE_OFF & _FOSC_INTRC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF;
LIST P=16F887
INCLUDE "P16F887.INC"
;ASIGNACION DE VARIABLES---------------------------
CONTADOR1 EQU 0X0C ; Registro auxiliar
CONTADOR2 EQU 0X0D
CONTADOR3 EQU 0X0F
;INICIO DEL PROGRAMA ---------------------------
ORG 0x00
GOTO INICIO
;SETEO DE PUERTOS ------------------------------------
INICIO
CLRF CONTADOR1
CLRF CONTADOR2
CLRF CONTADOR3
BANKSEL PORTA ;
CLRF PORTA ;
BANKSEL ANSEL ;
CLRF ANSEL ; DIGITAL I/O
BANKSEL TRISA ;
MOVLW b'11111111' ; PORT A ENTRAD
MOVWF TRISA ;
BANKSEL PORTC
CLRF PORTC ; Puerta C como salida
BANKSEL TRISC ;
MOVLW b'00000000' ;
MOVWF TRISC ; CLRF TRISC
BANKSEL PORTD
CLRF PORTD ; Puerta D como salida
BANKSEL TRISD ; Configuro el Puerto D como salida
MOVLW b'00000000' ;
MOVWF TRISD ;
;PARTE PRINCIPAL DEL PROGRAMA ------------------------
ONOFF
BANKSEL PORTA
BTFSC PORTA,5 ;PREGUNTO POR BOTON PREGUNTO SI RA5 ==0 ES CERO
GOTO ONOFF ; FALSO NO ES CERO RA3==1
SWITCH
BANKSEL PORTA
BTFSS PORTA,3 ; RA3==1 PREGUNTO POR ON/OFF
GOTO MODO_NOCHE ; FALSO RA3==0
GOTO MODO_DIA ; VERDAD RA3==1
MODO_DIA
BSF PORTC,1 ; ROJO PRINCIPAL
BSF PORTC,5 ;PASO PEATON PRINCIPAL
BSF PORTD,2 ;VERDE SECUNDARIA
BSF PORTD,3 ;ALTO PEATON SECUNDARIA
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS
BCF PORTC,1
CLRF PORTC ;PRINCIPAL
CLRF PORTD ;SECUNDARIA
BSF PORTC,1 ;ROJO
BSF PORTC,5 ;PASO PEATON PRINCIPAL
BSF PORTC,2 ;AMARILLO
BSF PORTC,5 ;PASO PEATON PRINCIPAL
BSF PORTD,3 ;ALTO PEATON SECUNDARIA
BSF PORTD,1 ;AMARILLO SECUNDARIA
BSF PORTD,3 ;ALTO PEATON SECUNDARIA
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS
BCF PORTC,1
CLRF PORTC
CLRF PORTD
BSF PORTC,3 ;VERDE
BSF PORTC,4 ;ALTO PEATON PRINCIPAL
BSF PORTD,0 ;ROJO
BSF PORTD,4 ;PASO PEATON SECUNDARIA
BSF PORTC,4 ;ALTO PEATON PRINCIPAL
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS
BCF PORTC,1
CLRF PORTC
CLRF PORTD
BSF PORTC,2 ;AMARILLO PRINCIPAL
BSF PORTC,4 ;ALTO PEATON PRINCIPAL
BSF PORTD,4 ;PASO PEATON SECUNDARIA
BSF PORTD,0 ;ROJO SECUNDARIA
BSF PORTD,1 ;AMARILLO SECUNDARIA
BSF PORTD,4 ;PASO PEATON SECUNDARIA
BSF PORTC,4 ;ALTO PEATON PRINCIPAL
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS
BCF PORTC,1
CLRF PORTC
CLRF PORTD
GOTO SWITCH
MODO_NOCHE
BSF PORTC,1 ; ROJO PRINCIPAL
BSF PORTC,5 ; PASO PEATON PRINCIPAL
BSF PORTD,1 ; AMARILLO SECUNDARIA
BSF PORTD,3 ; ALTO PEATON SECUNDARIA
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS
BCF PORTC,1 ;PRINCIPAL
CLRF PORTC
CLRF PORTD
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS
GOTO SWITCH
RETARDO_400MS
MOVLW 0X0
MOVWF CONTADOR1
MOVLW 0X08
MOVWF CONTADOR2
MOVLW 0X08
MOVWF CONTADOR3
RETARDO1
DECFSZ CONTADOR1,F
GOTO RETARDO1
DECFSZ CONTADOR2,F
GOTO RETARDO1
DECFSZ CONTADOR3,F
GOTO RETARDO1
RETURN
END
