999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2010-06-22 08:18:16陽(yáng)世榮
關(guān)鍵詞:調(diào)試單片機(jī)程序

陽(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)試方式,往往需要利用專(zhuān)用的單片機(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ì)硬件仿真器依賴(lài)性較強(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ú)需任何硬件仿真器以及用戶(hù)電路板,對(duì)調(diào)試計(jì)算機(jī)也無(wú)串行通信接口要求。在軟件方面,只需準(zhǔn)備虛擬串口軟件VSPD、Keil以及串口通信客戶(hù)端軟件(如串口調(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),其他通信客戶(hù)端軟件(如串口調(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.

猜你喜歡
調(diào)試單片機(jī)程序
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機(jī)的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機(jī)的便捷式LCF測(cè)量?jī)x
電子制作(2019年9期)2019-05-30 09:42:02
試論我國(guó)未決羈押程序的立法完善
基于航拍無(wú)人機(jī)的設(shè)計(jì)與調(diào)試
電子制作(2018年12期)2018-08-01 00:47:44
FOCAS功能在機(jī)床調(diào)試中的開(kāi)發(fā)與應(yīng)用
“程序猿”的生活什么樣
英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
無(wú)線(xiàn)通信中頻線(xiàn)路窄帶臨界調(diào)試法及其應(yīng)用
電子制作(2017年19期)2017-02-02 07:08:38
調(diào)壓柜的調(diào)試與試運(yùn)行探討
主站蜘蛛池模板: 91在线视频福利| 亚洲乱码精品久久久久..| 中文成人在线| 午夜丁香婷婷| 久久人体视频| 久久成人免费| 99r在线精品视频在线播放| 亚洲黄色高清| 亚洲成aⅴ人在线观看| 无码中文字幕乱码免费2| 国产永久在线观看| 午夜精品久久久久久久无码软件 | 91精品啪在线观看国产60岁| 91精品视频在线播放| 亚洲无码熟妇人妻AV在线| 精品久久国产综合精麻豆 | 丝袜亚洲综合| 久久99精品国产麻豆宅宅| 青青热久麻豆精品视频在线观看| 免费无码AV片在线观看中文| 亚洲成av人无码综合在线观看| 精品人妻系列无码专区久久| jijzzizz老师出水喷水喷出| 91 九色视频丝袜| 红杏AV在线无码| 亚洲综合二区| 国产精品久久久久鬼色| 无码aⅴ精品一区二区三区| 久久精品66| 99福利视频导航| 精品久久久无码专区中文字幕| 国产精品人莉莉成在线播放| 色婷婷丁香| 日韩区欧美国产区在线观看| 国产成人精品高清不卡在线| 欧美午夜在线视频| 中文精品久久久久国产网址| 亚洲午夜天堂| 99激情网| 午夜影院a级片| 日韩激情成人| 91成人试看福利体验区| 国产97视频在线观看| 日韩人妻精品一区| 国产精品女熟高潮视频| 香蕉99国内自产自拍视频| 国产凹凸一区在线观看视频| 三上悠亚在线精品二区| 91在线激情在线观看| 日韩亚洲综合在线| 免费欧美一级| 国产午夜一级毛片| 亚洲精品爱草草视频在线| 日韩毛片免费视频| 伊人久久大线影院首页| 怡春院欧美一区二区三区免费| 国产精品夜夜嗨视频免费视频| 国产经典免费播放视频| 亚洲国产精品美女| 精品第一国产综合精品Aⅴ| 欧美日韩中文字幕二区三区| www.日韩三级| 国产成人精品高清在线| 久久无码av三级| 91久久夜色精品国产网站 | 国产91丝袜在线播放动漫| 视频二区国产精品职场同事| 午夜性刺激在线观看免费| 久久大香伊蕉在人线观看热2| 色综合综合网| 黄色网站不卡无码| 亚洲美女久久| 亚洲国产精品日韩欧美一区| 亚洲无码免费黄色网址| 丁香婷婷激情网| 亚洲国产精品日韩欧美一区| 国产美女91呻吟求| 成年人国产视频| 欧美成人看片一区二区三区| 久久这里只有精品国产99| 青青国产视频| 亚洲中文制服丝袜欧美精品|