You are on page 1of 7

ESCUELA POLITECNICA NACIO NAL SISTEMAS MICROPROCESADOS NOMBRE: Wil mer Villegas FECHA: 10 04 2012 1.

1. Realice un programa para contar objet os mediante interrupciones .

12 botellas 1 caja

1. Cuento el nmero de botellas

con un pulsante

2. Muestro en displays el nmero de caj as, usar Barrido de displays

.include" m164pdef.inc" .def .def .def .def tempo=r17 aux=r18 conta=r19 conta1=r20

.org 0x00 j mp main .org 0x02 j mp contar main: ; defino como salidas ser tempo out ddra,tempo ; defino como entrada clr tempo out ddrd,tempo ; activo pull -up ldi tempo,0b00000100 out portd,tempo ; garanti zo pull -up in tempo,mcucr

andi tempo,0b11101111 out mcucr,tempo ; declaro el stack pointer ldi tempo,hi gh(ramend) out sph,tempo ldi tempo,low(ramend) out spl,tempo ; habilito la int0 ldi tempo,0b00000001 out ei msk,tempo ;especifico como se desencadena la interrupcin como flanco de baj ada ldi tempo,0b00000010 sts EICRA,tempo ;habilitacion global de interrupciones sei clr conta clr conta1 lazo: out porta,conta1 rj mp lazo contar: push tempo

in tempo,sreg push tempo inc conta cpi conta,12 brne contador clr conta inc conta1

contador: pop tempo out sreg,tempo pop tempo reti

Lo pri mero que voy hacer es revisar si el programa me funciona con el uso de leds a la salida para luego usar una subrutina para el barrido de displays.

Como podemos ver al presionar el pulsador y llegue hasta 12 botellas en los leds a salida me va dar sol amente el nmero de caj as.

Diagrama de f lujo:

2. Programa que m uestre en un display la tecla presionada del teclado matricial 4x4 Segundo mtodo: .include" m164pdef.inc" .def .def .def .def .def .equ .equ .equ .equ .equ .equ .equ .equ tempo=r17 tecla=r18 aux=r19 dato=r20 aux1=r21 fila1=3 fila2=2 fila3=1 fila4=0 colum1=7 colum2=6 colum3=5 colum4=4 ldi tecla,12 ldi tempo,0b00001111 out ddra,tempo ldi tempo,0b11110000 out porta,tempo rebote: ldi aux,255 lazo: dec aux brne lazo sbis pina,colum1 ldi tempo,0 sbis pina,colum2 ldi tempo,1 sbis pina,colum3 ldi tempo,2 sbis pina,colum4 ldi tempo,3 add tecla,tempo add r30,tecla clr aux1 adc r31,aux lpm dato,z out portb,aux ldi tempo,0b11110000 out ddra,tempo ldi tempo,0b00001111 out porta,tempo fin:rj mp fin ret tabla: .db 1,2,3,15,4,5,6,14,7,8,9,13,10,0,11,12

.cseg ldi tempo,0b11111111 out ddrb,tempo ldi tempo,0b11110000 out ddra,tempo ldi tempo,0b00001111 out porta,tempo ldi r30,low(tabla<<1) ldi r31,hi gh(tabla<<1) sbis pina,fila1 ldi tecla,0 sbis pina,fila2 ldi tecla,4 sbis pina,fila3 ldi tecla,8 sbis pina,fila4

Primer mtodo: include" m164pdef .inc" .def tempo=r17 .def codi go=r18 .org ldi tempo,0b11110000 out ddra,tempo ldi tempo,0b11111111 out porta,tempo in tempo,mcucr andi tempo,0b11101111 out mcucr,tempo lazo: ldi tempo,0b11101111;Co out porta,tempo sbis pina,0 j mp c0f0 sbis pina,1 j mp cof1 sbis pina,2 j mp cof2 sbis pina,3 j mp cof3 ldi tempo,0b11011111;C1 out porta,tempo sbis pina,0 j mp c1f0 sbis pina,1 j mp c1f1 sbis pina,2 j mp c1f2 sbis pina,3 j mp c1f3 ldi tempo,0b10111111;C2 out porta,tempo sbis pina,0 j mp c2f0 sbis pina,1 j mp c2f1 sbis pina,2 j mp c2f2 sbis pina,3 j mp c2f3 ldi tempo,0b01111111;C3 out porta,tempo sbis pina,0 j mp c3f0 sbis pina,1 j mp c3f1 sbis pina,2 j mp c3f2 sbis pina,3 j mp c3f3 ldi codigo,0b11111111 j mp lazo c0f0:

ldi codigo,0b11101110 cpi codi go,0b11101110 breq lazo rcall retardo Diagrama de f lujo: j mp lazo

You might also like