Semaforo pic 18f4550

Share Embed Donate


Short Description

Descripción: programacion asm...

Description

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA

EJEMPLO 4 SEMAFORO Escalona Javier Col. Lindavista. C.P. 07338, México 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 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

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

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

; 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

CHECAR1

VER1

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 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.

RANGO A LA ENTRADA ( OBJETOS ) 1 - 10

11 - 20

21 -30

LED INDICADOR

CIRCUITO IMPLEMENTADO D3 C2 22p

R8 R2 R3 220

D1

220 220

D2

LED-GREEN

LED-YELLOW

X2 LED-RED

CRYSTAL

C1

0 22p

U1 2 3 4 5 6 7 14 13 33 34 35 36 37 38 39 40

18

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

VUSB PIC18F4550

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

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

R1 10k

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF