|
發布時間: 2017-8-20 10:31
正文摘要:為啥一有while循環 串口中斷就接不到數據了 只要前進 就停止不了了 只要一前進 任何操作都執行不了了 求大神幫助 完整程序代碼: #include<reg5 ... |
|
樓主:你能證明打不斷嗎?(樓主9樓問題)。 進入匯編級調試: 在中斷處設斷點,改單步運行,執行到中斷返回RETI后,看是不是回到你的程序中去了。 |
| 中斷高的,只是進去了你這程序體現不出來,程序沒寫好。 |
hkoos 發表于 2017-8-21 10:22 這樣寫當然不會跳出循環了,串口中斷是執行了,但是程序一直還在run函數的while(1)里面。。。沒有執行到case語句那里。兩種方法,把串口處理那部分語句寫進run函數while里面;或者,你把所有的轉動程序寫在一個函數里面,設置同一個變量,不要有循環,然后把這個函數放主函數while里面運行,串口命令去改變這個變量就好了。 |
oo0o_11 發表于 2017-8-20 15:49 void run(){//前進 while(1){ P1=0x7b; if(rw==0){ break; } } } case '0': rw=0;break;//停止 case '1': rw=1;run();break;//前進 我改成這樣還是不行啊 只要一執行ruin 其他的任何操作都執行不了了 |
| 中斷高 |
yzwzfyz 發表于 2017-8-21 01:12 可是打斷不了啊 |
| 如果WHILE不在一個更高級或等級的中斷服務程序中,必被串口中斷打斷。 |
oo0o_11 發表于 2017-8-20 15:49 可是怎么在外部中斷這個while啊 |
常沉 發表于 2017-8-20 13:00 可是while一循環 串口中斷里就沒法接受藍牙數據了是咋回事啊 |
yzwzfyz 發表于 2017-8-20 12:17 不是語句 是串口中斷 串口中斷好像不能中斷while循環 |