有谁能帮我看下单片机的键盘扫描程序吗?
有高手能给下面的键盘程序注释下吗,本人看的不是很懂,按键的值什么时候能给单片机啊?谢谢了
#include <reg51.h>
#include <intrins.h>
#include <absacc.h>
#define uchar unsigned char
uchar rr;
uchar k;
uchar keydata;
void key_scan(void); //键盘函数定义段;
uchar key_tab(uchar k);
void delay(void);
void key_in(uchar k);
//---------------------------------------------------------------
void main(void)
{
while(1)
{
key_scan();
}
}//---------------------------------------------------------------------------------------------
void key_scan(void)
{ uchar sccode,recode,i;
P1=0xf0;
if((P1&0xf0)!=0xf0)
{
delay();
if((P1&0xf0) !=0xf0)
{
sccode=0xfe;
for(i=0;i <4;i++)
{
P1=sccode;
if((P1&0xf0) !=0xf0)
{
recode=(P1&0xf0)|0x0f;
k=(~recode)+(~sccode);
rr=P1;
key_in(k);
break;
}
else
sccode=(sccode < <1)|0x01;
}
}
}
//do {ta=P2;}while(ta==rr);
}
void delay() //去抖动
{int a=2500;
while(--a);
}
void key_in(uchar k)
{ uchar ta;
//uchar keydata;
do {ta=P1;}while(ta==rr);
keydata=key_tab(k);
}
发表时间:2006年12月8日12:22:25