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 + -
显示快捷键?