單片機在小型自控飛艇的舵機控制系統中的重要性介紹
本文采用了中斷服務(wù)程序就地幀識別技術(shù),即省掉緩沖區,數據接收、幀識別均由中斷服務(wù)程序完成,之后在主程序的循環(huán)中完成數據的提取和處理。就地幀識別技術(shù)的實(shí)現機理如下:把中斷服務(wù)程序看作是一個(gè)處理機,串行數據逐字節到來(lái),程序先從數據序列中等到第一個(gè)幀頭,寫(xiě)入該幀的存儲數組,同時(shí)置標志位 flag1,接收狀態(tài)推進(jìn)一步;再判斷下一次中斷時(shí),來(lái)到的數據是否符合第二個(gè)幀頭的特征。如果符合則存入相應數組,并置相應的標志位flag2,接收狀態(tài)繼續推進(jìn);如果幀頭兩個(gè)字節均符合,則將后面來(lái)到的數據依次存入指定數組;根據已接收到的字節數判斷,當符合該幀的數據部分接收完畢后,判斷下一字節是否為幀尾的第一個(gè)字節,如果是則置標志位flag3;之后依據同樣的方法判斷幀尾第二個(gè)字節是否來(lái)到,如果已接收到,則置該幀數據已完整接收到標志 flag4,同時(shí)接收狀態(tài)歸零,重新開(kāi)始等待幀頭字符。在幀頭幀尾判斷期間,一旦有一項不符合要求,則將接收狀態(tài)歸零,以重新開(kāi)始等待幀頭。主程序每循環(huán)一次便對“幀完整接收到”標志進(jìn)行一次判斷,若為真則調用相應的數據提取子程序,并清flag4。
串行中斷服務(wù)程序流程如圖2所示。采用中斷服務(wù)程序就地幀識別技術(shù)的優(yōu)點(diǎn)在于數據接收后立即進(jìn)行幀識別,省去了對緩沖區的管理工作,減少了存取次數,因而節省了大量的時(shí)間,極大地提高了接收程序的實(shí)時(shí)性。同時(shí)錯幀和斷幀被自動(dòng)丟棄,不再占用資源。

圖2中各標志位含義為:
flag1——接收到幀頭Head1標志;
flag2——接收到完整幀頭標志;
flag3——接收到幀尾End1標志;
flag4——接收到完整幀標志。
(2)單片機多機通訊
在舵控系統設計中,各部分間的通訊是設計的重要內容,其中主要包括單片機與上位PC機間的通訊和單片機與單片機之間的通訊。在舵控系統中,主單片機1與上位PC機通訊是通過(guò)單片機自帶的一路異步串行通訊接口完成的;而主單片機1通過(guò)其P1口向主單片機2傳輸數據,這里不再贅述,重點(diǎn)介紹主單片機2如何通過(guò)其一路串口分別向下位的多個(gè)舵控單片機傳送指令。
此系統中,主單片機2作為主機,m個(gè)舵控單片機作為從機,在主機與從機的通訊過(guò)程中,串口控制寄存器中SCON中的SM2位發(fā)揮了重要作用。當其中一個(gè)舵控單片機(89C2051)的SM2位為1時(shí),該單片機只接收地址幀,對數據幀不理睬;而當SM2位為0時(shí),該單片機接收所有發(fā)來(lái)的消息。具體通信過(guò)程如下:
?、偈紫葘⒅?、從單片機工作方式選為模式3,所有從機的SM2位開(kāi)始置1,處于只接收地址幀狀態(tài)。
?、谥鳈C接收主單片機1發(fā)來(lái)的數據幀,從中提出數據部分(m個(gè)字節的指令對應m個(gè)舵控單片機),根據序號在控制指令字節前加上一個(gè)字節的地址信息。然后主機依次通過(guò)串口向下發(fā)送各舵控單片機的地址字節和數據字節。發(fā)送一幀地址信息,包含8位地址,第9位為1,表示發(fā)送的幀為地址幀。
?、蹚臋C接收地址幀后,進(jìn)入中斷,將發(fā)來(lái)的地址與自身比較;地址一致的從機就是被尋址的從機,它清除SM2位,接收主機發(fā)來(lái)的所有后續幀信息(數據信息)。未尋址的所有其他從機仍維持SM2=1,對主機發(fā)來(lái)的數據幀不理睬,直到發(fā)來(lái)新地址幀;之后在下一次中斷時(shí)被尋址的從機接收主機發(fā)來(lái)的數據信息(第9位為 0)。
需要注意的是,如果對已經(jīng)尋址的從機再發(fā)送地址幀,則該從機SM2=1,恢復初始狀態(tài),和其他從機競爭。
評論