这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 关于在定时器中断里面调用函数的问题

共3条 1/1 1 跳转至

关于在定时器中断里面调用函数的问题

菜鸟
2014-03-11 20:28:20     打赏
最近在做一个项目,用的51单片机,很久没用51单片机了,一用就出问题了,将一个旋转编码开关的函数key_deal()放在大循环里面时,左旋和右旋都能在显示屏上正常显示,按键按一下,显示数字加1,显示正常;但是放在中断里面调用函数时,左旋和右旋加1是正常的,但是按键按一下后,就一直加1,为什么同一个函数在大循环里面执行和在中断里面执行的结果不一样?求高手和遇到过类似问题的人帮忙解答...谢谢..还有一个,用这个void timer0() interrupt 1和这个void Timer0_isr(void) interrupt 1 using 1效果也不一样,这是为什么?



关键词: 定时器     中断     函数    

高工
2014-03-12 00:50:13     打赏
2楼
楼主能把相关代码贴出来看看吗?

菜鸟
2014-03-13 09:00:36     打赏
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 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]