Elevador con PIC16F84A
; ASM source line config statements
#include "p16F84A.inc"
; CONFIG
; __config 0xFFF1
__CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_ON & _CP_OFF
LIST P=16f84a ;Procesador utilizado.
RADIX hex ;trabajo en numeracion hexadecimal
status equ 0x03
trisa equ 0x05
porta equ 0x05
trisb equ 0x06
portb equ 0x06reg1 equ 0x0c
reg2 equ 0x0d
reg3 equ 0x0e
reg4 equ 0x0f
reset org 0x00 ;El programa comienza en la dirección 0.
goto inicio ;pasa a la posicion de inicio para evitar la int.
;que se encuentra en la posicion 4
inicio bsf status,5 ;Pone a 1 el bit 5 del STATUS. Acceso al Banco 1.
movlwb'11001' ;3 entradas y dos salida del puerto a.
movwf trisa
movlw b'11111111' ;el puerto b esta como entradas
movwf trisb
bcf status,5 ;Acceso al Banco 0.
bcf porta,1 ;paro el motor hacia abajo
bcf porta,2 ;paro el motor hacia arriba
principio nop
call pulsadores ;compueba si hay algun pulsador dado, asicomo la posicion
;de la cabina
cs call coincide ;aqui para el motor si la cabina coincide con la llamada y
;espera 5 seg chequeando los pulsadores
call subida ;comprueba todas las combinaciones posibles para activar el
;motor en direccion ascendente
call pulsadores
btfsc porta,2 ;si el motor esta subiendo, ejecuta lasiguiente instruccion
goto cs
cb call coincide
call bajada ;comprueba todas las combinaciones posibles para activar el
;motor en direccion descendente
call pulsadores
btfsc porta,1 ;si el motor esta bajando, ejecuta la siguiente instruccion
goto cb
goto principio
subida nop
sube2 btfsc portb,1 ;si esta activada la llamada2 salta la siguientelinea
goto sube3 ;comprueba sube3
btfss portb,4 ;si la cabina esta en la 1ª planta ejecuta la
;siguiente linea
bsf porta,2 ;activa la subida
sube3 btfsc portb,0 ;si esta activada la llamada3 salta la siguiente linea
goto sube4 ;comprueba sube4
btfss portb,4 ;si la cabina esta en la 1ªplanta ejecuta la
;siguiente linea
bsf porta,2 ;activa la subida
btfss portb,5 ;si la cabina esta en la 2ª planta ejecuta la
;siguiente linea
bsf porta,2 ;activa la subida
sube4 btfsc porta,4 ;si esta activada la llamada4 salta la siguiente linea
goto sube5 ;comprueba sube5btfss portb,4 ;si la cabina esta en la 1ª planta ejecuta la
;siguiente linea
bsf porta,2 ;activa la subida
btfss portb,5 ;si la cabina esta en la 2ª planta ejecuta la
;siguiente linea
bsf porta,2 ;activa la subida
btfss portb,6 ;si la cabina esta en la 3ª planta ejecuta la;siguiente linea
bsf porta,2 ;activa la subida
sube5 btfsc porta,3 ;si esta activada la llamada5 salta la siguiente linea
goto subefin ;va al final de esta rutina
btfss portb,4 ;si la cabina esta en la 1ª planta ejecuta la
;siguiente linea
bsf porta,2 ;activa la subidabtfss portb,5 ;si la cabina esta en la 2ª planta ejecuta la
;siguiente linea
bsf porta,2 ;activa la subida
btfss portb,6 ;si la cabina esta en la 3ª planta ejecuta la
;siguiente linea
bsf porta,2 ;activa la subida
btfss portb,7 ;si la cabina esta en la 4ª planta ejecuta la...
Regístrate para leer el documento completo.