一種單片機實(shí)現的嵌入式視頻切換器
2 軟件設計
根據會(huì )議電視系統的整體要求,軟件主要由主程序和串口中斷服務(wù)子程序組成。編程時(shí)著(zhù)重考慮了以下幾方面:對整個(gè)控制器正確地初始化;對上級主控命令正確地分析、判斷、處理;對矩陣的正確更新,對數據的及時(shí)保存(主程序流程如圖4)。

2.1 主機控制命令
主機發(fā)出的控制命令有兩種。第一種是定長(cháng)的,包含8個(gè)字節(見(jiàn)圖5)。C3H是開(kāi)始字節,5AH表示結束;地址1、地址2表示控制器在整個(gè)系統中所處的位置;數據1、數據2包含了對矩陣輸入輸出更新的具體信息;優(yōu)先級代表了本次命令的優(yōu)先級別,00H級別最高;校驗字節為前6個(gè)字節之和。第二種命令是分組控制命令,長(cháng)度不定(見(jiàn)圖6),C5H 表示第二種控制命令的開(kāi)始;地址1、地址2同第一類(lèi)控制命令;數據0是本次分組命令所控制的輸出通道;數據1至數據n是本次分組中的輸入通道;校驗字節為前幾個(gè)字節之和對FFH取余;55H 表示本次命令的結束。
2.2主程序
控制器在沒(méi)收到主機發(fā)送的控制命令時(shí),會(huì )一直運行于主程序之中。主程序主要完成對系統的初始化;定時(shí)向看門(mén)狗電路發(fā)送電壓翻轉信號;對主機的控制命令發(fā)送回傳信息。
在初始化時(shí),先從存儲器中讀取信息,判斷讀出的數據是否超出了矩陣的輸入輸出范圍。若數據無(wú)誤,則按此信息(一般是上次關(guān)機時(shí)控制器的狀態(tài))初始化矩陣。若發(fā)現某一數據有誤,則按預先的約定初始化矩陣??刂破髟谙蛑鳈C返回命令之前要判斷回響標志,若標志為“1”,則調用回響主機的子程序,否則會(huì )跳過(guò)這一步,繼續向看門(mén)狗電路發(fā)送電壓翻轉信號,以示其工作正常。
2.3 串口中斷服務(wù)子程序
一旦控制器檢測到串口有數據到來(lái),就會(huì )發(fā)出中斷請求信號。單片機在執行完當前的指令后,會(huì )轉向服務(wù)子程序(流程如圖7)。在子程序內要完成對主控命令的判斷、分析、處理,完成對矩陣的更改及信息的保存等任務(wù)。中斷服務(wù)子程序也是軟件設計的核心部分與難點(diǎn)之處。在接收完主機發(fā)送的命令之后,要處理的事務(wù)有:
(1)判斷命令是否正確。這包括判斷命令是否正確;檢查命令是第一類(lèi)還是第二類(lèi)。若是第一類(lèi)命令,要檢查其起始、結束字節和校驗字節是否正確;輸入輸出是否在規定的范圍之內。若是第二類(lèi)命令,要保存分組信息,開(kāi)啟記時(shí)器。若檢查有一點(diǎn)不對,將放棄該命令,恢復現場(chǎng),退出服務(wù)子程序。
評論