新闻中心

EEPW首页>嵌入式系统>设计应用> 单片机中最简单实用的按键程序

单片机中最简单实用的按键程序

作者: 时间:2016-11-25 来源:网络 收藏
我想了很久才写成的这个按键程序;先讲讲我的思路,

我的思路很简单就是一般的按键不是需要去抖动延时,我想单片机够慢的了,用什么方法不要去延时,所以我就想到在定时中断中插入按键扫描程序,如果连续两个中断程序中都有按键,就可以认为有按键。

本文引用地址://m.amcfsurvey.com/article/201611/321325.htm

但是我下面的这个程序中有个缺陷,那就是没有加入去抖动的方法,为了缩短短程序的总长度,我就是没有写,这个我用在一个平时的一个小的测试部件控制程序中,去抖动没什么实际的意义,就没有写!

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)interrupt1
{
TH0 = 0x10;
TL0 = 0x00;
TR0=1;
time_count++;
key_saomiao();
if(time_count > 20)
{
LED0 = ~LED0;
time_count = 0;
}
}



评论


技术专区

关闭