《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > 有關Keil軟件仿真的51單片機串口調試技巧

有關Keil軟件仿真的51單片機串口調試技巧

2017-06-27
關鍵詞: 單片機 串口

引言

  在單片機系統中,串口(UART,通用異步收發接口)是一個非常重要的組成部分。通常使用單片機串口通過RS232/RS485電平轉換芯片與上位機連接,以進行上位機與下位機的數據交換、參數設置、組成網絡以及各種外部設備的連接等。RS232/RS485串行接口總線具有成本低、簡單可靠、容易使用等特點,加上其歷史悠久,所以目前應用仍然非常廣泛;特別對于數據量不是很大的場合,串口通信仍然是很好的選擇,有著廣闊的使用前景。

  在單片機編程中,串口占了很重要的地位。傳統方式串口程序的調試,往往是利用專用的單片機硬件仿真器。在編寫好程序后,利用仿真器來設置斷點,觀察變量和程序的流程,逐步對程序進行調試,修正錯誤。使用硬件仿真器的確是很有效的方法,但是也有一些缺點:

  很多仿真器不能做到完全硬件仿真,因而會造成仿真時正常,而實際運行時出現錯誤的情況;也有仿真不能通過,但是實際運行正常的情況。

  對于一些較新的芯片或者是表面貼裝的芯片,要么沒有合適的仿真器或仿真頭;要么就是硬件仿真器非常昂貴,且不容易買到。

  有時由于設備內部結構空間的限制,仿真頭不方便接入。

  有的仿真器屬于簡單的在線仿真型,仿真時有很多限制。例如速度不高,實時性或穩定性不好,對斷點有限制等,造成仿真起來不太方便。

  1 調試前的準備工作

  下面介紹一種利用Keil的軟件仿真功能來實現51單片機串口調試用戶程序的方法。使用這種方法,無需任何硬件仿真器,甚至都不需要用戶電路板。所需的只是:

 ?、?硬件。1臺普通計算機(需要帶有2個標準串口)和1根串口線(兩頭都是母頭,連線關系如圖1所示)。

  ② 串口軟件可以是自己編寫的專用調試或上下位機通信軟件,也可以是通用的串口軟件(如串口助手、串口調試等),主要用來收發數據。如果沒有合適的串口調試軟件,則可使用筆者編寫的一個免費的串口小工具TurboCom。除了與其他軟件一樣的數據收發功能外,它還有定時輪流發送自定義數據幀和自動應答(接收到指定數據幀后,自動返回相應的數據幀)這兩個很有用的功能,特別適合于老化測試。這個小工具可以從網上下載。

  2 基本調試命令介紹

  這個串口調試方法主要是利用了Keil強大的軟件仿真功能。在新版本(高于6.0)的Keil軟件中,增強了軟件的仿真能力,可以利用軟件仿真更多的單片機功能。在這些功能中,其中有一個很重要的功能就是利用計算機的串口來模擬單片機的串口(這不同于很多軟件在仿真時使用的激勵文件方式,可以直接與其他串口進行通信,更加方便、靈活)。首先要介紹仿真時需要使用的兩個命令:ASSIGN和MODE。

  2.1 ASSIGN命令

  將單片機的串口綁定到計算機的串口?;臼褂梅绞綖椋?/p>

  ASSIGN channeloutreg

  其中: channel代表計算機的串口,可以是COM1、COM2、COM3或COM4;而inreg和outreg代表單片機的串口。對于只有一個串口的普通單片機,即SIN和SOUT;對于有兩個或者多個串口的單片機,即SnIN和SnOUT(n=0,1,…即單片機的串口號)。

