Está en la página 1de 7

INSTITUTO POLITCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERA MECNICA Y ELCTRICA

EJEMPLO 4 SEMAFORO
Escalona Javier Col. Lindavista. C.P. 07338, Mxico D.F.

Ejercicio:

Hacer un programa que controle tres leds de diferente color dependiendo el estado del contador, instalado a la entrada de un establecimiento a travs de un sensor (que cuenta el # de accesos a un almacn).

Problema redactado: En un almacn 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 00H . 0 AH 0BH . 13H 14H . FFH

LED ROJO 0 . 0 0 . 0 1 . 1

SALIDA LED AMARILLO 0 . 0 1 . 1 0 . 0

LED VERDE 1 . 1 0 . 0 0 . 0

SALIDA EN HEX 0X01 0X01 0X01 0X02 0X02 0X02 0X04 0X04 0X04

El programa en leguaje ensamblador es el siguiente:


ORG Main: VERDE AMARI ROJO RANGO1 RANGO2 CONTA 0x1000 EQU 0X10 EQU 0X11 EQU 0X12 EQU 0X13 EQU 0X14 EQU 0X15 MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF CALL MOVF ANDLW CPFSEQ GOTO GOTO CHECAR1 INCF MOVF CPFSGT GOTO MOVFF GOTO VER1 CPFSGT GOTO MOVFF GOTO VER2 MOVFF ROJO,LATA GOTO INICIO CONFIG_PTOS MOVLW MOVWF MOVLW MOVWF CLRF MOVLW MOVWF RETURN END 0x0F ADCON1 0x07 CMCON TRISA 0x01 TRISB ; Se enva ROJO a LATA ; Y regresa a INICIO ; Configura PuertoB/entrada y el PuertoA/salida RANGO2 VER2 AMARI,LATA INICIO ; Compara si es mayor RANGO2 que W ; Si es mayor va a VER2 ; Si no es mayor AMARI se enva a LATA ; Y regresa a INICIO 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 enva a LATA ; Y regresa a INICIO ; 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

0X01 VERDE 0X02 AMARI 0X04 ROJO 0X0B RANGO1 0X14 RANGO2 0X00 CONTA CONFIG_PTOS

INICIO PORTB,W 0X01 0X01 INICIO CHECAR1 ; Lee el PUERTO B, y lo enva a w ; Realiza la operacin lgica W and 0x01 ; Compara la operacin lgica con 0x01 ; Si no es igual W a 0x01 ; Si si va a CHECAR1

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.

RANGO A LA ENTRADA ( OBJETOS ) 1 - 10

LED INDICADOR

11 - 20

21 -30

CIRCUITO IMPLEMENTADO
D3 C2
22p

R8 R2 R3 220
220 220

D1 D2

U1
2 3 4 5 6 7 14 13 33 34 35 36 37 38 39 40 RA0/AN0 RC0/T1OSO/T1CKI RA1/AN1 RC1/T1OSI/CCP2/UOE RA2/AN2/VREF-/CVREF RC2/CCP1/P1A RA3/AN3/VREF+ RC4/D-/VM RA4/T0CKI/C1OUT/RCV RC5/D+/VP RA5/AN4/SS/LVDIN/C2OUT RC6/TX/CK RA6/OSC2/CLKO RC7/RX/DT/SDO OSC1/CLKI RB0/AN12/INT0/FLT0/SDI/SDA RB1/AN10/INT1/SCK/SCL RB2/AN8/INT2/VMO RB3/AN9/CCP2/VPO RB4/AN11/KBI0/CSSPP RB5/KBI1/PGM RB6/KBI2/PGC RB7/KBI3/PGD RD0/SPP0 RD1/SPP1 RD2/SPP2 RD3/SPP3 RD4/SPP4 RD5/SPP5/P1B RD6/SPP6/P1C RD7/SPP7/P1D RE0/AN5/CK1SPP RE1/AN6/CK2SPP RE2/AN7/OESPP RE3/MCLR/VPP 15 16 17 23 24 25 26

LED-GREEN

LED-YELLOW

X2
CRYSTAL LED-RED

C1

0
22p

19 20 21 22 27 28 29 30 8 9 10 1

18

R1
10k

VUSB PIC18F4550