单片机消抖延时程序

单片机消抖延时程序,第1张

#include<reg52h>

bit KEYFlag = 1; //指示按键状态,'1'为d起态,'0'按下态

/

按键去抖

/

void KEYDelay()

{

unsigned char i = 200;

while(i--);

}

/

键翻译

/

unsigned char KEY_Tran(unsigned char Key)

{

switch(Key)

{

case 0xee: return 0; break; //根据按键编码返回对应的键值

case 0xde: return 1; break;

case 0xbe: return 2; break;

case 0x7e: return 3; break;

case 0xed: return 4; break;

case 0xdd: return 5; break;

case 0xbd: return 6; break;

case 0x7d: return 7; break;

case 0xeb: return 8; break;

case 0xdb: return 9; break;

case 0xbb: return 0;break;

case 0x7b: return 0x0b;break;

case 0xe7: return 0x0c;break;

case 0xd7: return 0x0d;break;

case 0xb7: return 0x0e;break;

case 0x77: return 0x0f;break;

default: break;

}

}

/

键扫描

/

unsigned char KEY_Scan()

{

unsigned char KEY_Value;

P2 = 0x0f;

KEY_Value = P2;

P2 = 0xf0;

KEY_Value |= P2;

return KEY_Value;

}

/

查键

/

void KEY()

{

static bit KEYFlag = 1;

static unsigned char KEYCode;

if(KEYFlag)

{

if(KEY_Scan()!=0xff)

{

KEYCode = KEY_Scan();

KEYDelay();//有按键按下延时去抖

if(KEYCode==KEY_Scan())

{

// 键号 = KEY_Tran(KEYCode);

// 此处添加功能模块

KEYFlag = 0;

}

}

}

else

{

if(KEY_Scan()==0xff)

{

KEYDelay();//按键d起延时去抖

if(KEY_Scan()==0xff)

KEYFlag = 1;

}

}

}

1、如果延时在程序中比较常用,而前后台程序在延时的过程中是无法被相应的,除非便随有中断。所以建议使用嵌入式 *** 作系统,则可满足要求。

2、IIC的控制不一定非要串口,只需要2个单片机的I/O,在程序中按照IIC的控制时序和控制字,就可以进行读写。首先要读24C02的datasheet,弄明白其控制时序后,可随意 *** 作。

我推荐一个和按键精灵类似的软件AutoHotKey,要实现你的功能它的代码可以这么写。

w::就代表按w后会执行什么

Send w代表按一下w

Sleep 500代表停500毫秒也就是半秒

Return代表执行动作完了

所以完整的代码就是下面五行

w::

Send w

Sleep 500

Send e

Return

做了一个延时事件,程序如下:

自定义事件 bool dalay(long start,long num1,bool yesno1)

//

// start为初始值,由外部变量赋值,可用做事件的执行条件

// num1为终止值,由num1-start所得差值为延时时间值。

// yesno1为循环条件,如果为1,则延时继续循环,如果为0,则停止

// value 为返回值,为事件触发条件,当value=1时,执行事件。

//

if(num1>start)

start=start+1;

bool value;

if(start==num1)

value=1;

if(yesno1==1 && start>num1)

{

value=0;start=0;

}

if(start>=num1 && yesno1==0)

value=1;

message=strfromint(start,10);

return value;

以上程序本人测试通过,请参考。

以上就是关于单片机消抖延时程序全部的内容,包括:单片机消抖延时程序、程序中延时子程序比较长,怎样确保按键能够得到及时响应、按键精灵如何实现按一个键延时触发另一个键等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9470367.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存