單片機軟件的設計_第1頁
單片機軟件的設計_第2頁
單片機軟件的設計_第3頁
單片機軟件的設計_第4頁
單片機軟件的設計_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、單片機軟件設計講座內(nèi)容l一、背景和目標l二、資源的分配l三、程序規(guī)劃l四、狀態(tài)遷移圖l五、消息驅(qū)動的實現(xiàn)方法l六、隊列的使用l七、位處理技術的使用一、講座背景l(fā)背景:l大家設計軟件還缺乏實戰(zhàn)經(jīng)驗;l軟件設計的結(jié)構(gòu)不鮮明,缺乏條例;l目標:l增強軟件的可讀性;l使軟件的結(jié)構(gòu)清晰,易于故障定位;l規(guī)范軟件設計的流程;二、資源分配l內(nèi)存分配l全局或局部變量(30h-7fh);l堆棧(52中,可將SP設為0 x7f,實際占用0 x80-0 xff);l標志位(一般設在0 x20-0 x2f的可位尋址區(qū)域)l較小的Buffer;lI/O分配l操作頻繁的可利用直接的I/O端口,不太頻繁的可使用擴展的I/O

2、;l外部RAM分配l數(shù)據(jù)表l較大的Buffer三、程序規(guī)劃l數(shù)據(jù)結(jié)構(gòu)l數(shù)據(jù)結(jié)構(gòu)的種類:線性表 、棧和隊列 l軟件中常用的數(shù)據(jù)表格 :消息隊列,用戶表(設備表),緩沖區(qū),堆棧,狀態(tài)表。l程序結(jié)構(gòu) l周期級軟件 l基本級軟件l系統(tǒng)級軟件 3-1 數(shù)據(jù)結(jié)構(gòu)的規(guī)劃l程序設計中,會涉及大量數(shù)據(jù),不少數(shù)據(jù)的值在不斷變化,有些則比較固定。這些數(shù)據(jù)是系統(tǒng)運行中不可缺少的紀錄和數(shù)據(jù)。l各種數(shù)據(jù)的存放和組織形式,也就是所謂的數(shù)據(jù)結(jié)構(gòu),與程序設計由密切的關系,直接影響到程序的有效性、清晰性和復雜性 3-1-1 數(shù)據(jù)表中常量的規(guī)劃l端口類型表在軟件設計時,首先要對各種端口進行分類,確定每個端口的設備號,同時規(guī)定每個端

3、口的收發(fā)號類型,以及用戶號等等。l用戶狀態(tài)表用戶端口可能會處于各種不同的狀態(tài)。依據(jù)不同信息的輸入,用戶狀態(tài)可能發(fā)生遷移,即從一個現(xiàn)有的狀態(tài)轉(zhuǎn)變?yōu)榱硪粋€新的傳態(tài)。所以,在程序設計的一開始就要對用戶可能出現(xiàn)的各種狀態(tài)進行分析、歸納,總結(jié)所有可能的用戶狀態(tài) 。數(shù)據(jù)表中常量的規(guī)劃數(shù)據(jù)表中常量的規(guī)劃-2l用戶端口類型表 設備號端口名稱收發(fā)號類型用戶號備注(類型)0數(shù)字音頻1FSK100-199用戶(1)1數(shù)字音頻2FSK200-299用戶(1)2數(shù)字音頻3FSK300-399用戶(1)3數(shù)字音頻4FSK400-499用戶(1)4外部電臺1FSK500-599用戶(2)5外部電臺2FSK600-699用戶

4、(2)67監(jiān)聽喇叭PC鍵盤/鼠標監(jiān)聽(5)8有線用戶1PLUS/DTMF808用戶(3)9有線用戶2PLUS/DTMF809用戶(3)10模擬中繼1DTMF010中繼(6,7)11模擬中繼2DTMF011中繼(6,7)12話筒組1PC鍵盤/鼠標912話務員(4)13話筒組2PC鍵盤/鼠標913話務員(4)l用戶狀態(tài)表 十進制表示十六進制表示狀態(tài)十進制表示十六進制表示狀態(tài)00H空閑狀態(tài)1610H權(quán)限查詢狀態(tài)11H摘機狀態(tài)*1711H22H出局狀態(tài)*1812H33H等待掛機狀態(tài)*1913H44H阻塞狀態(tài)(無空閑鏈路)*2014H*55H*2115H66H內(nèi)線摘機狀態(tài)*2216H77H內(nèi)線收號狀態(tài)*

