作者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