
#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语言编写)、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)