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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *