亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Keil與VSPD軟件仿真的智能儀表串口通信調(diào)試方法

        2010-06-22 08:18:16陽(yáng)世榮
        關(guān)鍵詞:仿真器波特率命令

        陽(yáng)世榮

        (中國(guó)艦船研究與設(shè)計(jì)中心,武漢430064)

        陽(yáng)世榮(工程師),研究方向?yàn)殡娏ο到y(tǒng)自動(dòng)化。

        引 言

        串行通信具有簡(jiǎn)單可靠、使用方便、開(kāi)發(fā)成本較低等特點(diǎn),在智能儀表行業(yè)里得到了廣泛應(yīng)用[1];特別對(duì)于數(shù)據(jù)量不是很大、實(shí)時(shí)性要求較強(qiáng)的場(chǎng)合,串口通信仍然是最好的選擇,有著良好的應(yīng)用前景。隨著單片機(jī)在智能儀表 中 的 廣 泛 應(yīng) 用[2],其 串 口 (UART,Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)接口)編程成為單片機(jī)智能儀表系統(tǒng)開(kāi)發(fā)的重要內(nèi)容。串口通信程序的傳統(tǒng)調(diào)試方式,往往需要利用專用的單片機(jī)硬件仿真器和調(diào)試計(jì)算機(jī)。在編寫(xiě)好程序后,利用仿真器來(lái)設(shè)置斷點(diǎn),觀察變量和程序的流程,由仿真器和上位機(jī)進(jìn)行串口通信,逐步對(duì)程序進(jìn)行調(diào)試及修正錯(cuò)誤。

        傳統(tǒng)調(diào)試方法對(duì)硬件仿真器依賴性較強(qiáng),但是很多仿真器不能做到完全硬件仿真,因而可能造成仿真時(shí)正常,而實(shí)際運(yùn)行時(shí)出現(xiàn)錯(cuò)誤的情況,或者造成仿真不能通過(guò),但是實(shí)際運(yùn)行正常的情況;當(dāng)單片機(jī)芯片型號(hào)發(fā)生較大變化時(shí),需要配置新的仿真器,增加了資金投入。另外,傳統(tǒng)的調(diào)試方法要求調(diào)試計(jì)算機(jī)具備串行通信口,而現(xiàn)在很多新型計(jì)算機(jī),尤其是筆記本電腦,并不提供串行通信接口,往往需要另外配置串口轉(zhuǎn)換模塊。因此,傳統(tǒng)的串口通信調(diào)試方式,對(duì)調(diào)試工具有較多的硬件方面要求,給串口編程的調(diào)試仿真以及現(xiàn)場(chǎng)維護(hù)帶來(lái)不便。

        本文介紹了一種串口通信程序調(diào)試方法,能夠在單臺(tái)計(jì)算機(jī)上實(shí)現(xiàn)串口通信程序的純軟件仿真調(diào)試,既不需要硬件仿真器,又對(duì)計(jì)算機(jī)的串行通信接口無(wú)任何要求,給串口編程的調(diào)試仿真帶來(lái)極大方便。

        1 基本流程介紹

        本調(diào)試方法無(wú)需任何硬件仿真器以及用戶電路板,對(duì)調(diào)試計(jì)算機(jī)也無(wú)串行通信接口要求。在軟件方面,只需準(zhǔn)備虛擬串口軟件VSPD、Keil以及串口通信客戶端軟件(如串口調(diào)試助手等)。

        其中,Keil是眾多單片機(jī)應(yīng)用開(kāi)發(fā)軟件中最優(yōu)秀的軟件之一,支持幾乎所有MCS51架構(gòu)的芯片,并且集編輯、編譯、仿真等多項(xiàng)功能于一體,同時(shí)支持匯編語(yǔ)言和C語(yǔ)言程序設(shè)計(jì)[3]。Keil的軟件界面十分友好,易學(xué)易用,因此廣泛應(yīng)用于單片機(jī)系統(tǒng)的程序調(diào)試和軟件仿真中。

        虛擬串口驅(qū)動(dòng)程序(Virtual Serial Ports Driver,VSPD)能夠創(chuàng)建數(shù)對(duì)“虛擬”的串行端口,每對(duì)串口虛擬互聯(lián)[4],在一般程序看來(lái),這些“虛擬”的串行端口跟實(shí)體的串行端口完全一致,因此,在單臺(tái)計(jì)算機(jī)上運(yùn)行VSPD即可達(dá)到串口擴(kuò)展的目的。

        本調(diào)試方法的基本流程如下:

        ① 運(yùn)行VSPD實(shí)現(xiàn)計(jì)算機(jī)串口的擴(kuò)展和互聯(lián);

        ② 在Keil中運(yùn)行通信程序,對(duì)單片機(jī)的UART進(jìn)行仿真,并將之與計(jì)算機(jī)的某一個(gè)虛擬串口綁定,即用計(jì)算機(jī)的串口來(lái)模擬單片機(jī)的UART;

        ③ 打開(kāi)串口調(diào)試助手,選擇與②中互聯(lián)的虛擬串口,進(jìn)行數(shù)據(jù)收發(fā)從而實(shí)現(xiàn)通信調(diào)試。

        2 調(diào)試命令及步驟

        2.1 調(diào)試命令介紹

        本文介紹的串口調(diào)試方法應(yīng)用了Keil的串口仿真功能,即在應(yīng)用Keil軟件進(jìn)行通信程序調(diào)試時(shí),可利用計(jì)算機(jī)的串口來(lái)模擬單片機(jī)的串口。進(jìn)行仿真時(shí),Keil需要使用的2個(gè)命令為:ASSⅠGN和MODE。

        2.1.1ASSIGN命令

        該命令的功能為將單片機(jī)的串口綁定到計(jì)算機(jī)的串口,其語(yǔ)法格式為:

        其中,channel代表計(jì)算機(jī)的串口,可以是COM1、COM2、COM3或COM4等;而inreg和outreg代表單片機(jī)的串口。對(duì)于只有1個(gè)串口的普通單片機(jī),即為SⅠN和SOUT;對(duì)于有2個(gè)或者多個(gè)串口的單片機(jī),即為SnⅠN和SnOUT(其中,n=0,1,…,為單片機(jī)的串口號(hào))。例如:

        即為將計(jì)算機(jī)的串口1綁定到單片機(jī)的串口(針對(duì)只有1個(gè)串口的單片機(jī))。

        即為將計(jì)算機(jī)的串口2綁定到單片機(jī)的串口0(針對(duì)有多個(gè)串口的單片機(jī),需要注意串口號(hào)的書(shū)寫(xiě)位置)。需要注意的是,在命令行中,<inreg>參數(shù)的括號(hào)是不能省略的,而outreg則是沒(méi)有括號(hào)的。

        2.1.2MODE命令

        該命令的功能為設(shè)置被綁定計(jì)算機(jī)串口的通信參數(shù),其語(yǔ)法格式為:

        其中,COMx(x=1,2,…)代表計(jì)算機(jī)的串口號(hào);baudrate代表串口的波特率;parity代表校驗(yàn)方式;databits代表數(shù)據(jù)位長(zhǎng)度;stopbits代表停止位長(zhǎng)度。例如:

        MODE COM1 9600,n,8,1

        即為設(shè)置串口1,波特率為9 600,無(wú)校驗(yàn)位,8位數(shù)據(jù),1位停止位。

        即為設(shè)置串口2,波特率為19 200,奇校驗(yàn),8位數(shù)據(jù),1位停止位。

        在Keil的調(diào)試環(huán)境下運(yùn)行以上2個(gè)命令,就能夠?qū)⒂?jì)算機(jī)的串口模擬成單片機(jī)的串口了。需要注意的是,這兩個(gè)命令必須一起使用。

        輸入上述命令后,然后在Keil的調(diào)試環(huán)境下運(yùn)行單片機(jī)通信程序,通信程序發(fā)送到單片機(jī)串口上的數(shù)據(jù)會(huì)通過(guò)被綁定的計(jì)算機(jī)串口發(fā)送出來(lái),其他通信客戶端軟件(如串口調(diào)試助手)通過(guò)訪問(wèn)計(jì)算機(jī)串口即可接收到數(shù)據(jù);另一方面,所有發(fā)送到被綁定的計(jì)算機(jī)串口上的數(shù)據(jù)都會(huì)轉(zhuǎn)發(fā)到Keil模擬的單片機(jī)串口上,由單片機(jī)通信程序接收。利用這個(gè)特點(diǎn),就可以十分方便地仿真、調(diào)試單片機(jī)的串口通信程序。

        2.2 調(diào)試具體步驟

        首先,運(yùn)行VSPD,其軟件界面如圖1所示。在圖1右邊Control Panel面板上,選擇2個(gè)串口號(hào),然后點(diǎn)擊“Add pair”按鈕。此時(shí),在圖1左邊的System Explorer顯示區(qū)的Virtual ports下即出現(xiàn)2個(gè)已經(jīng)互聯(lián)好的虛擬串口。例如,在圖1中設(shè)置的2個(gè)互聯(lián)虛擬串口為COM3和COM4。需要說(shuō)明的是,圖1中Physical ports下的COM1為計(jì)算機(jī)實(shí)際的物理串行接口。

        其次,在Keil中編寫(xiě)單片機(jī)串口通信程序,并編譯通過(guò),串口的設(shè)置參數(shù)示例:波特率9 600,無(wú)校驗(yàn)位,8位數(shù)據(jù)位,1位停止位。接下來(lái),需要設(shè)置Keil的Project項(xiàng)目的相關(guān)參數(shù)。為了正確地仿真串口通信情況,在Keil中必須設(shè)置實(shí)際使用的晶振頻率,這個(gè)參數(shù)十分重要,直接影響串口通信的波特率。點(diǎn)擊Keil工具欄的Project項(xiàng),在下拉菜單中選擇Options for Target,打開(kāi)的設(shè)置界面如圖2所示。在圖2上方的標(biāo)題欄中選擇Target,在Xtal(MHZ)欄中填寫(xiě)單片機(jī)實(shí)際使用的波特率。要注意,這個(gè)參數(shù)的單位是MHz。

        第三步,輸入串口通信仿真調(diào)試命令。單擊Keil工具欄的Debug項(xiàng),選擇Start Debug Session,進(jìn)入仿真狀態(tài)。在Keil軟件左下方的調(diào)試窗口中選擇Command文檔框,輸入ASSⅠGN和MODE命令。例如,將圖1中的虛擬串口COM3綁定為單片機(jī)的串口,命令格式為:

        圖2 Keil參數(shù)設(shè)置界面

        為了避免每次進(jìn)入調(diào)試仿真狀態(tài)都要手動(dòng)輸入1次ASSⅠGN和 MODE命令,可以建立1個(gè)初始化文件,將ASSⅠGN和MODE命令保存在初始化文件中,由Keil進(jìn)入調(diào)試狀態(tài)時(shí)自動(dòng)調(diào)用。初始化文件的后綴名為.ini,可由普通的文本文件直接保存為此格式。例如,建立1個(gè)初始化文件debug.ini,填入 MODE和 ASSⅠGN命令行,然后在圖2的Keil參數(shù)設(shè)置界面中,選擇Debug參數(shù)設(shè)置界面,如圖3所示。在Ⅰnitialization中設(shè)置好debug.ini文件路徑,確定即可。

        圖3 Debug參數(shù)設(shè)置

        接下來(lái)可在通信程序中設(shè)置斷點(diǎn),一般是在與串口相關(guān)聯(lián)的部分進(jìn)行設(shè)置。單擊Keil工具欄的Debug項(xiàng),選擇Go,開(kāi)始運(yùn)行通信程序。此時(shí),打開(kāi)串口調(diào)試助手,選擇與單片機(jī)串口相連的虛擬串口,例如COM4,并且配置好相應(yīng)的串口通信參數(shù),即可與單片機(jī)程序?qū)崿F(xiàn)通信,如圖4所示。

        圖4 串口調(diào)試助手界面

        利用串口調(diào)試助手發(fā)送命令幀,檢查單片機(jī)通信程序是否進(jìn)入斷點(diǎn),回復(fù)的數(shù)據(jù)幀是否正確。還可以有意發(fā)送帶有錯(cuò)誤數(shù)據(jù)的數(shù)據(jù)包,以觀察單片機(jī)通信程序的通信異常處理部分是否正常。一旦發(fā)現(xiàn)程序中的錯(cuò)誤,可以馬上停止仿真調(diào)試,立即修改程序代碼,然后重復(fù)上述步驟進(jìn)行仿真。

        需要注意的是,調(diào)試期間是利用Keil軟件模擬單片機(jī)的串口,因此仿真時(shí)串口通信的實(shí)際波特率僅僅取決于MODE命令。單片機(jī)通信程序中的TMOD、SCON等參數(shù)是不影響串口仿真狀態(tài)的(也就是說(shuō)這些參數(shù)不影響仿真的波特率,即使它們是錯(cuò)誤的),但是中斷的使能位(如ES、EA等)還是起作用的,如果ES或EA被禁止,那么就不會(huì)進(jìn)入串口中斷。

        由于VSPD可以在計(jì)算機(jī)上成對(duì)的擴(kuò)展多個(gè)虛擬串口,因此本方法非常適合仿真多串口單片機(jī)。一般而言,使用本方法需要占用計(jì)算機(jī)的串口數(shù)量是單片機(jī)綁定串口的2倍。一個(gè)串口被Keil占用,用來(lái)模擬單片機(jī)的串口;另外一個(gè)串口被計(jì)算機(jī)占用,用來(lái)與單片機(jī)的串口進(jìn)行通信。

        由于調(diào)試期間不需要與硬件設(shè)備聯(lián)機(jī),也不用下載代碼到硬件仿真電路板上,所以調(diào)試仿真的速度是比較高的。當(dāng)然,這種方法是利用計(jì)算機(jī)的串口來(lái)綁定單片機(jī)的串口,數(shù)據(jù)是由Keil軟件仿真從單片機(jī)串口轉(zhuǎn)換到計(jì)算機(jī)串口的,因此在仿真時(shí),處理速度會(huì)比實(shí)際單片機(jī)運(yùn)行時(shí)稍微低一點(diǎn),這與計(jì)算機(jī)本身的處理速度有關(guān),但是對(duì)仿真來(lái)說(shuō),沒(méi)有任何影響。

        3 小 結(jié)

        簡(jiǎn)單、方便、容易使用、經(jīng)濟(jì)成本低是本調(diào)試方法的最大優(yōu)點(diǎn)。應(yīng)用本方法進(jìn)行通信調(diào)試,不需要使用任何硬件電路,對(duì)計(jì)算機(jī)也沒(méi)有特殊的硬件接口要求,而且對(duì)程序編程語(yǔ)言也沒(méi)有任何特殊要求(C語(yǔ)言和匯編語(yǔ)言均可)。采用本方法可以在硬件電路板研制的同時(shí),就將串口通信部分的程序編寫(xiě)、調(diào)試完畢,大大縮短了開(kāi)發(fā)周期。

        對(duì)于MCS-51架構(gòu)的單片機(jī),由于均可在Keil環(huán)境下進(jìn)行開(kāi)發(fā),可直接應(yīng)用本調(diào)試方法;對(duì)于其他架構(gòu)的單片機(jī)或者DSP以及ARM平臺(tái),雖然無(wú)法直接將其串口與計(jì)算機(jī)串口綁定,但是可以采用變通的辦法,先用C語(yǔ)言在Keil中編寫(xiě)通信程序,并采用本方法調(diào)試完成,然后將程序移植到相應(yīng)的單片機(jī)或DSP硬件平臺(tái)。因此,本方法可應(yīng)用各類(lèi)單片機(jī)、DSP以及ARM的串口通信開(kāi)發(fā)與調(diào)試當(dāng)中,最大限度地降低研制成本,提高開(kāi)發(fā)效率。

        [1]徐勝,吳麗琴,施益峰.一種基于串行通信技術(shù)的遠(yuǎn)程監(jiān)測(cè)系統(tǒng)[J].儀表技術(shù)與傳感器,2006(11):38-41.

        [2]駱陽(yáng).具有抗干擾性能的單片機(jī)智能儀表的設(shè)計(jì)[J].電測(cè)與儀表,2002(3):24-26.

        [3]馬忠梅.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)[M].北京航空航天大學(xué)出版社,2003.

        [4]羅子明,王磊杰,劉或,等.基于AT89C51的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)新方法[J].電子元器件應(yīng)用,2007,9(8):37-40.

        猜你喜歡
        仿真器波特率命令
        只聽(tīng)主人的命令
        CAN 總線波特率自適應(yīng)程序設(shè)計(jì)
        智能制造(2020年5期)2020-07-03 06:24:00
        基于FPGA的異步串行通信波特率容錯(cuò)設(shè)計(jì)
        移防命令下達(dá)后
        這是人民的命令
        基于多線程的慣導(dǎo)邏輯仿真器設(shè)計(jì)
        藍(lán)色命令
        天文測(cè)量仿真器模擬星圖精度分析
        C*Core芯片SCI串口波特率容限優(yōu)化
        并行片上網(wǎng)絡(luò)仿真器ParaNSim的設(shè)計(jì)及性能分析
        国产日产亚洲系列最新| 国产亚洲精选美女久久久久| 国产黄色污一区二区三区| 亚洲av成人一区二区| 国产日韩精品欧美一区喷水| 亚洲一本大道无码av天堂| 丰满人妻无套中出中文字幕| 中文字幕亚洲精品综合| 亚洲中文字幕午夜精品| 熟女体下毛毛黑森林| 国产日b视频| 中文字幕日本韩国精品免费观看 | 国产精彩刺激对白视频| 久久精品人妻中文av| 大地资源高清在线视频播放 | 夜爽8888视频在线观看| av天堂线上| 国产一区二区三区十八区| 免费观看羞羞视频网站| 中国精学生妹品射精久久| 国产内射视频在线播放| 不卡一本av天堂专区| 久久99国产精一区二区三区 | 国产精品无码久久久久久久久作品| 亚洲国产女同在线观看| 欧洲女人与公拘交酡视频| 久久久久国产精品免费免费搜索 | 极品尤物在线精品一区二区三区| 疯狂添女人下部视频免费| 中文字幕喷水一区二区| 男女发生关系视频网站| 亚洲高清在线天堂精品| 好看的欧美熟妇www在线| 高清无码精品一区二区三区| 国产精品视频一区二区久久| 免费观看交性大片| 香蕉人妻av久久久久天天| 亚洲精品二区在线观看| 91超精品碰国产在线观看| 熟女人妻在线视频| 91网红福利精品区一区二|