5、2317H88H被叫通話狀態(tài)2418H回振鈴狀態(tài)*99H2519HZG振鈴狀態(tài)*100A261AHZG呼叫振鈴狀態(tài)110B回鈴音狀態(tài)271BH轉(zhuǎn)移振鈴狀態(tài)120C主叫通話狀態(tài)*281CH*130D291DHC振鈴狀態(tài)140E振鈴狀態(tài)301EH等待應答(無線被叫)150F無線呼叫等待狀態(tài)(主叫)311FHFSK發(fā)送狀態(tài)(無線被叫)3-1-2 用戶表(設備、端口表)l軟件設計時,對于每一個用戶端口都需要規(guī)劃一個用戶表,每個用戶表占用若干存儲單元,分兩部分:l第一部分:包含了用戶的絕大部分信息,包括用戶狀態(tài)、定時、第二/三方設備號、收號指針、端口類型號、用戶號等等;l第二部分:為收號緩沖區(qū),或針對該

6、端口的一些臨時數(shù)據(jù)。l用戶表中的數(shù)據(jù)大體上可分為三類:l第一類是系統(tǒng)級程序?qū)τ脩舻呐渲脭?shù)據(jù),包括端口類型號、轉(zhuǎn)接方式、用戶號、指定分機號設備號等,這些數(shù)據(jù)除了系統(tǒng)對用戶配置外基本上是保持不變的參數(shù);l第二類是周期級程序所保存或修改的數(shù)據(jù),如:定時器、標志區(qū)、收號指針、接收號碼、中繼振鈴計數(shù)器等;l第三類是基本級程序在處理過程中所保存或修改的數(shù)據(jù),如狀態(tài)號、定時器、第二/三方設備號等。 用戶表用戶表 -1地址序號內(nèi)容初始值0狀態(tài)號001T(定時器)002第二方設備號0FFH3第三方設備號0FFH4話路號0FFH5標志區(qū)006收號指針007轉(zhuǎn)接方式(中繼)0FFH8FSK收發(fā)比特(中繼振鈴計數(shù)器)

7、009FSK收發(fā)字00A端口類型號(1,2,3,4,5,6,7)0FFHB指定分機號設備號(中繼)C轉(zhuǎn)接方式(中繼)D用戶號1E用戶號2F用戶號310H收號10FFH11h收號20FFH12h收號30FFH13h收號40FFH14h收號50FFH15h收號60FFH16h收號70FFH17h收號80FFH18h收號90FFH19h收號100FFH1AH收號110FFH1BH收號120FFH1CH收號130FFH1DH收號140FFH1EH收號150FFH1FH收號160FFH3-1-3 消息隊列l(wèi)信息輸入(周期級)程序所得到的用戶信息通過消息隊列方式傳遞給基本級程序進行處理;l是一種先進先出(

8、FIFO)的線性表;l可分為順序隊列、循環(huán)隊列和鏈形隊列,單片機種,一般采用循環(huán)隊列;l每條消息占用2字節(jié),前一字節(jié)表示消息的來源設備號;后一字節(jié)表示消息的類型或內(nèi)容消息號 消息隊列工作過程-1信息寫入指針(隊尾)信息讀出指針(隊首)地址序號內(nèi)容1設備號12信息號1設備號24信息號25設備號36信息號3。255設備號128256信息號128注: 每個信息包由兩字節(jié)組成,設備號在前,信息號在后。信息號:015:表示號碼0,1,2。9,*,#,A,B,C,D;16:表示 摘機;17:表示 掛機;18:表示 時間到;19:表示 ZG振鈴;20:表示 收到FSK,作FSK糾錯譯碼處理;21:表示 FS

