历史上的今天
今天是:2025年06月21日(星期六)
2018年06月21日 | AVR单片机软件按钮消抖与确认
2018-06-21 来源:eefocus

程序过程很简单,就是系统上电后LED0-LED3亮,LED4-LED7灭;当第一次按下SW8后,LED4-LED7亮,LED0-LED3灭 ,再次按下SW8后,LED0-LED3亮,LED4-LED7灭。
按钮在按下与弹起的过程中会出现一定的抖动,这有时会对应用过程产生影响,所以我想了一个办法,用switch来 判断按钮的状态。
#include
#include
char B=0,choose1=1;
void SURE_key(int Key_Num); //定义按键状态判断函数
//=============================
void delay_ms(int k)
{
int i,j;
for(i=0;i { for(j=0;j<850;j++) ; } } //============================= int main() { unsigned char i=0; DDRA=0xff; //初始化端口A全为输出 PORTA=~(0xf); //初始化端口A 0-3输出低电平;4-7输出高电平 DDRD=0x0; //初始化端口D全为输入 PORTD|=0xff; //打开上拉电阻 while(1) { SURE_key(~PIND&(1<<4)); //判断按键状态,按下弹起后B++ if(B%2==1) PORTA=(0xf); else PORTA=~(0xf); } return 0; } void SURE_key(int Key_Num) { switch(choose1) { case 1: if(Key_Num!=0) choose1=2; //按下了么? else choose1=1; break; case 2: if(Key_Num!=0) choose1=3; //按下了么? else choose1=1; break; case 3: if(Key_Num!=0) choose1=3; //按下了!松开了么? else choose1=4; break; case 4: //松开了 B++; choose1=1; break; } }
上一篇:AVR单片机驱动LCD1602
史海拾趣
|
面向未来的IC设计方案随着集成电路制造业的飞速发展,传统的设计方法越来越受到严峻的挑战。每年设计技术的进步大约滞后制造技术20%。在器件的特征线宽进入深亚微米以后,这个矛盾显得越发的突出。主要表现在系统的集成度越来越高,使得单个芯片的 ...… 查看全部问答> |
|
FROM....TO....约束关于from to 的约束是一个比较实用,也比较好用的约束。 尤其在跨时钟域处理中的应用,特别有效。 举例: 设计中有两个时钟,一个是PLL的输入,一个是PLL的输出,当设计中有数据在该两个时钟域中传递时, 又没有用到fifo隔离, ...… 查看全部问答> |
|
在workbench3.0中建立了一个downloadable Kernel Module Project(一个简单的hello world程序),在vxworks6.x simulator里面运行通过了,也显示了hello world。可是连接8548板子后,选择连接vxworks6.x target server却去下载不进去,显示错误:Po ...… 查看全部问答> |
|
【求助】“阻塞(pend)”与“挂起(suspend)”的区别? 这两个词的英文意思差不多,看孔祥营书也没搞明白这两种任务状态的区别。 google的结果不尽相同。有说阻塞是位于主存,挂起位于外存;有说阻塞占用CPU,挂起不占用CPU…… 书上说:挂起(suspend)状态主要用于调试,不会约束状态转换,仅仅约束 ...… 查看全部问答> |
|
CString str = \"D:\\\\zxh\\\\111\\\\res\\\\sa.bmp\"; HBITMAP bim = (HBITMAP)LoadImage(AfxGetInstanceHandle(), str, IMAGE_BITMAP, 0,0,0); if(bim == NULL) { DWORD errno = GetLastError(); return; } 总 ...… 查看全部问答> |
|
最近好象很多人都在问关于DFU文件的使用问题,正好我们刚研究过,给大家讲讲我们的用法。第一步,准备好要转换的文件,bmp和wav格式,ST原版的DEMO就是这两种格式,后缀改为.bin(也可不改,只是选文件类型过滤选ALL Files(*.*)).第二步 ...… 查看全部问答> |




