Hacer un programa que controle tres leds de diferente color dependiendo el estado del contador, instalado a la entrada de un establecimiento a través de un sensor (que cuenta el # de accesos a un almacén).
Problema redactado: En un almacén de cajas necesita tener un control sobre la cantidad de cajas ingresada, por lo tanto cuando un led verde se encendida el # de cajas se encontrara en un rango de 0 a 10 cajas, y se encenderá un led amarillo cuando el rango sea de 11 a 20 cajas, pero al pasar de estos rangos un led rojo se encenderá.
Para tener una idea clara sobre el problema se desarrollo una tabla de verde que muestra la entrada y salida del sistema de control.
ENTRADA CONTEO POR SENSOR 0 0H .
… … … …
0AH 0BH . 1 3H
… … … …
1 4H .
… … … …
FFH
LED ROJO 0 .
… … … …
0 0
.
… … … …
0 1 .
… … … …
0 1 .
.
… … … …
1 .
… … … …
.
.
… … … …
.
… … … …
0
SALIDA EN HEX 0X01 0X01 0X01 0X02
0 0
… … … …
0
LED VERDE
1 0
1 0
… … … …
1
SALIDA LED AMARILLO 0
0X02 0X02 0X04 0X04 0X04
El programa en leguaje ensamblador es el siguiente: ORG Main: VERDE AMARI ROJO RANGO1 RANGO2 CONTA
; Asigna VERDE DIRECCION 10h. ; Asigna AMARI DIRECCION 11h. ; Asigna ROJO DIRECCION 12h. ; Asigna RANGO1 DIRECCION 13h. ; Asigna RANGO2 DIRECCION 14h. ; Asigna CONTA DIRECCION 15h. ; Escribe 01h en el registro W. ; Ahora mueve el contenido W a VERDE (01h) ; Escribe 02h en el registro W. ; Ahora mueve el contenido W a AMARI (02h) ; Escribe 04h en el registro W. ; Ahora mueve el contenido W a ROJO (04h) ; Escribe 0Bh en el registro W. ; Ahora mueve el contenido W a RANGO1 (0Bh) ; Escribe 14h en el registro W. ; Ahora mueve el contenido W a RANGO2 (14h) ; Escribe 00h en el registro W. ; Ahora mueve el contenido W a CONTA (00h) ; Llama a la subrutina CONFIG_PTOS
INICIO MOVF ANDLW CPFSEQ GOTO GOTO
PORTB,W 0X01 0X01 INICIO CHECAR1
; Lee el PUERTO B, y lo envía a w ; Realiza la operación lógica W and 0x01 ; Compara la operación lógica con 0x01 ; Si no es igual W a 0x01 ; Si si va a CHECAR1
INCF MOVF CPFSGT GOTO MOVFF GOTO
CONTA,1 CONTA,W RANGO1 VER1 VERDE,LATA INICIO
; Incrementa a CONTA de 1 en 1 ; Mueve el contenido de CONTA a W ; Compara si es mayor RANAGO1 que W ; Si es mayor va a VER1 ; Si no es mayor VERDE se envía a LATA ; Y regresa a INICIO
CPFSGT GOTO MOVFF GOTO
RANGO2 VER2 AMARI,LATA INICIO
; Compara si es mayor RANGO2 que W ; Si es mayor va a VER2 ; Si no es mayor AMARI se envía a LATA ; Y regresa a INICIO
; Se envía ROJO a LATA ; Y regresa a INICIO ; Configura PuertoB/entrada y el PuertoA/salida
Programa compilado en MPLAB.
Probando el programa con un una entrada en el puerto B de 0x01h que significa que el sensor no a detectado el paso de cajas. Por lo tanto no se incrementara el contador (CONTA).
Probando el programa ahora con una entrada en el puerto B de 0x00h entonces se ha interrumpido el infrarrojo del sensor detectando el paso de cajas. Se incrementara el contador (CONTA).
Y el puerto A activa el led verde 0x01h (como se mostro en la tabla de verdad).
Y el puerto A activa el led amarillo 0x02h (como se mostro en la tabla de verdad), cuando el contador (CONTA) supera 0X0A.
Y el puerto A activa el led rojo 0x04h (como se mostro en la tabla de verdad), cuando el contador (CONTA) supera 0X13.
Thank you for interesting in our services. We are a non-profit group that run this website to share documents. We need your help to maintenance this website.