求51单片机,io口按键防抖,中间插入一个时间,按键扫描的程序。

求51单片机,io口按键防抖,中间插入一个时间,按键扫描的程序。,第1张

#include “reg51h”

sbit KEY1=P3^3; //定义按键输入端口

sbit KEY2=P3^4; //定义按键输入端口

sbit LED=P1^2; //定义led输出端口

/------------------------------------------------

uS延时函数,含有输入参数 unsigned char t,无返回值

unsigned char 是定义无符号字符变量,其值的范围是

0~255 这里使用晶振12M,精确延时请使用汇编,大致延时

长度如下 T=tx2+5 uS

------------------------------------------------/

void DelayUs2x(unsigned char t)

{

while(--t);

}

/------------------------------------------------

mS延时函数,含有输入参数 unsigned char t,无返回值

unsigned char 是定义无符号字符变量,其值的范围是

0~255 这里使用晶振12M,精确延时请使用汇编

------------------------------------------------/

void DelayMs(unsigned char t)

{

while(t--)

{

//大致延时1mS

DelayUs2x(245);

DelayUs2x(245);

}

}

void main()

{

while(1)

{

if(!KEY1)

{

DelayMs(10); //延时去抖,一般10-20ms

if(!KEY1) //再次确认按键是否按下,没有按下则退出

{

while(!KEY1);//如果确认按下按键等待按键释放,没有释放则一直等待

LED = 0; //亮

}

}

if(!KEY2)

{

DelayMs(10); //延时去抖,一般10-20ms

if(!KEY2) //再次确认按键是否按下,没有按下则退出

{

while(!KEY2);//如果确认按下按键等待按键释放,没有释放则一直等待

LED = 1; //灭

}

}

}

}

一般的控制灯都对应rom中某个内存地址的一个位,假如是裸机的话,收到一个按键信号后,将对应的位取反就可以了;假如是跑系统的,那就得写驱动,驱动的内容也是当接收到按键信号时,将灯对应的位取反。

以上就是关于求51单片机,io口按键防抖,中间插入一个时间,按键扫描的程序。全部的内容,包括:求51单片机,io口按键防抖,中间插入一个时间,按键扫描的程序。、如何写用按键扫描控制灯亮的程序(按一下灯亮,再按一下灯灭,用C语言编写)、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/zz/10168861.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存