看板 ASM 關於我們 聯絡資訊
※ 引述《BlueFeel (藍色感覺)》之銘言: : 8051是用C寫的 : 寫完後測試功能 : 發現9600胞率的RS232常會出現 按下去,但終端機沒反應的情況. : 多按幾次才出現,有時又可以馬上出來.. uart是用中斷嗎?還是在main()裡面用輪詢的?用輪詢去做, 如果其他工作跑太久的確會漏資料.... : 我朋友用過之後 : 懷疑是main寫得太長,使得RS232跑很久.... ?看不懂你在說什麼...看樣子你好像是用輪詢的.... : 可能跳到別地方,以至那次沒反應 : 建議我可以在某些函式加判斷式...加快執行速度 : 不過我不太明白他說的那個指令... 判斷就是if...else、switch...case一類的,不過一開始沒規劃 好也是枉然。 : 另外... : 不太明白什麼情況那個函式前需要那個指令 : main裡頭是一些 使用者按 1 就呼叫某函式 2 又呼叫某函式.....方式 : 這樣說來, 應該都沒在使用, 等使用者按數字才動... 如果上述為真,那你朋友判斷是錯的..... -- 不要問我從哪來,我只是一個浪跡天涯的工程師.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.132.23.74
BlueFeel:輪詢的意思是.....? 03/04 23:20
BlueFeel:會不會是在說 #pragma disable, #ifndef ? 03/04 23:53
ruemann:輪詢就是開一個loop一直去檢查 03/05 00:21
ruemann:你按按鍵有加上反彈跳嗎? 03/05 00:21
BlueFeel:我是用pc keyboard的數字鍵,再用rs232傳 03/05 00:31
BlueFeel:For裡面有SBUF,check SBUF='e'就跳開 03/05 00:32
BlueFeel:RS232有用到中斷 03/05 00:33
BlueFeel:static void Serial_Port_ISR (void)interrupt 4 using 3 03/05 00:34
ruemann:你應該把RS232 RX讀到的值先存到另一個暫存器,再去判斷 03/05 00:45
ruemann:那個暫存器,而非直接去判斷SBUF,你RX到的SBUF很有可能會 03/05 00:45
ruemann:被TX的loop的寫入SBUF蓋掉,這樣就判斷不到了 03/05 00:46