永发信息网

单片机 C语言 中断

答案:5  悬赏:50  手机版
解决时间 2021-03-26 00:23
  • 提问者网友:斑駁影
  • 2021-03-25 19:00
单片机 C语言 中断
最佳答案
  • 五星知识达人网友:一叶十三刺
  • 2021-03-25 19:12
TR0是控制T0时间中断的。TR0=1,中断开启但并不是马上中断,要等寄存器加到满后才产生中断,执行中断程序。执行完中断程序内容后返回,等待下次中断。一般不会关闭中断。如果你只执行一次中断那你就得写一句TR0=0.
全部回答
  • 1楼网友:duile
  • 2021-03-25 22:42
如果你想键盘还能用,而你的定时又没执行完,那么你可以这样设定,让键盘处于更高的中断里,也就是设置中断优先级追问如果中断函数执行完成后,TR0没有置0 中断函数会一直无限循环下去吗
  • 2楼网友:洎扰庸人
  • 2021-03-25 22:08
TR0=1代表启动定时器T0,用完后不置为0就是不断地执行中断函数,既然是定时器中断,就是一定时间中断一次,不到时间的时候就会执行主函数,所以你的键盘还是能被扫描到的。。。追问比如我在中断函数里 先载入初值 然后 变量A 递加,变量A为20时 T0溢出触发中断 才执行中断函数变量A下面的语句吗?
void zd()interrupt 1
{
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
a++;
if(a==20)
{
a=0;
deng~=deng;
}
}追答TH0=(65536-46080)/256;
TL0=(65536-46080)%256;这些时间后中断一次,然后a+1,a等于20时a清零deng取反,T0溢出和a没有关系,只和你定的时间有关。。。追问那么在T0加数期间,单片机在干什么 在执行main?追答对啊
  • 3楼网友:你哪知我潦倒为你
  • 2021-03-25 21:54
时间中断一下就好了!
中断语句发一条就好了哦!
  • 4楼网友:北方的南先生
  • 2021-03-25 20:15
主程序和中断没关系的,主程序是个死循环,一直执行。中断是打断主程序进入中断子程序,中断完成后继续执行主程序。中断标志要在进入中断后清除,如果不清除,下次不会再触发。主程序继续执行无影响。
TR0是启动定时器,启动以后不要再改写就好每到定时时间进入中断。进入中断后要清除中断使能标志,不是叫你关闭定时器。这两种不是一个概念。定时器控制寄存器里面有一个中断标志A,为1的时候代表进入中断,进入中断后A要清零,之后才会继续查看A是否再次为1,为1即进中断,在中断写零,如此循环进行。
关闭或者重新开启TR0,标志A都是硬件自动重新装载(初始化)0,以使中断执行。所以也能达到效果,但是每次执行都重新设置定时器会比较耗费资源,其实只需要清零标志位就ok了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