历史上的今天
今天是:2025年08月21日(星期四)
2021年08月21日 | 51单片机-新按键程序
2021-08-21 来源:eefocus
1.支持连按的书写
对上一讲的知识我们再补充一下支持连按的代码以此加深理解。
实验现象就是按着按键不放,那么“key=1;”出现的频率就会比不支持连按代码的时候多,所以就会有左右不断流水的现象,按键的功能代码大家自己去分析了。
#include #include #define TIMES 2000 //让流速慢一点 sbit KEY4 = P2^7; u8 KEY4_Scan() { static u8 key_up=1; static u16 times; if(key_up==0) { times++; if(times>=TIMES) { times=0; return 1; } } key_up=KEY4; return 0; } void main() { u8 key; //用来读取按键动作的返回值 u8 i=0,dir; //dir是作为切换流水方向 LED_Init(); //初始化LED硬件模块 P2=0xF7; //让K4能具备有被拉低的条件先 P0=0xFE; //先点亮LED2 while(1) { key=KEY4_Scan(); if(key==1)//执行功能代码 { i++; if(i>=15)i=1;//让i一直在1~14之间变化 if(i<8)dir=0;//向左移 if(dir==0)P0=~(0x01< if(i>=8)dir=1;//向右移 if(dir==1)P0=~( 0x80>>(i-7) );//当i大于等于8之后,(i-7)其实也还是在1~7之间变化 } } } 2.常用按键 之前我们讲解了很多按键处理功能的代码,一步步地深入了解了硬件与软件的结合,然而我们举例过的这些按键例程都不算完美,我们参考了正点原子团队开发的按键代码,发现他们执行的效率更高。又因为初学者还没有足够能力去理解人家团队书写的代码,所以笔者才一步步地讲解前面的代码来为此次的最终按键程序打下基础。 考虑到我们最常用的按键是K4,K8,K12,K16 所以只有P2.7输出低电平之后,对应的4个按键的IO端口才有被拉低的条件。 也就是说,按键的初始化函数我们规定这样写 void KEY_Init() { P2=0X7F;//让P2.7输出低电平,其他IO端口输出高电平,这样就可以使能4个按键了 } 由于篇幅有限,我们下一讲再细说最终的按键程序。
上一篇:51单片机-带返回值的函数
下一篇:51单片机-最终按键程序
史海拾趣
|
现代汽车中的半导体技术和产品正在迅猛增加,消费者对附加功能的需求正将汽车从一个以电气系统为辅的机械系统,变成一个没有电子系统就无法正常运行的机电系统。这一发展趋势刺激了市场对优质、强大并具有成本效益的硅解决方案的需求。 ...… 查看全部问答> |
|
双激式开关电源变压器伏秒容量与初级线圈匝数的计算开关电源原理与设计(连载54) 2-1-1-5.双激式开关电源变压器伏秒容量与初级线圈匝数的计算 在图2-7中,对于双激式开关电源变压器,每输入一个交流脉冲电压,除了第一个输入脉冲的磁通密度变化范围是从0到最大值Bm以外,其余输入脉冲,磁通密度的变化范围都是从负的最大值-Bm到 ...… 查看全部问答> |
|
Thank you!现在到我的时间了,很多名师大腕都介绍过了,现在到我了,我是谁呢?自我介绍一下,我是嵌入式领域业内的非著名讲师,名字叫蒙洋,跟蒙牛就差一个字,网络上人称牛牛猛就是我了!别看我岁数小,其实我总结了: 嵌入式开发其实可简单 ...… 查看全部问答> |
|
我们买了个三星2410的一体机,分核心板和底层板 我自己做了个低层板,插上核心板,只有电源指示灯亮,系统启动指示灯不亮 我量了电压时3.278v和1.804v 检查了连接线路没问题啊 可是系统启动不了 请指教 谢谢了… 查看全部问答> |
|
请教各位大虾: 在WinCE6.0 的用户态驱动中如何映射物理地址? 对于下面的这样一段代码, 如果这个驱动是被运行在用户态, 输出的vpReg为0. 哪位知道该如何映射物理地址, 请不吝赐教. DWORD HDR_Init(LPCTSTR pContext, LPCVOID lpvBus ...… 查看全部问答> |
|
VxWorks下实现了RPC Server,我在WINDOWS的PC上怎么访问? 我的设备上跑的是VxWorks,上面实现了一个RPC服务器,文档里面说是遵循SUN 的RPC规范(RFC1057),现在我在Windows平台下需要访问这个RPC服务器,这个要怎么做?… 查看全部问答> |




