3 single key.c
来自「很好的51单片机仿真模板。」· C语言 代码 · 共 51 行
C
51 行
#include <reg52.h>
sbit BY1=P3^4; //定义按键的输入端 S2 键
unsigned char count; //按键计数,每按一下,count 加 1
unsigned char temp;
unsigned char a,b;
void delay10ms(void) //延时程序
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
key() //按键判断程序
{
if(BY1==0) //判断是否按下键盘,当单片机上电时所有 IO 口为高电平,
//S2 键一端接地另一端接 P3.4,所以当键被按下时 P3.4 口直接接地,此时检测
//P3.4 肯定为低电平。
{
delay10ms(); //延时,软件去抖动干扰
if(BY1==0) //再次检测确认按键按下
{
count++; //按键计数加 1
if(count==8) //计 8 次重新计数
{
count=0; //将 count 清零
}
}
while(BY1==0);//等待按键释放,如果键未释放则一直在此等待。
}
}
move() //广告灯向下移动移动函数
{
a=temp<<count; // 这三句为一个循环移位,相当于前面提到的
b=temp>>(8-count);// _crol_()函数,这里是自己写的过程,大家可对比
P1=a|b; //下。
}
main()
{
count=0; //初始化参数设置
temp=0xfe;
P1=0xff;
P1=temp;
while(1) //永远循环,扫描判断按键是否按下
{
key(); //调用按键识别函数
move(); //调用广告灯移动函数
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?