PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : اجرای دستور با کی پد



DIN
05-12-2014, 13:03
سلام دوستان
من برنامه زیر اجرا کردم و مدارشو بستم فقط میخوام یه تغییری توش بدم که نمیدونم چکار کنم.
#include <mega32.h>
#include <delay.h>
#asm
.equ __lcd_port=0x18
#endasm
#include <lcd.h>
#define c1 PINA.4
#define c2 PINA.5
#define c3 PINA.6
#define c4 PINA.7
flash char row[]={0xfe,0xfd,0xfb,0xf7};
flash char data_key[]={
'1','2','3','A',
'4','5','6','B',
'7','8','9','C',
'*','0','#','D'};
unsigned char ac,table;
unsigned int r;




//________________________________________
void keypad(){
lcd_gotoxy(0,1);
lcd_putsf("~");
while (1){
for (r=0;r<4;r++){
ac=4;
PORTA=row[r];
DDRA=0x0f;
if (c1==0) ac=0;
if (c2==0) ac=1;
if (c3==0) ac=2;
if (c4==0) ac=3;
if (!(ac==4)){
table=data_key[(r*4)+ac];
lcd_putchar(table);
while (c1==0){}
while (c2==0){}
while (c3==0){}
while (c4==0){}
delay_ms(50);
}
}
}
}
//_________________________________________


void main(){
PORTA=0xff;
DDRA=0x0f;
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("test keypad");
keypad();
while(1){
};
}

میخوام وقتی آخرین کلید رو زدم دستور
lcd_clear(); اجرا بشه

mrm
05-12-2014, 13:19
unsigned char keypad()
{
lcd_gotoxy(0,1);
lcd_putsf("~");
unsigned char ac,table;
while (1){
for (r=0;r<4;r++)
{
ac=4;
PORTA=row[r];
DDRA=0x0f;
if (c1==0) ac=0;
if (c2==0) ac=1;
if (c3==0) ac=2;
if (c4==0) ac=3;
if (!(ac==4))
{
table=data_key[(r*4)+ac];
return table

}
delay_ms(1);
}
}
}

if(keypad()=='*')
lcd_clear();