今天早上臨時起意想說來研究一下 Software 的 UART,結果下午就測試成功了。UART 是一種 8051 用來跟外界通訊的介面,通常一顆 MCU 裡面只有配置 1~2 組(大部分都是一組)。因此,如果您已經使用其中一組來與PC 端通訊的話,您就無法跟其他微電腦進行通訊了。軟體模擬 UART 的概念很簡單,就只是利用 Carriage Flag 來進行並列轉串列傳送資料。今天的整合中,最困難的一點就是將 Assembly(A51) 跟 Keil C51 進行結合。事實上,同時使用 C 及 Assembly 並沒有想像中困難,但是如果要自己寫 Assembly 函式並且在 C 裡面使用的話,對於記憶體備份要特別小心。
今天另外找到了這個禮拜遇到的一個大 BUG,就是在 ADC 讀取時會發生某特定位元出錯的問題。後來只利用了一個簡單的 loop_delay() 就解決了。原因是 DATA signal 比 Sweep signal 相位落後一點點所造成。MCU 接收到 Sweep signal 後,準備要接收時,DATA signal 才剛好處於 Rising edge 此時進行訊號擷取容易造成誤判。下圖就是我把示波器當做數位邏輯器的照片(DATA signal)
沒有留言:
張貼留言