×
嵌入式 > 技术百科 > 详情

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

发布时间:2020-06-06 发布时间:
|
我想了很久才写成的这个按键程序;先讲讲我的思路,

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

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

uchar key = 0;
uchar key0 = 0;
uchar key1 = 0;
uchar key2 = 0;
uchar key3 = 0;
uchar key4 = 0;

//以上为全局变量


void key_saomiao(void)
{
 //uchar a = 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;
 }
}

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil5(MDK5)在调试(debug)过程中遇到的问题