51单片机教程:独立按键中断与查询方式应用

需积分: 9 0 下载量 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资源,查询方式简单但响应速度相对较慢。根据实际应用需求,开发者可以选择合适的方法实现键盘功能。