作者Petrucci99 (拉拉拉)
看板ASM
标题[问题] 8051的中断问题
时间Wed Oct 5 13:19:44 2011
最近写8051程式有用到两个中断
一个是外部串列中断,一个是计时中断,串列通讯会传三个8bit的资料
目前有两个疑问想请教一下版上的先进
1.串列中断接收端的程式
{
if(TI=1)
TI=0;
if(RI=1)
{
S[n]=SBUF;
n++;
if(n==2)
n=0;
ok=1;
RI=0;
}
}
在串列中断副程式中这样写会太长吗?
2.若在串列中断执行时间里计时中断被触发了,程式执行的顺序会是
i:主程式(main)=>串列中断副程式=>计时中断副程式=>回到中断的
串列中断副程式之中断位置=>回到中断的主程式之中断的位置
or
ii:主程式(main)=>串列中断副程式=>计时中断副程式=>回到中断的
主程式之中断的位置
我自己想像是(i)状况,但实际执行起来好像是(ii)的情形Orz
所以现在在进入串列中断时要把计时中断禁能,但是计时中断是拿来做PWM
把它禁能怎麽一直有莫名的concern.....Orz
感谢大家耐心看完~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 175.181.99.141
1F:推 WolfLord:已经触发UART没有IRET以前TIMER不会触发,同一个时间 10/05 13:43
2F:→ WolfLord:TIMER跟UART一起触发你没设IP的话会先跑TIMER後才跑UART 10/05 13:44
3F:推 lion21:s[n++] 10/05 17:59
4F:→ WolfLord:不管是 S++ 还是[S++] 变成ASM一样耗时 :P 10/05 19:00
5F:推 ruemann:中断结束後一定会回中断点,然後再重新进下一个中断 10/05 19:52