Prctica #: 08 Tema: UTILIZACIN DE SUBRUTINAS, BARRIDO DE TECLADO
Fecha de Realizacin: 02/ 05 /2014 da mes ao
Realizado por:
Alumno (s): Alexandra Tituaa Andrade Grupo: 7B
(Espacio Reservado) Fecha de entrega: ____ /____ /____ Calificacin: da mes ao
f.___________________ Recibido por Comentarios: _______________________________________________________________________ _
OBJETIVO:
1. DISEAR UN CIRCUITO, Y EL SOFTWARE ASOCIADO PARA MANEJAR UN TECLADO MATRICIAL DE 16 TECLAS EN CONJUNTO CON 4 DISPLAY DE 7 SEGMENTOS. EN LOS DOS CASOS SE USAR LA TCNICA DE BARRIDO. 2. DESARROLLAR PROGRAMAS EN FORMA MODULAR USANDO SUBRUTINAS.
TRABAJO PREPARATORIO:
-Se debe modificar el hardware de la prctica anterior, de manera que los datos a ser ingresados al microcontrolador no provengan de interruptores, sino de un teclado matricial. Mantener todo el hardware asociado al barrido de display. Se deben realizar las siguientes modificaciones:
-Desarrollar una subrutina que permita identificar o decodificar las teclas que se presionan en un teclado de 16 teclas. Las teclas a identificar deben ser: 0, 1, 2, 3, 4, 5, 6, 8, 9, *, =, BORRAR; las otras teclas quedarn sin funcin. El funcionamiento de esta rutina ser de la siguiente manera: conforme se vayan aplastando las teclas de nmeros, stos deben ir apareciendo el dgito menos significativo, y conforme se vayan presionando otros nmeros se van desplazando a la izquierda como en una calculadora. Solo se pueden ingresar hasta dos dgitos, es decir el mayor nmero que se puede ingresar ser el 99. Luego de ingresado el primer operando se debe presionar la tecla de multiplicacin (*) y luego el segundo operando de hasta dos dgitos (de manera similar al primer operando), luego se presiona el igual (=), y en los 4 display se debe mostrar el resultado de la operacin. Si en cualquier momento se presiona la tecla BORRAR durante el ingreso de los nmeros, el display vuelve a 0000 y se reinicia el ingreso del operando. Si se presiona BORRAR cuando se est mostrando el resultado de la operacin anterior, se muestra 0000 y se vuelve a iniciar con el ingreso del primer operando.
BARRIDO: LDI r16,0b11111111 OUT PORTC,r16 LD r16,Y+ OUT PORTA,r16 OUT PORTC,r18 CALL RET_BARRIDO SEC ROL r18 DEC r17 BRNE BARRIDO LDI r16,0b11111111 OUT PORTC,r16
POP r18 POP YL POP YH POP r17 POP r16 RET
RET_BARRIDO: LDI r16,255 RET_BARRIDO_0: NOP DEC r16 BRNE RET_BARRIDO_0 RET
CIRCUITO IMPLEMENTADO
PC6/TOSC1/PCINT22 25 PC5/TDI/PCINT21 24 PC4/TDO/PCINT20 23 PC3/TMS/PCINT19 22 PC2/TCK/PCINT18 21 PC1/SDA/PCINT17 20 PC0/SCL/PCINT16 19 AVCC 27 AREF 29 PC7/TOSC2/PCINT23 26 PA6/ADC6/PCINT6 31 PA5/ADC5/PCINT5 32 PA4/ADC4/PCINT4 33 PA3/ADC3/PCINT3 34 PA2/ADC2/PCINT2 35 PA1/ADC1/PCINT1 36 PA0/ADC0/PCINT0 37 PA7/ADC7/PCINT7 30 PB6/MISO/PCINT14 2 PB5/MOSI/PCINT13 1 PB4/SS/OC0B/PCINT12 44 PB3/AIN1/OC0A/PCINT11 43 PB2/AIN0/INT2/PCINT10 42 PB1/T1/CLKO/PCINT9 41 PB0/XCK0/T0/PCINT8 40 PB7/SCK/PCINT15 3 PD6/ICP/OC2B/PCINT30 15 PD5/OC1A/PCINT29 14 PD4/OC1B/XCK1/PCINT28 13 PD3/INT1/TXD1/PCINT27 12 PD2/INT0/RXD1/PCINT26 11 PD1/TXD0/PCINT25 10 PD0/RXD0/PCINT24 9 PD7/OC2A/PCINT31 16 RESET 4 XTAL1 8 XTAL2 7 ATMEGA164P Reset R1 1.5k R2 200 Reset C1 0.1uF A0 A1 A2 A3 A4 A5 A6 c3 c2 c1 c0 Reset A 0 A 2 A 3 c 0 c 1 A 5 A 4 A 1 A 6 A 7 c 2 c 3 U9 NOT U10 NOT U11 NOT U12 NOT 1 2 3 6 5 4 8 9 = 7 ++ C ON 0 A B C D 1 2 4 3 B0 B1 B2 B3 B4 B5 B6 B7 B 7 B 6 B 5 B 4 B0 B1 B2 B3 BIBLIOGRAFA: Set de instrucciones de AVR Manual ATMEGA164p Apuntes de clase Ing. David Pozo,2014