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