;**********PUENTE-GARAJE.ASM*******
;CONTROL DE LA PUERTA de un GARAJE o de un Puente levadizo ;. pag 283 y 284 del libro.ejercicio hecho por mi ;
;En reposo el sem{aforo rojo (SR)est{a encendido; Reposo RA0 ;Al entrar un vehiculo se acciona la llave (AP) -RA3- y se activa un rele ;(MA) -RB6- , simulado mediante un led, que pone en marcha el motor de ;apertura de la puerta. ;de la puerta . Cuando se abre totalmente la puerta y se activa el ;sensor (PA) -RA2-, ;se desactiva (MA) -RB6-, se ilumina el semaforo Verde (SV) -RB2-, y se ;apaga el rojo (SR)-RB0-
;La situacion anterior se mantiene durante 5sgs.
;Tras ese tiempo, se apaga el semaforo verde y se enciende el rojo, al mismo ;tiempo que se activa el rele (MC)-RB7-, que pone en marcha el motor ;de cierre de la puerta hasta retornar a la situacion de reposo.
;Si en la fase de cierre hay algun vehĂculo en la entrada(sensor DP)-RA1-), ;se inicia una nueva secuencia de apertura.
;DIRECTIVAS DEL PROGRAMA
LIST
P=16F84
RADIX HEX
; Se emplea el PIC16F84 ; Sistema de numeraci¢n hexadecimal
;ETIQUETAS DEL PROGRAMA
W
EQU 0x00 ; Registro de destino W : d=0 1
F
EQU 0x01 ; Registro de destino F : d=1
Z
EQU 0X02 ; Bit 2 del registro ESTADO
TMR0_OPT EQU 0x01 ; El registro TMR0 ocupa la direcci¢n 1 ; del banco 0 y el OPTION la direcci¢n 1 ; del banco 1 ESTADO EQU 0x03 ; El registro ESTADO ocupa la direcci¢n ; 3 de los dos bancos INTCON EQU 0x0B ; El registro INTCON ocupa la direcci¢n PUERTAA EQU 0x05 ; La PUERTA A ocupa la direcci¢n 5 del ; banco 0 y su registro de configuraci¢n ; la direcci¢n 5 del banco 1 PUERTAB EQU 0x06 ; La PUERTA B ocupa la direcci¢n 6 del ; banco 0 y su registro de configuraci¢n ; la direcci¢n 6 del banco 1 TEMPO1 EQU 0x0C ; Registro auxiliar para las rutinas de ; DELAY
;PROGRAMA PRINCIPAL
ORG
0
; El programa comienza en la direcci¢n 0 y
goto
INICIO
; salta a la direcci¢n 5 para sobrepasar el
ORG
5
; vector de interrupci¢n
ESTADO,5
; Selecci¢n del banco 1
INICIO bsf
movlw b'00001111'
; Se configura la PUERTA A como Entrada
movwf PUERTAA
;
clrf
PUERTAB
; Se configura la puerta B como salida
movlw b'00000111' movwf TMR0_OPT
; Se asigna el preescaler al TMR0
bcf
ESTADO,5
; Selecci¢n del banco 0
clrf
PUERTAA
; Se inicializan las dos puertas a
clrf
PUERTAB
; ceros
2
bsf
PUERTAB,0
;activa semaforo Rojo (SR)-RB0-
BUCLE0 btfsc PUERTAA,3 goto BUCLE0
BUCLEIR nop bcf
;Comprueba si la llave de apertura (AP)-RA3-
;esta activada.
;instruccion no valida para ajustar reloj
PUERTAB,7
;desactiva el motor de cierre MC
;para cuando retorne del Bucle_IRF bsf
PUERTAB,6
;Activa al T1 transistor de apertura
BUCLE1 btfsc PUERTAA,2
;Comprueba final carrera de apertura-RA2-
goto BUCLE1 bcf
PUERTAB,6
;Apaga motor de apertura (MA)-RB6- T1
bsf
PUERTAB,2
;activa semaforo Verde (SV)-RB2-
bcf
PUERTAB,0
;Apaga semaforo rojo (SR)
call DELAY5S
;Espera 5segundos para cerrar la puerta
bcf
PUERTAB,2
;Apaga semaforo Verde (SV) RB0
bsf
PUERTAB,0
;Activa Semaforo Rojo (SR) -RB0-
bsf
PUERTAB,7
;Activa Motor cierre (MC)-RB7- activa T2
BUC_IRF btfsc PUERTAA,1
;Verifica infrarrojos.
goto BUCLE2 goto BUCLEIR
;Si hay se¤al infrarrojos se va al bucleIR
;para realizar una secuencia de cierre. BUCLE2 btfsc PUERTAA,0
;verifica si se ha llegado a posicion de
;reposo. goto BUC_IRF
;Vuelve al buc_IRF para continuar chequeando
;el infrarrojos. bcf
PUERTAB,7
goto BUCLE0
;desactiva Motor cierre(MC)-RB7;Vuelta al bucle0 para reiniciar todo el proceso
3
;************RUTINA DE DELAY 5 SEGUNDOS Pasado este tiempo se cierra****** ; RUTINA DE DELAY DE 1 SEGUNDO
DELAY5S movlw 0x64 ;100 decimal para el contaje de 1segundo movwf TEMPO1 ; Carga la variable TEMPO1, que ser decrementada call DELAY10 ; en la rutina a la que se llama return
DELAY10 bcf INTCON,2 movlw 0x3D
; Borra el flag de estado del TMR0
;3D=61decimal; 256-61=195
movwf TMR0_OPT
; Carga del TMR0 para que cuente 195
;T1=(256-N)RANGO ; T1=(256-61)256=49920usg DELAY10_1 btfss goto
INTCON,2
DELAY10_1
decfsz TEMPO1,F goto DELAY10 return
; Espera el desbordamiento del TMR0
;registro auxiliar para el contaje hasta 5sg ;hace cien veces el decremento consiguiendo
;los 5sg. Exactamente: 4,942379sgs.
end ;***************************************************************************
4