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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

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

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

4、(2)67監(jiān)聽(tīng)喇叭PC鍵盤(pán)/鼠標(biāo)監(jiān)聽(tīng)(5)8有線用戶1PLUS/DTMF808用戶(3)9有線用戶2PLUS/DTMF809用戶(3)10模擬中繼1DTMF010中繼(6,7)11模擬中繼2DTMF011中繼(6,7)12話筒組1PC鍵盤(pán)/鼠標(biāo)912話務(wù)員(4)13話筒組2PC鍵盤(pán)/鼠標(biāo)913話務(wù)員(4)l用戶狀態(tài)表 十進(jìn)制表示十六進(jìn)制表示狀態(tài)十進(jìn)制表示十六進(jìn)制表示狀態(tài)00H空閑狀態(tài)1610H權(quán)限查詢(xún)狀態(tài)11H摘機(jī)狀態(tài)*1711H22H出局狀態(tài)*1812H33H等待掛機(jī)狀態(tài)*1913H44H阻塞狀態(tài)(無(wú)空閑鏈路)*2014H*55H*2115H66H內(nèi)線摘機(jī)狀態(tài)*2216H77H內(nèi)線收號(hào)狀態(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等待應(yīng)答(無(wú)線被叫)150F無(wú)線呼叫等待狀態(tài)(主叫)311FHFSK發(fā)送狀態(tài)(無(wú)線被叫)3-1-2 用戶表(設(shè)備、端口表)l軟件設(shè)計(jì)時(shí),對(duì)于每一個(gè)用戶端口都需要規(guī)劃一個(gè)用戶表,每個(gè)用戶表占用若干存儲(chǔ)單元,分兩部分:l第一部分:包含了用戶的絕大部分信息,包括用戶狀態(tài)、定時(shí)、第二/三方設(shè)備號(hào)、收號(hào)指針、端口類(lèi)型號(hào)、用戶號(hào)等等;l第二部分:為收號(hào)緩沖區(qū),或針對(duì)該

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論