Barrido de teclado_lenguaje ensambador

January 17, 2018 | Author: Darío Fernando Lema | Category: Computer Architecture, Digital Technology, Digital & Social Media, Electrical Engineering, Electronic Engineering
Share Embed Donate


Short Description

Download Barrido de teclado_lenguaje ensambador...

Description

ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

LABORATORIO DE SISTEMAS MICROPROCESADOS TRABAJO PREPARATORIO

Práctica No. 8

Tema: Barrido de Teclado

Realizado por: Darío Fernando Lema V. Grupo: GR15

Fecha de Entrega: 08 / 01 / 2016 Período: 2015-B

TEMA: BARRIDO DE TECLADO OBJETIVO:  Diseñar un circuito, y el software asociado para manejar un teclado matricial de 16 teclas en conjunto con 4 display de 7 segmentos.  Desarrollar programas en forma modular usando subrutinas. TRABAJO PREPARATORIO: 1. 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, 7, 8, 9, ENTER, BORRAR, NUEVA CLAVE y REINICIAR, las demás teclas quedan a criterio del estudiante otro_barrido: // Barrido de teclado ldi tecla, 16 ldi R16, 0b11111110 out porta, R16 sbis pina, 7 ldi tecla, 15 sbis pina, 6 ldi tecla, 3 sbis pina, 5 ldi tecla, 2 sbis pina, 4 ldi tecla, 1 ldi R16, 0b11111101 out porta, R16 sbis pina, 7 ldi tecla, 14 sbis pina, 6 ldi tecla, 6 sbis pina, 5 ldi tecla, 5 sbis pina, 4 ldi tecla, 4 ldi R16, 0b11111011 out porta, R16 sbis pina, 7

  



ldi tecla, 13 sbis pina, 6 ldi tecla, 9 sbis pina, 5 ldi tecla, 8 sbis pina, 4 ldi tecla, 7 ldi R16, 0b11110111 out porta, R16 sbis pina, 5 ldi tecla, 0 cp tecla, ante breq otro_barrido mov ante, tecla cpi tecla, 16 breq otro_barrido ldi R16, 255 retardo: dec R16 cpi R16, 0 brne retardo cpi tecla, 0x0F brne guardar_clave rjmp otro_barrido

2. Escribir un programa en assembler para un sistema de control de acceso mediante una clave de cuatro dígitos ingresada por teclado matricial. El sistema funciona de la siguiente manera: La clave está almacenada en la memoria flash. (Cada estudiante define su clave). Inicialmente los displays están apagados. Al presionar “nueva clave” el sistema permite ingresar una clave de 4 dígitos; por cada digito que se ingrese en los displays debe aaprecer una linea (-). Es decir al ingresar el primer digito aparece una línea, al presionar el segundo digito aparecen dos líneas (- -). Por ningún motivo se puede visualizar en los displays la clave ingresada. La tecla “borrar” permite borrar el último digito ingresado.

 

 



Solo una vez que se hayan ingresado los cuatro dígitos, y presionado la tecla “enter” el sistema validara la clave ingresada. Si la clave ingresada es correcta; en los displays se mostrara la palabra “BIEn” y se encenderá un led verde; si la clave es incorrecta se mostrara la palabra “IncO” y se encenderá un led rojo. La tecla “reiniciar” permite que el sistema vuelva a condiciones iniciales (led y displays apagados). Esta tecla puede ser presionada a cualquier instante. Si el usuario ingresa tres veces seguidas la clave incorrecta el sistema se bloquea, es decir no reconoce ninguna tecla (ni la tecla reiniciar), en este caso para que el sistema funcione nuevamente es necesario resetear el microcontrolador. Las teclas sobrantes pueden ser utilizadas a criterio del estudiante en caso de ser necesario. .include “m164pdef” .def tecla=R17 .def ante=R18 .def cont=R21 .def cont_inco=R24 .dseg dig1: .byte dig2: .byte dig3: .byte dig4: .byte

1 2 3 4

.cseg .org 0x00 //Inicializacion de puertos ldi R16, 0b00001111 out ddra, R16 ldi R16, 0b11111111 out ddrb, R16 out ddrd, R16 out ddrc, R16 ldi R16, 0b11110000 out porta, R16 ldi R16, 0b00000000 out portb, R16 out portd, R16 out portc, R16 //Garantizar resistencias pull-up in R16, mcucr andi R16, 0b11101111 out mcucr, R16 //Variables globales ldi cont, 4 ldi R22, 0b11110000 ////// Inicio del programa ////// inicio: ldi R16, 0b00000000 out portd, R16 ldi R16, 0b11111110 //A = Clave nueva

out porta, R16 sbic pina, 7 rjmp inicio rjmp Nueva_clave barrido_linea: rol R22 ldi R23, 0b10111111 out portb, R23 out portd, R22 dec cont cpi cont, 0 brne otro_barrido ret Nueva_clave: ldi cont,4 ldi R22, 0b11110000 ldi R16, 0b00000000 out portc, R16 ldi tecla, 16 ldi xl, LOW(dig1) ldi xh, HIGH(dig1) ldi ante, 16 otro_barrido: // Barrido de teclado ldi tecla, 16 ldi R16, 0b11111110 out porta, R16 sbis pina, 7 ldi tecla, 15 sbis pina, 6 ldi tecla, 3 sbis pina, 5 ldi tecla, 2 sbis pina, 4 ldi tecla, 1 ldi R16, 0b11111101 out porta, R16 sbis pina, 7 ldi tecla, 14 sbis pina, 6 ldi tecla, 6 sbis pina, 5 ldi tecla, 5 sbis pina, 4 ldi tecla, 4

ldi R16, 0b11111011 out porta, R16 sbis pina, 7 ldi tecla, 13 sbis pina, 6 ldi tecla, 9 sbis pina, 5 ldi tecla, 8 sbis pina, 4 ldi tecla, 7 ldi R16, 0b11110111 out porta, R16 sbis pina, 5 ldi tecla, 0 cp tecla, ante breq otro_barrido mov ante, tecla cpi tecla, 16 breq otro_barrido ldi R16, 255 retardo: dec R16 cpi R16, 0 brne retardo cpi tecla, 0x0F brne guardar_clave rjmp otro_barrido guardar_clave: cpi tecla, 14 //Multiplicacion = enter breq enter cpi tecla, 13 //B = borrar breq borrar st x+, tecla call barrido_linea rjmp otro_barrido borrar:

ldi R16, 0 st -x, R16 ror R22 ror R22 call barrido_linea rjmp otro_barrido

enter:

ldi zl, LOW(Clave
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF