我想了好久才写成的这个按键程序;先讲讲我的思路,
我的思路很简单便是一般的按键不是需求去颤动延时,我想单片机够慢的了,用什么办法不要去延时,所以我就想到在守时中止中刺进按键扫描程序,假如接连两个中止程序中都有按键,就可以认为有按键。
可是我下面的这个程序中有个缺点,那便是没有参加去颤动的办法,为了缩短短程序的总长度,我便是没有写,这个我用在一个平常的一个小的测验部件控制程序中,去颤动没什么实践的含义,就没有写!
ucharkey = 0;
ucharkey0 = 0;
ucharkey1 = 0;
ucharkey2 = 0;
ucharkey3 = 0;
ucharkey4 = 0;
//以上为全局变量
voidkey_saomiao(void)
{
//uchara = 0;
P3 = P3 | 0xF0;
nop();
key0 = P3;
key0 = key0 >> 4;
key2 = key2 | (key0 ^ key1);
key1 = key0;
key = key | (key2 & key0);
key2 = key ^ key2;
}
void time0_init(void)
{
uchar a;
a = TMOD;
a = a | 0x01;
TMOD = a;
//IE = 0x82;
TH0 = 0x10;
TL0 = 0x00;
ET0 = 1;
TR0 = 1;
EA = 1;
}
void time0_int(void) interrupt 1
{
TH0 = 0x10;
TL0 = 0x00;
TR0=1;
time_count++;
key_saomiao();
if(time_count > 20)
{
LED0 = ~LED0;
time_count = 0;
}
}
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/adas/259205.html