ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Teclado numerico - lenguaje C


Enviado por   •  26 de Febrero de 2020  •  Práctica o problema  •  308 Palabras (2 Páginas)  •  172 Visitas

Página 1 de 2

#include <avr/io.h>

#include <avr/interrupt.h>

#include <util/delay.h>

#include "MyDefs.h"

#include "MyInt.h"

char obtenercolumna(char a);

char obtenerfila(char a);

int main (void)

{

char fila,columna,tecla;

char j=0,i=0;

char vector[4]={NULL,NULL,NULL,NULL};

char v=0;

char contraseña[4]={1,2,3,4};

char matriz[4][4] = { //matriz de botones

{0, 1, 2, 3} ,

{4, 5, 6, 7} ,

{8, 9, 10, 11} ,

{12, 13, 14, 15} //el 15 es ENTER

};

DDRD=0x07; //configuro portD 0, 1 y 2 en salida para los led

PORTD=0x04; //el led 0 apagado (armado), led 1 prendido (desarmado), led 2 apagado (error)

while(1)

{

DDRA=0x0F;

PORTA=0xF0;

fila=PINA;

DDRA=0xF0;

PORTA=0x0F;

columna=PINA;

tecla=~(fila|columna); // voy a tener un 1 en la fila y un 1 en la columna 10000100 fila0, columna1

if(tecla!=0){

i=obtenerfila(tecla);

j=obtenercolumna(tecla);

tecla=matriz[i][j];

if(tecla!=15) //el 15 es enter

vector[v]=tecla;

else

if(vector=contraseña)

PORTD^=0x03; //toggle leds 0 y 1

else{

PORTD&=0xFB; //led 2 on

_delay_ms(500);

PORTD|=0x04; //led 2 off

}

v++;

if(v==4)

v=0;

}

}

return 0;

}

char obtenerfila(char a)

{

char i=0,j,f=0;

j=7;

while(i=0 && j>3){

i=((a >> j) & 1);

j--;

if(i=0)

f++;

}

return f;

}

NAME CONTADOR_BCD

GREEN_LED EQU P1.0

ORG 0000h

LJMP MAIN

main:

MOV A,#0

ESPERO1:

JB P2.0,ESPERO1

loop2:

MOV P3,A

ADD A,#1

DA A

ACALL DELAY500

CJNE A,#154,loop2

CLR GREEN_LED

ACALL DELAY500

SETB GREEN_LED

ACALL DELAY500

MOV A,#0

ESPERO2:

JNB P2.0, ESPERO2

sjmp main

DELAY100:

MOV R7, #50

LOOP1: MOV R6, #250

LOOP0: DJNZ R6, LOOP0

DJNZ R7, LOOP1

RET

DELAY500:

CALL DELAY100

CALL DELAY100

CALL DELAY100

CALL DELAY100

CALL DELAY100

RET

END

char obtenercolumna(char a)

{

...

Descargar como (para miembros actualizados) txt (2 Kb) pdf (40 Kb) docx (9 Kb)
Leer 1 página más »
Disponible sólo en Clubensayos.com