
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、有關(guān)keil軟件仿真的51單片機(jī)串口調(diào)試技巧在系統(tǒng)中,串口(uart,通用異步收發(fā)接口)是一個(gè)十分重要的組成部分。通常用法單片機(jī)串口通過rs232/rs485電平轉(zhuǎn)換芯片與上位機(jī)銜接,以舉行上位機(jī)與下位機(jī)的數(shù)據(jù)交換、參數(shù)設(shè)置、組成網(wǎng)絡(luò)以及各種外部設(shè)備的銜接等。rs232/rs485串行接口具有成本低、容易牢靠、簡(jiǎn)單用法等特點(diǎn),加上其歷史悠久,所以目前應(yīng)用仍然十分廣泛;特殊對(duì)于數(shù)據(jù)量不是很大的場(chǎng)合,串口通信仍然是很好的挑選,有著廣大的用法前景。在單片機(jī)編程中,串口占了很重要的地位。傳統(tǒng)方式串口程序的調(diào)試,往往是利用專用的單片機(jī)硬件器。在編寫好程序后,利用仿真器來設(shè)置斷點(diǎn),觀看變量和程序的流程,逐
2、步對(duì)程序舉行調(diào)試,修正錯(cuò)誤。用法硬件仿真器確實(shí)是很有效的辦法,但是也有一些缺點(diǎn):無數(shù)仿真器不能做到徹低硬件仿真,因而會(huì)造成仿真時(shí)正常,而實(shí)際運(yùn)行時(shí)浮現(xiàn)錯(cuò)誤的狀況;也有仿真不能通過,但是實(shí)際運(yùn)行正常的狀況。對(duì)于一些較新的芯片或者是表面貼裝的芯片,要么沒有合適的仿真器或仿真頭;要么就是硬件仿真器十分昂貴,且不簡(jiǎn)單買到。有時(shí)因?yàn)樵O(shè)備內(nèi)部結(jié)構(gòu)空間的限制,仿真頭不便利接入。有的仿真器屬于容易的在線仿真型,仿真時(shí)有無數(shù)限制。例如速度不高,實(shí)時(shí)性或穩(wěn)定性不好,對(duì)斷點(diǎn)有限制等,造成仿真起來不太便利。1 調(diào)試前的預(yù)備工作下面介紹一種利用的軟件仿真功能來實(shí)現(xiàn)串口調(diào)試用戶程序的辦法。用法這種辦法,無需任何硬件仿真器
3、,甚至都不需要用戶板。所需的只是: 硬件。1臺(tái)一般計(jì)算機(jī)(需要帶有2個(gè)標(biāo)準(zhǔn)串口)和1根串口線(兩頭都是母頭,連線關(guān)系1所示)。 串口軟件可以是自己編寫的專用調(diào)試或上下位機(jī)通信軟件,也可以是通用的串口軟件(如串口助手、串口調(diào)試等),主要用來收發(fā)數(shù)據(jù)。假如沒有合適的串口調(diào)試軟件,則可用法筆者編寫的一個(gè)免費(fèi)的串口小工具turbocom。除了與其他軟件一樣的數(shù)據(jù)收發(fā)功能外,它還有定時(shí)輪番發(fā)送自定義數(shù)據(jù)幀和自動(dòng)應(yīng)答(接收到指定數(shù)據(jù)幀后,自動(dòng)返回相應(yīng)的數(shù)據(jù)幀)這兩個(gè)很實(shí)用的功能,特殊適合于老化測(cè)試。這個(gè)小工具可以從網(wǎng)上下載。2 基本調(diào)試指令介紹這個(gè)串口調(diào)試辦法主要是利用了keil強(qiáng)大的軟件仿真功能。在新版
4、本(高于6.0)的keil軟件中,增加了軟件的仿真能力,可以利用軟件仿真更多的單片機(jī)功能。在這些功能中,其中有一個(gè)很重要的功能就是利用計(jì)算機(jī)的串口來模擬單片機(jī)的串口(這不同于無數(shù)軟件在仿真時(shí)用法的激勵(lì)文件方式,可以挺直與其他串口舉行通信,越發(fā)便利、靈便)。首先要介紹仿真時(shí)需要用法的兩個(gè)指令:assign和mode。2.1 assign指令將單片機(jī)的串口綁定到計(jì)算機(jī)的串口?;居梅ǚ绞綖椋篴ssign channeloutreg其中: channel代表計(jì)算機(jī)的串口,可以是com1、com2、com3或com4;而inreg和outreg代表單片機(jī)的串口。對(duì)于惟獨(dú)一個(gè)串口的一般單片機(jī),即sin和
5、sout;對(duì)于有兩個(gè)或者多個(gè)串口的單片機(jī),即snin和snout(n=0,1,即單片機(jī)的串口號(hào))。圖1 串口連線暗示圖例如:assign com1sout將計(jì)算機(jī)的串口1綁定到單片機(jī)的串口(針對(duì)惟獨(dú)一個(gè)串口的單片機(jī))。assign com2s0out將計(jì)算機(jī)的串口2綁定到單片機(jī)的串口0(針對(duì)有多個(gè)串口的單片機(jī),注重串口號(hào)的位置)。需要注重的是,參數(shù)的括號(hào)是不能省略的,而outreg則是沒有括號(hào)的。2.2 mode指令設(shè)置被綁定計(jì)算機(jī)串口的參數(shù)。基本用法方式為:mode comx baudrate, parity, databits, stopbits其中: comx(x = 1,2,)代表計(jì)算
6、機(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,無校驗(yàn)位,8位數(shù)據(jù),1位停止位。mode com2 19200, 1, 8, 1設(shè)置串口2。波特率為19 200,奇校驗(yàn),8位數(shù)據(jù),1位停止位。用法以上兩個(gè)指令,就能夠?qū)⒂?jì)算機(jī)的串口模擬成單片機(jī)的串口了。在舉行軟件仿真時(shí),全部發(fā)送到被綁定的計(jì)算機(jī)串口上的數(shù)據(jù)都會(huì)轉(zhuǎn)發(fā)到keil模擬的單片機(jī)串口上,用戶程序可以通過中斷處理程序或查詢方式接收到這些數(shù)據(jù);同樣,單片機(jī)程序中發(fā)送到單片機(jī)
7、串口上的數(shù)據(jù)也會(huì)通過被綁定的計(jì)算機(jī)串口發(fā)送出來,可以被其他軟件所接收。利用這個(gè)特點(diǎn),就可以便利地仿真、調(diào)試單片機(jī)的串口部分程序。要注重的是,這兩個(gè)指令需要一起用法。2.3 仿真步驟首先,用串口線將計(jì)算機(jī)的兩個(gè)串口銜接起來(或者是兩臺(tái)計(jì)算機(jī)上的兩個(gè)串口)。這兩個(gè)串口一個(gè)用來模擬單片機(jī)串口,另一個(gè)給調(diào)試程序用法。這個(gè)由用戶自己分配,沒有特別要求。第二,編寫好用戶程序,并編譯通過。然后,設(shè)置工程文件(project)的相關(guān)參數(shù),2和圖3所示。主要是挑選軟件仿真模式(use simulator)以及晶振參數(shù)。圖2 仿真參數(shù)設(shè)置為了不必每次進(jìn)入仿真狀態(tài)后,都需要輸入串口參數(shù)設(shè)置指令,可以建立一個(gè)初始化文
8、件。初始化文件是一個(gè)一般的文本文件,內(nèi)容就是仿真時(shí)需要的指令,根據(jù)挨次一行輸入一條。2所示,建立了一個(gè)debug.ini的初始化文件。這樣,當(dāng)每次進(jìn)入仿真調(diào)試狀態(tài)時(shí),keil就會(huì)自動(dòng)載入 debug.ini的內(nèi)容舉行初始化。為了正確仿真串口,在軟件仿真調(diào)試時(shí),在用戶的keil工程文件的屬性中,還需要設(shè)置實(shí)際用法的晶振頻率。這個(gè)參數(shù)十分重要,挺直影響通信的波特率,可以根據(jù)實(shí)際用法的參數(shù)舉行設(shè)置。要注重,這個(gè)參數(shù)的單位是mhz。設(shè)置好參數(shù)后,就可以舉行仿真了。單擊工具欄的圖標(biāo)按此在新窗口掃瞄進(jìn)入debug(仿真調(diào)試)狀態(tài),在output window窗口中的command文本框(普通是在左下角)中
9、輸入上面介紹的指令。例如,將pc機(jī)的串口1設(shè)置為單片機(jī)的串口:mode com1 9600,0,8,1assign com1 sout然后設(shè)置斷點(diǎn),普通是在關(guān)鍵地方或與串口相關(guān)聯(lián)的地方設(shè)置。再單擊圖標(biāo)運(yùn)行(run)用戶程序,用法戶程序運(yùn)轉(zhuǎn)起來(不然是接收不到串口數(shù)據(jù)的)。這時(shí)再用法串口調(diào)試軟件或用戶調(diào)試軟件,發(fā)送通信指令或者數(shù)據(jù)包,看用戶程序是否進(jìn)入斷點(diǎn),以及相關(guān)的變量是否正確。還可以故意發(fā)送帶有錯(cuò)誤數(shù)據(jù)的數(shù)據(jù)包,以觀看用戶程序的異樣處理部分是否正常。一旦發(fā)覺程序中的錯(cuò)誤,可以馬上停止仿真調(diào)試,立刻修改代碼,然后再次重復(fù)上面的步驟舉行仿真。由于不需要與用戶目標(biāo)板聯(lián)機(jī),也不用下載代碼到用戶板上,
10、所以速度十分高。以上這些步驟和用法硬件仿真器的基本一樣,只不過現(xiàn)在用法的是軟件仿真。需要注重的是:仿真時(shí)單片機(jī)串口實(shí)際的波特率由mode指令來指定,單片機(jī)程序中的tmod、scon等參數(shù)是不影響串口仿真狀態(tài)的(也就是說這些參數(shù)不影響仿真的波特率,即使它們是錯(cuò)誤的)。但是中斷的使能位(如es、ea等)還是起作用的,假如es或ea被禁止,那么就不會(huì)進(jìn)入串口中斷。由于這種辦法是利用計(jì)算機(jī)的串口來仿真單片機(jī)的串口,而仿真是通過keil軟件來轉(zhuǎn)換串口上的數(shù)據(jù),不是挺直轉(zhuǎn)發(fā)數(shù)據(jù)的,所以在實(shí)際仿真時(shí),處理速度會(huì)比實(shí)際單片機(jī)運(yùn)行時(shí)略微低一點(diǎn)。比喻說仿真狀態(tài)時(shí)1 s只能發(fā)送/接收10個(gè)數(shù)據(jù)幀,但在單片機(jī)硬件上運(yùn)
11、行時(shí)可能1 s就可以接收/發(fā)送50個(gè)數(shù)據(jù)幀。這與用法的計(jì)算機(jī)的速度有關(guān),但對(duì)仿真來說,是沒有任何影響的。對(duì)于多串口的單片機(jī),從理論上來說,可以一次綁定多個(gè)串口,只要計(jì)算機(jī)有足夠多的串口?;旧?,用法這種辦法需要占用計(jì)算機(jī)的串口數(shù)量是單片機(jī)綁定串口的2倍。一個(gè)串口被keil占用,用來模擬單片機(jī)的串口;另外一個(gè)串口被計(jì)算機(jī)占用,用來給單片機(jī)的串口收發(fā)數(shù)據(jù)。3 小結(jié)這里介紹的辦法對(duì)c51和匯編語言都是適合的。它最大的益處就是容易、便利,簡(jiǎn)單用法,不需要用法任何電路,也沒有特別的要求;甚至可以在硬件電路制作好之前就將串口部分的程序編寫、調(diào)試完畢。筆者用法這種辦法已經(jīng)很長(zhǎng)時(shí)光了,事實(shí)證實(shí)這種辦法的確十分有效。其實(shí)對(duì)于51單片機(jī),keil的仿真功能實(shí)在是太強(qiáng)大了,只要充分把握其特點(diǎn),能夠嫻熟利用它,就可以解決工作中的大部分問題。無數(shù)工作都可以用法軟件仿真來完成,根本無需任何硬件仿真器;惟獨(dú)一些新的外部器件的時(shí)序、接口的調(diào)試才有可能需要用到硬件仿真器。目前介紹keil軟件仿真這方面的參考書籍很少,有些講的還是老版本的使用,不過沒有關(guān)系,keil的協(xié)助文件寫得很具體、很清晰,只要仔細(xì)看明了就會(huì)用法了。用法嫻熟后,就會(huì)發(fā)覺keil的功能相當(dāng)強(qiáng)。對(duì)于串口編程,51單片機(jī)有keil這個(gè)功能強(qiáng)大的開發(fā)軟件,給我們帶來了極大的方便;而在其他單片機(jī)軟件的開發(fā)中,目前還沒有這么強(qiáng)大的開發(fā)工具和便利的調(diào)試手段
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京汽車托運(yùn)合同范本
- 2025年泰州貨運(yùn)從業(yè)資格證怎么考
- 修復(fù)車交易合同范本
- 醫(yī)院弱電集成合同范本
- 制衣廠勞動(dòng)合同范本
- 主廚合同范本
- 與中介定金合同范本
- 棉花勞務(wù)合同范本
- 冠名使用合同范本
- 勞動(dòng)合同范本完整
- 同等學(xué)力英語申碩考試詞匯(第六版大綱)電子版
- 文化產(chǎn)業(yè)園項(xiàng)目建議書范文
- 互聯(lián)網(wǎng)銷售卷煙(煙草)案件的分析
- 公務(wù)員考察政審表樣本
- 白菜花生長(zhǎng)過程記錄
- BQB480-2014無取向電工鋼
- 各類許可證允許使用的放射性藥品目錄
- 解析幾何期末考試試卷
- 給水管道通水試驗(yàn)及沖洗記錄填寫范本
- 唐納森焊煙除塵器(共22頁)
- 機(jī)電一體化畢業(yè)設(shè)計(jì)(論文)基于PLC的玻璃搬運(yùn)機(jī)械手系統(tǒng)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論