You are on page 1of 3

;---------------- Encabezado -------------------LIST P=16F84 include <P16F84.

INC> __config (_WDT_OFF & _XT_OSC & _BODEN_OFF) errorlevel -302 ;ignorar errores al almacenar en banco 1 ;----------- Registros de tiempo ---------------reg1 reg2 EQU EQU 0x0C 0x0D

;-------------- Vector de Reset ----------------ORG GOTO 0x00 inicio

;----------Rutina de interrupcin (ISR)---------ORG BTFSS GOTO BCF RETFIE BCF RETFIE 0x04 INTCON,1 tmr INTCON,1 INTCON,2 ; salta si la interrup. es por RB0 ; sino, es por TMR0 y ah lo atiende ; limpia bandera INTF ; retorno de interrupcin ; limpia bandera de T0IF ; retorno de interrupcin

tmr

;----------- Configuracin de puertos ----------inicio BSF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF BCF STATUS,RP0 0XFF TRISA 0x01 TRISB 0X47 OPTION_REG STATUS,RP0 ; ; ; ; ; ; carga w con 1111 1111 PORTA es entradas carga w con 0000 0001 RB0=entrada, el resto salida carga w con 0100 0111 RB0=flanco ascendente, prescaler=256

;------- Habilitacin interrupcin por RB0 ------MOVLW MOVWF CLRF 0x90 INTCON PORTB ; habilitamos interrupciones 1001 0000 ; GIE e INTE(para RB0) ; limpio el puerto B

;------------ El portn est abierto? -----------BTFSC GOTO PORTA,2 dormir ; salta si Dcerrar=0 (portn abierto) ; sino (portn cerrado) va a dormir

;------- Si est abierto espera instruccin -----espera BTFSC GOTO BTFSC GOTO GOTO PORTB,0 abrir PORTA,0 c_rrar espera ; ; ; ; salta sino, salta sino, si no se pulsa Abrir fue pulsado y lo atiende en abrir si no se pulsa cerrar fue pulsado y lo atiende en c_rrar

;-------- micro en estado de bajo consumo --------

dormir SLEEP

; Espera interrupcin por RB0

;--------- Rutina para abrir el portn ----------abrir BCF CALL BSF BSF PORTB,4 retardo PORTB,1 PORTB,2 PORTA,1 d_abrir PORTB,1 PORTB,3 PORTA,0 c_rrar espero ; ; ; ; ; ; ; ; prepara motor para subir hace un pequeo retardo enciende motor (abre) enciende semforo salta si se pulsa Dabrir (sensor) sino lo atiende en d_abrir Dabrir=1, entonces detiene motor y enciende timbre

d_abrir BTFSS GOTO BCF BSF espero BTFSC GOTO GOTO

; salta si no se pulsa cerrar (pulsador) ; sino, fue activado y lo atiende en c_rrar ; espero que se pulse cerrar

;--------- Rutina para cerrar el portn ----------c_rrar BCF BSF CALL BSF dcerrar BTFSS GOTO BCF BSF BCF PORTB,3 PORTB,4 retardo PORTB,1 PORTA,2 dcerrar PORTB,1 PORTB,5 PORTB,2 ; ; ; ; ; ; ; ; ; apaga timbre invierte motor para bajar hace un pequeo retardo enciende motor salta si se activa Dcerrar (sensor) sino, espero que se active Dcerrar=1, entonces detiene motor enciende luz de cochera apaga semforo

;------- Rutina de temporizacin 50 segundos ------MOVLW MOVWF MOVLW MOVWF tiempo1 MOVLW MOVWF tiempo MOVLW MOVWF nada BTFSC GOTO DECFSZ GOTO DECFSZ GOTO BCF CLRF GOTO 0xA0 INTCON 0x2D reg1 0x64 reg2 0xD8 TMR0 TMR0,7 nada reg2,1 tiempo reg1,1 tiempo1 PORTB,5 INTCON inicio ; habilita T0IE interrupcin por TMR0 ; cargo w con d'45'=0x2D ; lo pasa a reg1 ; cargo w con 100 ; y lo pasa a reg2 ; cargo w con 216 ; lo pasa a TMR0 ; Salta si Bit7 de TMR0 es cero ; sino espera interrupcin por TMR0 ; ; ; ; decremento reg2 y salta si reg2=0 sino vuelve a cargar TMR0 decrementa reg1 y salta si reg1=0 sino vuelve a cargar reg2

; 50 seg. cumplidos apago luz de cochera ; deshabilito interrupciones ; vuelve a empezar para dormir al micro

; ------ retardo de 189000 us. aproximadamente -------retardo MOVLW 0xFA ; Aqu se cargan los registros

dos uno

MOVWF MOVWF DECFSZ GOTO DECFSZ GOTO RETURN

reg1 reg2 reg2,1 uno reg1,1 dos

; carga reg1 con 250 ; y reg2 con 250 ; decrementa y salta si reg2=0 ; decrementa y salta si reg1=0 ; ir a cargar reg2 nuevamente ; regreso del retardo

;-----------------------------------------END ;------------------------------------------

You might also like