4

Click here to load reader

Puente garaje-asm

Embed Size (px)

Citation preview

Page 1: Puente garaje-asm

1

;**********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 ; Se emplea el PIC16F84

RADIX HEX ; Sistema de numeraci¢n hexadecimal

;ETIQUETAS DEL PROGRAMA

W EQU 0x00 ; Registro de destino W : d=0

Page 2: Puente garaje-asm

2

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

INICIO bsf ESTADO,5 ; Selecci¢n del banco 1

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

Page 3: Puente garaje-asm

3

bsf PUERTAB,0 ;activa semaforo Rojo (SR)-RB0-

BUCLE0 btfsc PUERTAA,3 ;Comprueba si la llave de apertura (AP)-RA3-

goto BUCLE0 ;esta activada.

BUCLEIR nop ;instruccion no valida para ajustar reloj

bcf 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 ;desactiva Motor cierre(MC)-RB7-

goto BUCLE0 ;Vuelta al bucle0 para reiniciar todo el proceso

Page 4: Puente garaje-asm

4

;************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 ; Borra el flag de estado del TMR0

movlw 0x3D ;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 INTCON,2 ; Espera el desbordamiento del TMR0

goto DELAY10_1

decfsz TEMPO1,F ;registro auxiliar para el contaje hasta 5sg

goto DELAY10 ;hace cien veces el decremento consiguiendo

return ;los 5sg. Exactamente: 4,942379sgs.

end

;***************************************************************************