| 最近在做一个项目,用的51单片机,很久没用51单片机了,一用就出问题了,将一个旋转编码开关的函数key_deal()放在大循环里面时,左旋和右旋都能在显示屏上正常显示,按键按一下,显示数字加1,显示正常;但是放在中断里面调用函数时,左旋和右旋加1是正常的,但是按键按一下后,就一直加1,为什么同一个函数在大循环里面执行和在中断里面执行的结果不一样?求高手和遇到过类似问题的人帮忙解答...谢谢..还有一个,用这个void timer0() interrupt 1和这个void Timer0_isr(void) interrupt 1 using 1效果也不一样,这是为什么? |
共3条
1/1 1 跳转至页
关于在定时器中断里面调用函数的问题
只看楼主 1楼
关键词: 定时器 中断 函数
3楼
中断函数
void Timer0_isr(void) interrupt 1
{TH0=(65536-50000)/256; //重新赋值
TL0=(65536-50000)%256;
key_deal();
}
中断调用的代码
void key_deal()
{
unsigned char key;
key=GetKey();
if(key==Key_Left)
{
key_num_one++;
key=Key_off;
if(key_num_one>=10) key_num_one=0;
}
if(key==Key_Right)
{
key_num_one--;
key=Key_off;
if(key_num_one<0) key_num_one=9;
}
if(key==Key_Down)
{
key_num_two++;
key=Key_off;
}
}
共3条
1/1 1 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 基于MCP23S17的输入输出功能模块控制被打赏¥20元 | |
| 【S32K3XX】SPD 软件包使用Link文件修改被打赏¥22元 | |
| Switch-Case局部变量定义问题被打赏¥23元 | |
| 基于米尔TIAM62L开发板的串口通信及应用被打赏¥20元 | |
| PCF8574功能模块及其使用被打赏¥20元 | |
| 传感器LSM6DSO及LIS3MDL的功能检测被打赏¥18元 | |
| LPS25HB气压传感器及其检测被打赏¥18元 | |
| HTS221温湿度传感器及其检测被打赏¥18元 | |
| 【S32K3XX】HSE FW 版本更新被打赏¥21元 | |
| 基于ArduinoUNO开发板的AT24C02读写测试被打赏¥16元 | |
我要赚赏金
