天天看點

《單片機序列槽通信及測控應用實戰詳解》——6.2 單片機端程式設計

本節書摘來自異步社群《單片機序列槽通信及測控應用實戰詳解》一書中的第6章,第6.2節,作者 李江全,聶晶,梁習卉子,劉新英,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

序列槽在發送資料和接收資料完成時均會引起序列槽中斷,進而使接收标志位ri和發送标志位ti置1。查詢方式和中斷方式的差別就在于cpu檢視ri和ti方式不同,以及處理資料的效率不同。

查詢方式是指通過cpu定時的查詢scon序列槽控制寄存器中的接收标志位ri和發送标志位ti來接收和發送資料。此種方式下,當序列槽發送資料或接收資料完成時,僅僅将相應的标志位置1而不會以任何形式通知主程式。主程式隻能通過定時查詢發現标志位狀态的改變,進而進行相應的處理,如标志位的清0。這種方式下資料的發送和接收是半雙工的,占用cpu時間長,工作效率低。

中斷方式是在接收和發送資料時,cpu不必連續地查詢接收标志位ri和發送标志位ti。當序列槽發送資料或接收資料完成時,cpu自動轉入中斷服務程式對接收到的資料進行處理,隻需要在中斷服務程式中通過檢視是ri還是ti來判斷資料是接收還是發送,進而跳轉至相應的處理部分。這種方式下可以實作全雙工通信,cpu可以騰出時間處理其他任務,效率高,速度快。

查詢方式通信流程:當序列槽接收到資料時,硬體系統将ri置1。在主程式中當cpu首次查詢到ri = 1時,首先判斷接收的首位元組是否為本機位址,如果不是則将接收緩沖區裡的資料清0傳回重新查詢接收;如果是則驅動繼電器動作、通過數位管顯示資料和位址,并将資料傳回給上位機;然後繼續下一次循環。

各個單片機開發闆c51程式基本相同,隻是位址不同,在常量聲明“#define”語句中展現。

将c51程式編譯生成hex檔案,然後采用stc-isp軟體将hex檔案下載下傳到單片機中。

打開“序列槽調試助手”程式(scomassistant.exe),首先設定序列槽号com1、波特率9600、校驗位none、資料位8、停止位1等參數(注意:設定的參數必須與單片機設定的一緻),選擇“十六進制顯示”和“十六進制發送”,打開序列槽。

pc通過串行口将十六進制數發送給多個單片機,驅動位址吻合的單片機繼電器動作,并在數位管顯示接收的數。單片機接收到資料後,傳回原資料給pc。

如pc發送十六進制資料“01 11”,驅動1号單片機闆繼電器1和2打開,單片機傳回十六進制資料“01 11”。如圖6-2所示。

《單片機序列槽通信及測控應用實戰詳解》——6.2 單片機端程式設計

各個單片機開發闆彙程式設計式基本相同,隻是位址不同。

将彙程式設計式編譯生成hex檔案,然後采用stc-isp軟體将hex檔案下載下傳到單片機中。

如pc發送十六進制資料“01 11”,驅動1号單片機闆繼電器1和2打開,單片機傳回十六進制資料“01 11”,如圖6-3所示。

《單片機序列槽通信及測控應用實戰詳解》——6.2 單片機端程式設計

中斷方式通信流程:當序列槽接收到資料時,硬體系統将ri置1,觸發程式進入中斷服務程式。由中斷服務程式接收序列槽資料并将其儲存至接收緩沖區。中斷服務程式首先判斷接收的首位元組是否為本機位址,如果不是則清空接收緩沖區,計數變量清0,直接退出中斷服務程式從新等待資料接收;否則繼續接收資料,計數變量c0加1。當接收完資料後,計數變量清0以便于下一次資料的接收,驅動繼電器動作并将資料傳回給上位機。然後退出中斷服務程式,在主程式中通過數位管顯示緩沖區的内容。

繼續閱讀