单片机最高效的按键程序(C语言
#include
#include
unsigned char
unsigned char
unsigned char
unsigned char
void
{
}
void time0_init(void)
{
}
void time0_inte(void) interrupt 1
{
//其他程序
}
void
{
}//本段程序中只实现了3个按键,由于只有按键3只,改变一些全局变量(开关量)值
int
{
//其他程序
}
return 0;
}
说明:本程序仅仅只能作为点动按键的使用,不适用于例如拨动按键类型的按键信号固定在某一固定值。
本程序中仅仅是实现的最多为8个按键的程序,并且按键信号必须直接由MCU的IO口直接采集,如果想要实现其他种类的方式,就需要升级程序了,本程序的核心地方是每个一个固定的时间调用一次key_saomiao();本文中使用的是定时器0,时长50MS。关于按键的对应问题,本文中实这样的P2的各个IO口正对应着key变量的各个位,总共8个位,刚好8个IO口,所以是最多实现8个按键,看是否有按键仅仅需要查看key变量对应为是否为“1”,为“1”则表示这个对应的按键产生了一个按键作用。这段程序的精华在于将去抖,等待按键松开的步骤用了3个变量来记住,分别是key0,key1,key2.可以说整个过程仅仅使用了5步,当然使用汇编的话不止5步,需要9步来实现,。这样看来就算加上其他的一些调用,整个程序执行的效率试试非常高的
单片机按键程 相关文章:
- 51单片机按键程序中while(!key)的作用是什么(11-30)
- 单片机中最简单实用的按键程序(11-25)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)