9、K發(fā)送完畢,作下一步處理;22:表示 RS232收到數(shù)據(jù)包。 消息隊列工作過程-2l每當周期級程序得到一條消息就向消息隊列寫入該條消息,隊尾指針遞增2字節(jié);l基本級程序則一直在比較隊尾和隊首的指針:若兩者相等,表明沒有待處理的消息;若兩者不等,表明隊列中有未處理消息,程序?qū)㈥犑姿傅南⑷〕鲞M行處理,同時把隊首指針遞增2字節(jié),待消息處理完后再進行隊首和隊尾指針的比較,直到隊首隊尾指針相等。 3-1-4 輸出數(shù)據(jù)表l輸出數(shù)據(jù)表主要用于基本級程序向周期級程序發(fā)送的輸出控制消息;l依據(jù)輸出控制的類型不同,可將輸出數(shù)據(jù)表分為多個表。如:振鈴數(shù)據(jù)表、話路表和用戶音調(diào)表等 ;l周期級程序,周期性地監(jiān)測輸出

10、數(shù)據(jù)表的內(nèi)容,有數(shù)值變化時,對端口進行控制輸出。輸出數(shù)據(jù)表輸出數(shù)據(jù)表-1(D-RING)4Byte注: 每單元分別對應一用戶的振鈴情況#0H 表示不振鈴(初始值為#0H)#1H 表示振鈴用戶音調(diào)表(B-THL) 12BYTE注:0 無音1 忙音2 信號音3 回鈴音4 強插音5 提示語音1:“請撥分級號。6 提示語音2:“分機忙。3-1-5 3-1-5 接收接收/ /發(fā)送緩沖區(qū)發(fā)送緩沖區(qū) l一般用于一些數(shù)據(jù)收發(fā)的暫存。l如在串行通信中,可設置接收和發(fā)送兩個緩沖區(qū)(scomm_rev_buff,scomm_send_buff);l表征緩沖區(qū)的參數(shù):l緩沖區(qū)首址(常數(shù));l緩沖區(qū)長度(常數(shù));l計數(shù)

11、器(變量);l一般設為全局變量。3-2 程序結(jié)構(gòu)l周期級(信息掃描與輸出)程序:周期級(信息掃描與輸出)程序:主要用于收集系統(tǒng)來自各設備端口以及系統(tǒng)總體的信息,如:有線用戶的摘/掛機、有線用戶的撥號、中繼端口的振鈴、無線端口的FSK撥號、超時信息、RS232串口信息等等。除RS232串口信息是通過串口中斷實現(xiàn)以外,其他的信息都是在定時中斷程序內(nèi)完成的。l基本級(信息處理)程序:基本級(信息處理)程序:是系統(tǒng)中最為復雜的部分,由主程序來完成。信息的處理要依據(jù)信息本身、信息來自的設備端口以及該端口的狀態(tài)等綜多因素來進行。由于設備端口的類型各不相同,同時,每一類端口的狀態(tài)又多種多樣,所以在信息處理程

12、序設計時,必定采用狀態(tài)遷移圖的方式來進行。l系統(tǒng)級(系統(tǒng)管理維護)程序:系統(tǒng)級(系統(tǒng)管理維護)程序:由單片機和PC機聯(lián)合完成。主要實現(xiàn)用戶的權(quán)限管理,對監(jiān)聽端口及其音量的控制、強行建鏈/拆鏈的控制、人工轉(zhuǎn)接控制等等。PC機主要實現(xiàn)控制管理,單片機是具體執(zhí)行者。軟件系統(tǒng)總體結(jié)構(gòu)框圖軟件系統(tǒng)總體結(jié)構(gòu)框圖信息輸入控制輸出命令隊列消息隊列周期級程序來自端口信息對端口的控制號碼/狀態(tài)分析信息處理基本級程序用戶表、狀態(tài)表系統(tǒng)級程序串口中斷系統(tǒng)管理維護本地軟件無線電電臺控制PC機軟件PC機軟件單片機軟件單片機軟件3-2-1 周期級軟件設計 l周期級軟件用于周期地收集系統(tǒng)來自各設備端口以及系統(tǒng)本身的信息(如:

13、有線用戶的摘/掛機狀態(tài)、有線用戶的撥號、中繼端口的振鈴、無線端口的FSK撥號、定時信息等等),生成各種事件隊列供基本級軟件接收處理;l接收來自基本級軟件的命令(如:中繼占用、交換網(wǎng)絡的控制、FSK撥號輸出、信號音輸出等等),去控制相應的端口。l位處理技術周期級軟件l位處理技術例:定時中斷程序 計數(shù)器1(1.11ms定時)11T1-0T1-1FSK接收模塊FSK發(fā)送模塊模塊計數(shù)器2(10ms定時)1111111111111111T2-0T2-1T2-2T2-3T2-4T2-5T2-6T1-7DTMF收號摘掛機檢測定時器脈沖收號振鈴檢測線路音產(chǎn)生線路音控制模塊1交換網(wǎng)控制3-2-2 基本級軟件設計

