Keypad & ATmega16

K

k1_zav

Guest
Hej der.
Jeg har et problem.
Jeg ønsker at interface en Atmega 16 til et tastatur, der har 12 nøgler.
Jeg bruger eksterne afbryde for anerkendelse af kolonner.
Assum Jeg vil arbejde med den tredje kolonne.Når jeg trykker'3 'Jeg fik 3.
men når jeg trykker'6 'eller'9' Jeg fik mange 6 eller 9.

Do you know what's
the problem.
Af den måde jeg bruger Codevision AVR som C-compiler, og dette er interrupt service rutine:# define row1 PORTB.4
# define row2 PORTB.5
# define row3 PORTB.6
# define row4 PORTB.7

bit row_recognition;
usignerede CHAR temp;"/ / Eksterne Interrupt 0 tjeneste rutinemæssige
interrupt [EXT_INT0] void ext_int0_isr (void)
(
/ / Kolonne 3

# ASM ( "cli")row1 = 0;
row2 = 1;
row3 = 1;
row4 = 1;
delay_ms (1);

row_recognition = PIND.2;

if (! row_recognition)
(
temp ='3 ';
lcd_putchar (temp);
temp = 0;

)
anden
(
row1 = 1;
row2 = 0;
row3 = 1;
row4 = 1;

delay_ms (1);
row_recognition = PIND.2;

if (! row_recognition)
(
temp ='6 ';

lcd_putchar (temp);
temp = 0;

)
anden
(
row1 = 1;
row2 = 1;
row3 = 0;
row4 = 1;

delay_ms (1);
row_recognition = PIND.2;
if (! row_recognition)
(
temp ='9 ';
lcd_putchar (temp);
temp = 0;
)
andet / / if (row_recognition)
(
temp ='#';
lcd_putchar (temp);
temp = 0;
);
);
);
delay_ms (5);
row1 = 0;
row2 = 0;
row3 = 0;
row4 = 0;

lcd_putchar ( 'X');# ASM ( "sei")
) "

Så Er der nogen vide, hvad er problemet?
Tak.

 
Jeg fik det.
Dens grund af interrupt flag.

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />
 
Hej k1_zav
Nu arbejder også med tastatur og atmega16.can du indsætte dit arbejder kildekoden, så jeg kan se, hvordan du har løst problemet

hilsen

 

Welcome to EDABoard.com

Sponsor

Back
Top