9a093dd4a14109c8aa368b3d9232fe56.jpg.gif

  圖1 串口連線示意圖

  例如:

  ASSIGN COM1SOUT

  將計算機的串口1綁定到單片機的串口(針對只有一個串口的單片機)。

  ASSIGN COM2S0OUT

  將計算機的串口2綁定到單片機的串口0(針對有多個串口的單片機,注意串口號的位置)。

  需要注意的是,參數的括號是不能省略的,而outreg則是沒有括號的。

  2.2 MODE命令

  設置被綁定計算機串口的參數。基本使用方式為:

  MODE COMx baudrate, parity, databits, stopbits

  其中: COMx(x = 1,2,…)代表計算機的串口號;baudrate代表串口的波特率;parity代表校驗方式;databits代表數據位長度;stopbits代表停止位長度。

  例如:

  MODE COM1 9600, n, 8, 1

  設置串口1。波特率為9 600,無校驗位,8位數據,1位停止位。

  MODE COM2 19200, 1, 8, 1

  設置串口2。波特率為19 200,奇校驗,8位數據,1位停止位。

  使用以上兩個命令,就能夠將計算機的串口模擬成單片機的串口了。在進行軟件仿真時,所有發送到被綁定的計算機串口上的數據都會轉發到Keil模擬的單片機串口上,用戶程序可以通過中斷處理程序或查詢方式接收到這些數據;同樣,單片機程序中發送到單片機串口上的數據也會通過被綁定的計算機串口發送出來,可以被其他軟件所接收。利用這個特點,就可以方便地仿真、調試單片機的串口部分程序。要注意的是,這兩個命令需要一起使用。

  2.3 仿真步驟

  首先,用串口線將計算機的兩個串口連接起來(或者是兩臺計算機上的兩個串口)。這兩個串口一個用來模擬單片機串口,另一個給調試程序使用。這個由用戶自己分配,沒有特殊要求。

  其次,編寫好用戶程序,并編譯通過。

  然后,設置工程文件(Project)的相關參數,如圖2和圖3所示。主要是選擇軟件仿真模式(Use Simulator)以及晶振參數。