14、l是系統(tǒng)中最為復雜的部分,由主程序來完成。l信息的處理要依據(jù)信息本身、信息來自的設備端口以及該端口的狀態(tài)等眾多因素來進行。l由于設備端口的類型各不相同,同時,每一類端口的狀態(tài)又多種多樣,所以在信息處理程序設計時,必定采用狀態(tài)遷移圖的方式來進行。 基本級軟件的總體流程圖基本級軟件的總體流程圖主程序開始單片機工作狀態(tài)初始化外部設備狀態(tài)初始化用戶表等的數(shù)據(jù)存儲區(qū)初始化有信息要處理?NY信息類型號?#0-#15#16#17#18#19#20#22#23#24其它 號碼分析 依據(jù)輸入的設備(端口)、設備的狀態(tài)以及輸入的號碼和被叫的狀態(tài)等,對系統(tǒng)的各端口進行控制或?qū)顟B(tài)進行修改。 摘機處理 依據(jù)端口的狀態(tài)

15、,對有線用戶的摘機操作進行不同處理,如進入摘機狀態(tài)或被叫通話狀態(tài)等。 掛機處理 依據(jù)端口的狀態(tài),對有線用戶的掛機操作進行處理,如使本設備進入空閑狀態(tài),第二方進入等待掛機狀態(tài)等。 時間到處理 針對不同的設備及該設備的狀態(tài),進行超時控制。 中繼振鈴處理 當中繼有振鈴信號來時,進行中繼呼叫處理。 無線FSK收號處理 當在無線端口接收到完整的FSK數(shù)據(jù)包時,對該數(shù)據(jù)包進行譯碼處理,同時進行呼叫或控制處理。 RS232接收處理 依據(jù)PC機來的串行數(shù)據(jù)包信號,控制模擬交換板或得到交換板的信息。 PTT有效控制 依據(jù)消息,控制相應無線端口的PTT,使其有效。 PTT無效控制 依據(jù)消息,控制相應無線端口的PT

16、T,使其無效。狀態(tài)轉(zhuǎn)移圖 l當前狀態(tài)十激勵事件新狀態(tài) 收號狀態(tài)1送空號音復原A空閑狀態(tài)0摘機A空閑0送撥號音時間到T停撥號音送忙音等待掛機狀態(tài)3合法號非法號掛機AAAA等待掛機狀態(tài)3被叫忙?送空號音A等待掛機狀態(tài)3YA送回鈴音B送振鈴B振鈴狀態(tài)N回鈴音狀態(tài)2時間到停撥號音送忙音等待掛機狀態(tài)3T摘機B接續(xù)通道通話狀態(tài)4掛機A復位B等待掛機空閑狀態(tài)0A掛機B復位A送忙音等待掛機狀態(tài)3B基本級軟件-消息驅(qū)動 主叫進程 l有線用戶主叫進程有線用戶主叫進程 l無線用戶主叫進程無線用戶主叫進程 l中繼呼入進程中繼呼入進程 l話筒組主叫進程話筒組主叫進程 被叫進程 l有線用戶被叫進程有線用戶被叫進程 l無線用戶被叫進程無線用戶被叫進程 l中繼呼出進程中繼呼出進程 l話筒組被叫進程話筒組被叫進程 號碼分析 l對于不同的用戶端口,號碼的輸入方式也不見相同:對于有線電話端口,號碼來自脈沖信號檢測或雙音多頻信號的接收;對于中繼端口,號碼來自DTMF信號接收;對于無線用戶端口,號碼來自FSK無線信令的接收;對于話筒組接口,號碼和控制信號都來自PC機的鍵盤。l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論