看板 ASM 關於我們 聯絡資訊
最近寫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
WolfLord:已經觸發UART沒有IRET以前TIMER不會觸發,同一個時間 10/05 13:43
WolfLord:TIMER跟UART一起觸發你沒設IP的話會先跑TIMER後才跑UART 10/05 13:44
lion21:s[n++] 10/05 17:59
WolfLord:不管是 S++ 還是[S++] 變成ASM一樣耗時 :P 10/05 19:00
ruemann:中斷結束後一定會回中斷點,然後再重新進下一個中斷 10/05 19:52