单片机精进之路-4独立按键扫描

这段代码设计的精妙之处就在于move函数。按键延时是为了去除干扰。之前在一家单片机公司,师傅要求去干扰函数要按键按下持续的低电平计时20毫秒以上,才算按键按下。具体流程如下:

当检测到低电平时,开始启动计时器计时,当计时达到20毫秒时,判定按键按下,当不到20毫秒时,判定为干扰。使用汇编写的,逻辑还是挺复杂的。

#include <reg52.h>

sbit BY1=P3^4;       //定义按键的输入端S2键
unsigned char count; //按键计数,每按一下,count加1
unsigned char temp = 0xfe;
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)  //判断是否按下键盘
	{
		delay10ms(); //延时,软件去干扰
		if(BY1==0)   //确认按键按下
		{
			count++;     //按键计数加1
			if(count==8) //计8次重新计数
			{
				count=0;    //将count清零
			}
		}
		while(BY1==0);//按键锁定,每按一次count只加1.
	}
}

/*
count = 0
	a= 1111 1110
	b= 0000 0000
count = 1
	a= 1111 1100
	b= 0000 0001
count = 2
	a= 1111 1000
	b= 0000 0011
*/
move()         //广告灯向左移动移动函数
{
	a=temp<<count;
	b=temp>>(8-count);
	P1=a|b;
}

main()
{
	count=0;  //初始华参数设置
	temp=0xfe;
	P1=0xff;
	P1=temp;
	while(1)  //永远循环,扫描判断按键是否按下
	{
		key();    //调用按键识别函数
		move();   //调用广告灯移动函数
	}
}


相关推荐

  1. 单片机-4独立按键扫描

    2024-02-10 21:56:01       52 阅读
  2. 单片机-2led灯闪烁

    2024-02-10 21:56:01       56 阅读
  3. C++4)复合类型

    2024-02-10 21:56:01       54 阅读
  4. 51单片机-1点亮led灯

    2024-02-10 21:56:01       51 阅读
  5. 32单片机按键扫描 实现长短按

    2024-02-10 21:56:01       68 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-10 21:56:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-10 21:56:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-10 21:56:01       87 阅读
  4. Python语言-面向对象

    2024-02-10 21:56:01       96 阅读

热门阅读

  1. os模块

    2024-02-10 21:56:01       51 阅读
  2. 脑海模拟法实例场景之--日后创业篇.

    2024-02-10 21:56:01       46 阅读
  3. 蓝桥杯官网练习题(大臣的旅费)

    2024-02-10 21:56:01       53 阅读
  4. 单调队列优化DP,LeetCode1696. 跳跃游戏 VI

    2024-02-10 21:56:01       60 阅读
  5. 掌握XGBoost:特征工程与数据预处理

    2024-02-10 21:56:01       49 阅读
  6. c# 加密解密帮助类

    2024-02-10 21:56:01       51 阅读
  7. 通过神经网络模拟人类大脑的学习过程

    2024-02-10 21:56:01       55 阅读
  8. 利用python调用ChatGPT API示例

    2024-02-10 21:56:01       46 阅读