8c07302d81d7f4a677c2010123a3e152.jpg.gif

  圖2 仿真參數設置

  為了不必每次進入仿真狀態后,都需要輸入串口參數設置命令,可以建立一個初始化文件。初始化文件是一個普通的文本文件,內容就是仿真時需要的命令,按照順序一行輸入一條。如圖2所示,建立了一個debug.ini的初始化文件。這樣,當每次進入仿真調試狀態時,Keil就會自動載入 debug.ini的內容進行初始化。

  為了正確仿真串口,在軟件仿真調試時,在用戶的Keil工程文件的屬性中,還需要設置實際使用的晶振頻率。這個參數非常重要,直接影響通信的波特率,可以按照實際使用的參數進行設置。要注意,這個參數的單位是MHz。

  設置好參數后,就可以進行仿真了。單擊工具欄的圖標按此在新窗口瀏覽圖片進入Debug(仿真調試)狀態,在Output window窗口中的command文本框(一般是在左下角)中輸入上面介紹的命令。例如,將PC機的串口1設置為單片機的串口:

  mode com1 9600,0,8,1

  assign com1 Sout

  然后設置斷點,一般是在關鍵地方或與串口相關聯的地方設置。再單擊圖標運行(Run)用戶程序,使用戶程序運轉起來(不然是接收不到串口數據的)。這時再使用串口調試軟件或用戶調試軟件,發送通信命令或者數據包,看用戶程序是否進入斷點,以及相關的變量是否正確。還可以有意發送帶有錯誤數據的數據包,以觀察用戶程序的異常處理部分是否正常。一旦發現程序中的錯誤,可以馬上停止仿真調試,立即修改代碼,然后再次重復上面的步驟進行仿真。因為不需要與用戶目標板聯機,也不用下載代碼到用戶板上,所以速度非常高。以上這些步驟和使用硬件仿真器的基本一樣,只不過現在使用的是軟件仿真。

  需要注意的是:仿真時單片機串口實際的波特率由MODE命令來指定,單片機程序中的TMOD、SCON等參數是不影響串口仿真狀態的(也就是說這些參數不影響仿真的波特率,即使它們是錯誤的)。但是中斷的使能位(如ES、EA等)還是起作用的,如果ES或EA被禁止,那么就不會進入串口中斷。

  因為這種方法是利用計算機的串口來仿真單片機的串口,而仿真是通過Keil軟件來轉換串口上的數據,不是直接轉發數據的,所以在實際仿真時,處理速度會比實際單片機運行時稍微低一點。比方說仿真狀態時1 s只能發送/接收10個數據幀,但在單片機硬件上運行時可能1 s就可以接收/發送50個數據幀。這與使用的計算機的速度有關,但對仿真來說,是沒有任何影響的。

  對于多串口的單片機,從理論上來說,可以一次綁定多個串口,只要計算機有足夠多的串口?;旧?,使用這種方法需要占用計算機的串口數量是單片機綁定串口的2倍。一個串口被Keil占用,用來模擬單片機的串口;另外一個串口被計算機占用,用來給單片機的串口收發數據。

  3 小結

  這里介紹的方法對C51和匯編語言都是適合的。它最大的好處就是簡單、方便,容易使用,不需要使用任何電路,也沒有特殊的要求;甚至可以在硬件電路制作好之前就將串口部分的程序編寫、調試完畢。筆者使用這種方法已經很長時間了,事實證明這種方法確實非常有效。其實對于51單片機,Keil的仿真功能實在是太強大了,只要充分掌握其特點,能夠熟練利用它,就可以解決工作中的大部分問題。很多工作都可以使用軟件仿真來完成,根本無需任何硬件仿真器;只有一些新的外部器件的時序、接口的調試才有可能需要用到硬件仿真器。目前介紹Keil軟件仿真這方面的參考書籍很少,有些講的還是老版本的用法,不過沒有關系,Keil的幫助文件寫得很詳細、很清楚,只要認真看明白就會使用了。使用熟練后,就會發現Keil的功能相當強。

  對于串口編程,51單片機有Keil這個功能強大的開發軟件,給我們帶來了極大的便利;而在其他單片機軟件的開發中,目前還沒有這么強大的開發工具和方便的調試手段。這里有個變通的辦法,就是可以先在Keil中編寫并調試好串口程序,然后將程序移植到其他單片機平臺中(筆者在PIC18單片機開發中就使用了這種方法,收到了很好的效果。當然這是指在使用C語言開發單片機程序時,匯編語言是沒有可移植性的)。至于如何能夠減小程序移植的工作量,使得程序具有更好的通用性,以最小的代價就可以平滑地移植到其他單片機平臺上,也是一個非常值得探討的問題。

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产偷自视频区视频一区二区| 国产精品看片你懂得| 欧美高清视频一区二区三区在线观看| 国产精品一区二区你懂的| 亚欧美中日韩视频| 久久精品99久久香蕉国产色戒| 国产精品久久久久久久久| 欧美精品xxxxbbbb| 亚洲欧美日韩一区二区在线| 激情五月婷婷综合| 亚洲欧美中文另类| 久久不射2019中文字幕| 狠狠色综合色综合网络| 久久精品最新地址| 欧美日韩综合在线| 欧美日本精品| 亚洲一级二级| 国产欧美在线观看| 这里只有精品丝袜| 欧美一级片在线播放| 亚洲精品日韩在线观看| 亚洲欧美一区二区三区在线| 黄色成人av网| 欧美视频中文在线看| 国产在线观看91精品一区| 国产精品毛片高清在线完整版| 亚洲欧美综合一区| 在线观看国产精品淫| 国产精品久久久久毛片软件| 亚洲国产成人在线播放| 国产精品久久福利| 欧美日韩免费区域视频在线观看| 欧美日韩国产成人精品| 国产精品一区二区视频| 在线观看国产欧美| 国产综合18久久久久久| 久久九九久精品国产免费直播| 欧美午夜三级| 夜夜爽夜夜爽精品视频| 亚洲综合色激情五月| 亚洲黄网站在线观看| 亚洲午夜激情网页| 日韩亚洲国产欧美| 亚洲激情图片小说视频| 欧美理论片在线观看| 亚洲视频免费在线| 国产欧美一级| 欧美日韩第一区| 模特精品在线| 欧美主播一区二区三区美女 久久精品人| 蜜臀va亚洲va欧美va天堂| 久久精品成人一区二区三区蜜臀| 亚洲手机成人高清视频| 国产精品视频yy9299一区| 夜夜爽www精品| 久久婷婷色综合| 国内精品**久久毛片app| 一区二区亚洲| 亚洲一区二区三区四区在线观看| 欧美成人乱码一区二区三区| 亚洲欧洲综合另类| 欧美一区国产在线| 欧美日韩精品久久久| 久久成人精品视频| 亚洲精品系列| 久久精品国产欧美激情| 亚洲精品一区二区三区蜜桃久| 蜜桃av综合| 亚洲精品少妇30p| 国语自产精品视频在线看抢先版结局| 国产欧美日韩亚洲一区二区三区| 另类专区欧美制服同性| 亚洲国产mv| 欧美偷拍另类| 91久久精品美女| 国产精品综合网站| 国产精品区一区二区三区| 亚洲一区在线看| 亚洲欧洲精品天堂一级| 亚洲黄色有码视频| 亚洲自拍偷拍福利| 亚洲一区在线播放| 99国产精品| 久久久久综合网| 亚洲无限乱码一二三四麻| 亚洲欧美日韩国产成人精品影院| 在线精品一区二区| 亚洲电影在线观看| 欧美在线视频免费观看| 伊人伊人伊人久久| 欧美经典一区二区三区| 午夜久久tv| 一区二区欧美日韩| 久久久国产精品亚洲一区| 99re8这里有精品热视频免费| 欧美一级日韩一级| 欧美亚洲一区在线| 美国成人毛片| 亚洲一区精品电影| 乱人伦精品视频在线观看| 亚洲国产黄色片| 久久国产主播| 久久久久久久久综合| 黄色一区二区在线观看| 欧美日韩福利视频| 在线亚洲美日韩| 欧美一区二区三区成人| 在线观看欧美日韩国产| 在线午夜精品| 欧美精品免费看| 国产精品vvv| 午夜精品久久久久久久99樱桃| 国产亚洲精品高潮| 欧美日韩午夜精品| 在线亚洲+欧美+日本专区| 久久久久久**毛片大全| 欧美久久久久久久久久| 欧美日韩在线视频首页| 欧美精品免费视频| 在线一区二区视频| 久久久人成影片一区二区三区观看| 欧美日韩国产小视频在线观看| 一区二区精品国产| 欧美日韩亚洲成人| 亚洲大胆在线| 欧美在线一二三四区| 亚洲午夜一区| 在线观看视频免费一区二区三区| 久久精品人人做人人爽电影蜜月| 亚洲日本无吗高清不卡| 欧美一区二区免费视频| 亚洲人被黑人高潮完整版| 欧美亚洲免费电影| 欧美日韩国产欧美日美国产精品| 亚洲福利视频在线| 国产一区白浆| 免费美女久久99| 国产精品亚洲综合天堂夜夜| 日韩视频在线一区二区| 欧美激情一区二区三区不卡| 国产日韩欧美夫妻视频在线观看| 国产精品豆花视频| 欧美大片在线观看一区二区| 欧美日韩免费观看一区二区三区| 牛牛影视久久网| 国内精品伊人久久久久av一坑| 亚洲综合色噜噜狠狠| 国产精品第三页| 伊人成人网在线看| 国产精品成人播放| 在线精品在线| 欧美日韩精品一本二本三本| 久久久久国产精品麻豆ai换脸| 亚洲一级在线观看| 久久一区二区三区超碰国产精品| 欧美黄色aa电影| 99国产精品99久久久久久| 亚洲精品一线二线三线无人区| 一本色道久久综合亚洲精品按摩| 在线成人免费观看| 亚洲精品国产精品国自产观看| 免费成人美女女| 国模一区二区三区| 欧美jizz19hd性欧美| 中日韩美女免费视频网站在线观看| 亚洲一级黄色片| 欧美精品一区二区三区视频| 小黄鸭精品密入口导航| 亚洲欧美在线观看| 亚洲国产另类精品专区| 欧美无乱码久久久免费午夜一区| 午夜久久电影网| 欧美一区二区三区日韩| 久久精品久久99精品久久| 久久亚洲国产精品日日av夜夜| 国产欧美精品一区二区三区介绍| 国产日韩精品久久| 欧美午夜www高清视频| 伊人成综合网伊人222| 国产一区二区三区黄视频| 欧美日韩在线直播| 欧美淫片网站| 国产午夜精品麻豆| 久久精品亚洲热| 国产伦精品一区二区三区| 国产精品一区免费视频| 欧美日韩免费精品| 国产精品日本欧美一区二区三区| 国产片一区二区| 欧美成人黑人xx视频免费观看| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲高清久久网| 亚洲私人影院在线观看| 99精品免费视频| 一区二区三区福利| 亚洲国产高清视频| 欧美一级二区| 欧美日韩免费区域视频在线观看| 亚洲免费网站| 国产精品专区h在线观看| 久久精品亚洲乱码伦伦中文| 久久亚洲精品伦理| 欧美精品一区二区三区在线看午夜| 欧美黄污视频| 国产一区二区精品久久99| 激情小说另类小说亚洲欧美| 蜜臀av国产精品久久久久| 国产欧美韩日| 久久精品亚洲乱码伦伦中文| 亚洲精品123区| 国产一区二区三区四区五区美女| 欧美精品在线一区| 欧美片在线观看| a91a精品视频在线观看| 日韩视频免费在线| 亚洲尤物视频在线| 国产精品扒开腿爽爽爽视频| 国产精品午夜春色av| 久久亚洲欧美国产精品乐播| 国内外成人在线| 亚洲精品色图| 免费高清在线一区| 欧美日韩在线免费视频| 欧美黄色aaaa| 午夜精品免费在线| 久久青草福利网站| 国产精品揄拍一区二区| 久久精品一级爱片| 在线观看一区视频| 在线观看欧美视频| 国产在线观看精品一区二区三区| 欧美 日韩 国产一区二区在线视频| 欧美猛交免费看| 国产精品xnxxcom| 在线中文字幕日韩| 亚洲国产成人精品女人久久久| 欧美裸体一区二区三区| 一区二区三区黄色| 国产精品日韩在线| 国产精品日本精品| 在线视频日本亚洲性| 亚洲天堂av在线免费观看| 欧美在线视频日韩| 欧美久久久久久| 欧美精品久久99| 国产精品美女久久久久aⅴ国产馆| 亚洲裸体俱乐部裸体舞表演av| 麻豆国产精品va在线观看不卡| 国产日韩在线一区| 国产麻豆午夜三级精品| 亚洲电影下载| 久久综合伊人77777尤物| 国产亚洲精品激情久久| 午夜精彩视频在线观看不卡| 在线观看视频一区| 欧美亚洲日本一区| 亚洲二区在线视频| 欧美精品自拍| 亚洲永久免费精品| 午夜精品久久久久久久99水蜜桃| 国产精品jvid在线观看蜜臀| 国产精品视频导航| 欧美一区二区网站| 国产精品人成在线观看免费| 在线成人h网| 国内偷自视频区视频综合| 久久精品国产久精国产思思| 亚洲国产精品毛片| 欧美精品xxxxbbbb| 欧美一区二视频| 99国产精品国产精品毛片| 亚洲精品久久7777| 国产伦精品一区二区三区| 欧美美女喷水视频| 午夜国产一区| 亚洲一区日韩在线| 欧美福利视频在线| 久久亚洲综合色| 欧美日韩国产亚洲一区| 亚洲欧美视频在线观看视频| 欧美肉体xxxx裸体137大胆| 久久精品水蜜桃av综合天堂| 国产欧美一区二区精品秋霞影院| 免费黄网站欧美| 亚洲久色影视| 黄色精品一区二区| ●精品国产综合乱码久久久久| 免费欧美视频| 中文网丁香综合网| 欧美在线综合视频| 麻豆精品在线视频| 国产日韩1区| 国产一区二区三区在线观看网站| 欧美激情一区二区三区| 欧美大片91| 亚洲国产老妈| 欧美精品一区二区三区很污很色的| 国产精品视频| 欧美xart系列在线观看| 欧美日韩p片| 一区二区三区四区精品| 亚洲欧美一区二区激情| 国产精品久久一级| 亚洲国产一区视频| 欧美激情综合五月色丁香| 欧美一级二级三级蜜桃| 一本色道久久综合亚洲精品不| 噜噜噜噜噜久久久久久91| 久久久久久久久久久久久女国产乱| 亚洲精品美女| 日韩视频在线一区| 亚洲高清在线播放| 久久精品亚洲热| 激情综合中文娱乐网| 亚洲精品视频在线看| 午夜精品三级视频福利| 欧美一区午夜精品| 欧美一区二区日韩一区二区| 亚洲国产精品www| 亚洲国产日日夜夜| 欧美一区二区日韩一区二区| 亚洲性线免费观看视频成熟| 久久综合一区| 国产精品区一区| 国产精品久久久免费| 欧美色精品在线视频| 精品51国产黑色丝袜高跟鞋| 久久精品在线播放|