天天看點

單片機序列槽通信程式的流程方案

在我們設計的早年色選機系統中,單片機程式結構采用固定周期循環的程式結構。固定循環周期是200us。

在這固定的200us時間内處理單片機外圍的各種任務,這些任務可以處理按鍵輸入、LED顯示、輸入/輸出、AD采樣、脈沖計數、異步通信UART、EEPROM讀寫等;

在這200us的循環中,實作各種中斷任務處理,這個比硬體中斷的方式對實時性有更好的管控。例如PIC系列單片機利用UART接口和PC機的232接口通信,就有時間限制。對于57600的通信波特率,就要求200us内中斷取數一次,否則就要丢數了!丢數了就出錯了!理論上,序列槽通信的收發資料緩沖區如果大于2位元組,那麼就可以間隔更長時間去取數或發數。但是,如果一個任務的處理時間超過最大時間還是會丢數!

對于最基本的PIC系列單片機,最大時鐘是20MHz,指令周期是200ns,對于200us的固定周期,一個周期内最多執行1000條指令。1000條指令可做很多事情了。進一步,當單片機的程式存儲器的空間大于1k時,可以編寫大于1k的程式,在不同的周期執行不同的程式。

循環周期的200us定時由單片機的硬體定時器來控制,每次循環的最後等待200us周期的結束,等待的過程就是查詢硬體定時器,結束後再傳回程式最上部。

可以在200us的循環周期裡查詢各種中斷,查詢是否有中斷标志是“1”,是就處理相應的事件。或者在一段固定空操作代碼中開通中斷使能,讓程式進入中斷子程式執行一些中斷處理。

(待續)

繼續閱讀