51单片机教程:独立按键中断与查询方式应用
需积分: 9 50 浏览量
更新于2024-07-29
收藏 1.84MB PPT 举报
"C51单片机的关键内容主要讲解了如何处理键盘输入,包括独立按键的中断服务程序和查询方式的按键检测。"
在C51单片机编程中,键盘是人机交互的重要组成部分。51系列单片机广泛应用于嵌入式系统,其键盘接口设计通常涉及到独立按键的处理。独立按键是指每个按键都有独立的I/O口线与单片机相连,这样可以避免按键冲突问题。
1. **独立按键和中断**:在提供的代码示例中,展示了如何利用外部中断(INT0和INT1)处理独立按键。通过设置TCON寄存器来选择中断触发方式(电平触发或边沿触发),并打开中断总控(EA)和相应的外部中断(EX0和EX1)。一旦按键被按下,对应的中断服务程序会被调用,例如`keypress0()`和`keypress1()`。这两个函数会根据不同的中断源(INT0和INT1)显示不同数字在数码管上。
2. **中断服务程序**:中断服务程序通常在中断发生时执行特定任务,如更新显示器、记录事件等。在本例中,当INT0(P3.2)被按下,数码管会显示0;而INT1(P3.3)被按下,则显示1。
3. **查询方式检测按键**:另一种常见的按键检测方法是查询方式。在给出的练习代码中,通过不断检查P3.2(S19)端口状态来判断按键是否被按下。为了防止按键抖动,采用了软件延时(`Delay(2)`)来确保按键稳定。如果检测到按键按下,LED0的状态会取反,即点亮或熄灭,然后等待一段时间(`Delay(50)`)再进行下一次检测。
4. **按键次数计数**:在第二个练习中,扩展了查询方式的功能,用于检测按键S19的按下次数,并在数码管LED7上显示计数值。这里使用了一个计数器,当按键被按下时,计数器加1,直到达到9后重置为0。数码管的显示由预定义的字符数组`table[]`控制,每个数字对应数组中的一个十六进制码。
5. **软件防抖**:在处理按键时,软件防抖技术是必不可少的,它通过在检测到按键变化后延迟一段时间再次确认,以消除由于机械接触不稳定造成的多次中断请求。
C51单片机处理键盘输入时,既可以采用中断服务的方式,也可以通过轮询查询。这两种方法各有优缺点,中断方式响应速度快但占用CPU资源,查询方式简单但响应速度相对较慢。根据实际应用需求,开发者可以选择合适的方法实现键盘功能。
2018-07-11 上传
2010-09-17 上传
点击了解资源详情
2010-01-03 上传
2022-06-19 上传
2012-03-08 上传
2014-11-25 上传
2013-07-31 上传
2010-07-24 上传
lucas090
- 粉丝: 0
- 资源: 10
最新资源
- MATLAB新功能:Multi-frame ViewRGB制作彩色图阴影
- XKCD Substitutions 3-crx插件:创新的网页文字替换工具
- Python实现8位等离子效果开源项目plasma.py解读
- 维护商店移动应用:基于PhoneGap的移动API应用
- Laravel-Admin的Redis Manager扩展使用教程
- Jekyll代理主题使用指南及文件结构解析
- cPanel中PHP多版本插件的安装与配置指南
- 深入探讨React和Typescript在Alias kopio游戏中的应用
- node.js OSC服务器实现:Gibber消息转换技术解析
- 体验最新升级版的mdbootstrap pro 6.1.0组件库
- 超市盘点过机系统实现与delphi应用
- Boogle: 探索 Python 编程的 Boggle 仿制品
- C++实现的Physics2D简易2D物理模拟
- 傅里叶级数在分数阶微分积分计算中的应用与实现
- Windows Phone与PhoneGap应用隔离存储文件访问方法
- iso8601-interval-recurrence:掌握ISO8601日期范围与重复间隔检查