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