Re: [問題] 8051的中斷問題
哇! 真的是太感動了,Wolf大真是個能力強又熱心的人.跪拜Orz
這禮拜我想該來買本組合語言的書來看一下了
不然每次看板上的問題或回覆都有種天書的感覺 囧"a
不過還是很謝謝Wolf大的解答~等我買了書研究一下再回來細細品嘗~~
另外
: if(SerialISR){
: SerialISR();
: TimerISR();
: }else{
: TimerISR();
: SerialISR();
: }
以上是要寫在時間副程式嗎?
我的理解是下面的結構
void timer(void) interrupt 3
{
if(RI)
{
SerialISR();//在這寫好把SBUF fetch到一個資料陣列裡的指令
TimerISR(); //在這個副程式中執行PWM?
}
else
TimerISR();
RI=0;
TI=0;
}
最後有位版有回覆說:中斷結束會回到主程式被中斷的位置
那如果"低優先中斷的副程式"被"高優先中斷副程式"給中斷了
在"高優先中斷副程式"結束後,程式會回到"低優先中斷的副程式"繼續執行?
還是直接回到"主程式"被中斷的位置呢?
--
感謝大家~~這裡真是個學習的好地方XD
--
※ 引述《WolfLord (呆呆小狼)》之銘言:
: 人腦編譯一下嚕....用這樣的ASM替代C馬應該就不會
: 影響20K以下的PWM了吧?(@12MHZ)
: SerISR: ; void SerISR(void) interrupt SERIAL {
: jnb RI,Eserisr ;2 if(RI){
: mov A,#S ;1 S[n]=SBUF;
: add A,n ;1
: mov R1,A ;1
: mov @R1,SBUF ;2
: inc n ;1 n++;
: anl n,#0FEH ;2 if(n>2){n=0;}
: setb ok ;1 ok=1;
: Eserisr: ; }
: anl SCON,#0EFH ;2 RI=0;TI=0;
: reti ;2 }
: ;==================================================================
: ;Recived 15 Cycles Non-recived 5 Cycles
: : 2.若在串列中斷執行時間裡計時中斷被觸發了,程式執行的順序會是
: if(SerialISR){
: SerialISR();
: TimerISR();
: }else{
: TimerISR();
: SerialISR();
: }
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 175.181.142.73
推
10/08 02:51, , 1F
10/08 02:51, 1F
推
10/08 21:51, , 2F
10/08 21:51, 2F
→
10/08 21:52, , 3F
10/08 21:52, 3F
→
10/08 21:52, , 4F
10/08 21:52, 4F
→
10/08 21:53, , 5F
10/08 21:53, 5F
推
10/08 22:01, , 6F
10/08 22:01, 6F
→
10/08 22:02, , 7F
10/08 22:02, 7F
→
10/08 22:02, , 8F
10/08 22:02, 8F
→
10/08 22:03, , 9F
10/08 22:03, 9F
→
10/08 23:35, , 10F
10/08 23:35, 10F
→
10/08 23:35, , 11F
10/08 23:35, 11F
→
10/08 23:36, , 12F
10/08 23:36, 12F
→
10/09 13:51, , 13F
10/09 13:51, 13F
→
10/09 13:52, , 14F
10/09 13:52, 14F
→
10/09 13:52, , 15F
10/09 13:52, 15F
→
10/09 13:53, , 16F
10/09 13:53, 16F
推
10/09 14:00, , 17F
10/09 14:00, 17F
→
10/09 14:01, , 18F
10/09 14:01, 18F
推
10/09 23:48, , 19F
10/09 23:48, 19F
→
10/10 22:03, , 20F
10/10 22:03, 20F
討論串 (同標題文章)
ASM 近期熱門文章
PTT數位生活區 即時熱門文章