有帮看看吗,那个while里的可以正常运行,但是那个中断没有用,按键按下去没有反应
1
问题分析:
按键按下去没有响应,可能涉及到硬件和软件两个方面,需要从中断源、中断处理函数、按键检测等多个方面进行排查。
解决方案:
代码示例:
下面给出一个简单的按键检测例程,采用中断方式检测按键,实现了按键的消抖操作:
#include <reg52.h>
sbit KEY = P1^0; // 定义按键所在的IO口
void delay_ms(unsigned int t) // 毫秒级延时函数
{
unsigned int i, j;
for (i = 0; i < t; i++)
for (j = 0; j < 1000; j++);
}
void key_init() // 按键初始化
{
EA = 1; // 开启总中断
EX0 = 1; // 开启外部中断0
IT0 = 1; // 设置外部中断0为下降沿触发
}
void key_isr() interrupt 0 // 外部中断0中断服务程序
{
delay_ms(50); // 消抖延时
if (KEY == 0) // 判断按键是否按下
{
// 执行按键按下后的操作
}
}
void main()
{
key_init(); // 初始化按键
while (1)
{
// 执行主循环
}
}