| 最近在做一个项目,用的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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 在K230DBOX上实现多时段语音提示功能被打赏¥14元 | |
| 使K230DBOX实现相机持续拍照功能被打赏¥12元 | |
| 基于K230DBOX的文本管理器设计被打赏¥14元 | |
| 基于K230DBOX的彩色画板功能实现被打赏¥15元 | |
| 在K230DBOX上实现音乐播放器功能被打赏¥15元 | |
| NXP MCU系列开发板MCULink固件升级方法【VSCode】被打赏¥28元 | |
| 三分钟快速搭建NXP MCU开发环境(VSCode)被打赏¥22元 | |
| 为遥控小车巧添功能被打赏¥26元 | |
| 【S32K3XX】FlexCAN 模块配置使用被打赏¥30元 | |
| 【S32K3XX】FlexCAN RAM 资源分配整理被打赏¥25元 | |
我要赚赏金
