Professional Documents
Culture Documents
PREPARATORIO DE:
SISTEMAS MICROPROCESADOS
Prctica #: 07
controlador Mega 16
Tema:
(Espacio Reservado) Fecha de entrega: ____ / ____ / ____ ao mes da f. ___________________ Recibido por:
Sancin:
En la parte posterior de la matriz se encuentran 14 pines los cuales se los cuenta desde 1 en la parte inferior derecha y el numero 14 est en la parte
inferior izquierda. De todas maneras se encuentra un pequeo 1 a un lado de la matriz. 2. 3. Adquiera una matriz de 7x5 (de bajo costo). Disee un circuito decodificador con el microcontrolador MEGA16 y los circuitos que considere necesarios para manejar una matriz de leds. (tomar en cuenta la capacidad de corriente del microcontrolador para no excederla)
Escriba un programa que permita mostrar una de 6 letras que sern seleccionadas mediante un dip switch de 3 posiciones, Las letras se pueden formar con la tcnica de barrido). Cada una de las letras est almacenada como una tabla separada en la memoria FLASH y con los interruptores se selecciona cual tabla se debe mostrar en la matriz. .include "m16def.inc" .def tempo=r16 .def tempo1=r17 .def tempo2=r18 .org 0x0 ldi tempo,low(ramend) out spl,tempo ldi tempo,high(ramend) out sph,tempo ldi tempo,0b11111000 out ddra,tempo ldi tempo,0b11111111 out ddrc, tempo out ddrd,tempo denuevo: in tempo,pina lazo: cpi tempo,$00
4.
brne siga rjmp t siga: cpi tempo,$01 brne siga1 rjmp a siga1: cpi tempo,$02 brne siga2 rjmp p siga2: cpi tempo,$03 brne siga3 rjmp l siga3: cpi tempo,$04 brne siga4 rjmp o siga4: cpi tempo,$05 brne denuevo rjmp p2 salto: rjmp p t: ldi zl,low(tablat*2) ldi zh,high(tablat*2) lpm tempo,z+ out portc,tempo ldi tempo2,0b00000001 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$02 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$04 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo
ldi tempo2,$08 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$10 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$20 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$40 out portd,tempo2 rcall retardo clr tempo out portd,tempo rjmp denuevo a: ldi zl,low(tablaa*2) ldi zh,high(tablaa*2) lpm tempo,z+ out portc,tempo ldi tempo2,$01 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$02 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$04 out portd,tempo2
rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$08 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$10 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$20 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$40 out portd,tempo2 rcall retardo clr tempo out portd,tempo rjmp denuevo p: ldi zl,low(tablap*2) ldi zh,high(tablap*2) lpm tempo,z+ out portc,tempo ldi tempo2,$01 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$02 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+
out portc,tempo ldi tempo2,$04 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$08 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$10 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$20 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$40 out portd,tempo2 rcall retardo clr tempo out portd,tempo rjmp denuevo l: ldi zl,low(tablal*2) ldi zh,high(tablal*2) lpm tempo,z+ out portc,tempo ldi tempo2,$01 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$02 out portd,tempo2 rcall retardo
clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$04 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$08 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$10 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$20 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$40 out portd,tempo2 rcall retardo clr tempo out portd,tempo rjmp denuevo o: ldi zl,low(tablao*2) ldi zh,high(tablao*2) lpm tempo,z+ out portc,tempo ldi tempo2,$01 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo
ldi tempo2,$02 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$04 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$08 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$10 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$20 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$40 out portd,tempo2 rcall retardo clr tempo out portd,tempo rjmp denuevo p2: ldi zl,low(tablap2*2) ldi zh,high(tablap2*2) lpm tempo,z+ out portc,tempo ldi tempo2,$01 out portd,tempo2 rcall retardo clr tempo
out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$02 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$04 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$08 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$10 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$20 out portd,tempo2 rcall retardo clr tempo out portd,tempo lpm tempo,z+ out portc,tempo ldi tempo2,$40 out portd,tempo2 rcall retardo clr tempo out portd,tempo rjmp denuevo retardo: ldi tempo,2 ldi tempo1,50 ret1: ldi tempo1,82 ret2:
dec tempo1 brne ret2 dec tempo brne ret1 ret tablat: .db 0b00000000,0b00011011 .db 0b00011011,0b00011011 .db 0b00011011,0b00011011 .db 0b00011011,0b00011011 tablaa: .db 0b00000000,0b00001110 .db 0b00001110,0b00000000 .db 0b00001110,0b00001110 .db 0b00001110,0b00000000 tablap: .db 0b00000001,0b00001110 .db 0b00001110,0b00000001 .db 0b00001111,0b00001111 .db 0b00001111,0b00000000 tablal: .db 0b00001111,0b00001111 .db 0b00001111,0b00001111 .db 0b00001111,0b00001111 .db 0b00000000,0b00000000 tablao: .db 0b00010001,0b00001110 .db 0b00001110,0b00001110 .db 0b00001110,0b00001110 .db 0b00010001,0b00000000 tablap2: .db 0b00000001,0b00001110 .db 0b00001110,0b00000001 .db 0b00001111,0b00001111 .db 0b00001111,0b00000000 BIBLIOGRAFIA: Set de instrucciones de ATmega 16 Cuaderno de apuntes, Ing. Fernando Flores