请问谁能帮我看懂这段单片机C程序? 谢谢

void get_key(void)
{
KEY=0xfe;
if(!P14)
{
delay(200);
if(!P14)
{
while(!P14);
key[cnt_key]=tab[8];
kk=1;
}
}

if(!P15)
{
delay(200);
if(!P15)
{
while(!P15);
key[cnt_key]=tab[9];
cnt_mi++;
kk=1;
}
}
if(!P16)
{
delay(200);
if(!P16)
{
while(!P16);
key[cnt_key]=tab[10];
cnt_mi++;
kk=1;
}
}
KEY=0xfd;
if(!P14)
{
delay(200);
if(!P14)
{
while(!P14);
key[cnt_key]=tab[5];
cnt_mi++;
kk=1;
}
}

if(!P15)
{
delay(200);
if(!P15)
{
while(!P15);
key[cnt_key]=tab[6];
cnt_mi++;
kk=1;
}
}
if(!P16)
{
delay(200);
if(!P16)
{
while(!P16);
key[cnt_key]=tab[7];
cnt_mi++;
kk=1;
}
}

KEY=0xfb;
if(!P14)
{
delay(200);
if(!P14)
{
while(!P14);
key[cnt_key]=tab[2];
cnt_mi++;
kk=1;
}
}

if(!P15)
{
delay(200);
if(!P15)
{
while(!P15);
key[cnt_key]=tab[3];
cnt_mi++;
kk=1;
}
}
if(!P16)
{
delay(200);
if(!P16)
{
while(!P16);
key[cnt_key]=tab[4];
cnt_mi++;
kk=1;
}
}
if(!P17)
{
delay(200);
if(!P17)
{
while(!P17);
init_main();
}
}
}
//***********************************
//void int0_main(void) interrupt 1
//{
// TH0=0xec;
// TL0=0x78;
// f_5ms=1;
//}

//因楼主没有给出完整的程序,只给键盘扫描部分.所以有些变量不知道是干什么用的,无法得知
void get_key(void) //扫描键盘函数开始
{
KEY=0xfe;//先扫描第一行或列
if(!P14) //P14被按下?
{
delay(200);//是刚延时去消抖
if(!P14) //再次判断是否被按下?
{
while(!P14); //是,则判断是否被放开,否,刚等待.
key[cnt_key]=tab[8]; //是,则把TAB[8]赋给KEY[cnt_key]
kk=1; //kk=1
}//以下所有的分析上面分板相雷同,重复而已.
}

if(!P15)
{
delay(200);
if(!P15)
{
while(!P15);
key[cnt_key]=tab[9];
cnt_mi++;
kk=1;
}
}
if(!P16)
{
delay(200);
if(!P16)
{
while(!P16);
key[cnt_key]=tab[10];
cnt_mi++;
kk=1;
}
}
KEY=0xfd;
if(!P14)
{
delay(200);
if(!P14)
{
while(!P14);
key[cnt_key]=tab[5];
cnt_mi++;
kk=1;
}
}

if(!P15)
{
delay(200);
if(!P15)
{
while(!P15);
key[cnt_key]=tab[6];
cnt_mi++;
kk=1;
}
}
if(!P16)
{
delay(200);
if(!P16)
{
while(!P16);
key[cnt_key]=tab[7];
cnt_mi++;
kk=1;
}
}

KEY=0xfb;
if(!P14)
{
delay(200);
if(!P14)
{
while(!P14);
key[cnt_key]=tab[2];
cnt_mi++;
kk=1;
}
}

if(!P15)
{
delay(200);
if(!P15)
{
while(!P15);
key[cnt_key]=tab[3];
cnt_mi++;
kk=1;
}
}
if(!P16)
{
delay(200);
if(!P16)
{
while(!P16);
key[cnt_key]=tab[4];
cnt_mi++;
kk=1;
}
}
if(!P17)
{
delay(200);
if(!P17)
{
while(!P17);
init_main();
}
}
}
//***********************************
//void int0_main(void) interrupt 1
//{
// TH0=0xec;
// TL0=0x78;
// f_5ms=1;
//}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-05-21
你放错板块了吧?
第2个回答  2008-05-21
我建议你还是发给你微机老师试试。。。
第3个回答  2008-05-22
两分到手,哈哈。。。
第4个回答  2008-05-22
是一个键盘扫描子程序 带有延时消抖的
中断程序是一个5ms延时

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网