色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用51單片機進行串口調試的基本方法有哪些

Wildesbeast ? 來源:未知 ? 2019-08-25 11:21 ? 次閱讀

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

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

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

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

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

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

1 調試前的準備工作

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

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

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

2 基本調試命令介紹

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

2.1 ASSIGN命令

將單片機的串口綁定到計算機的串口。基本使用方式為:

ASSIGN channeloutreg

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

51單片機串口調試的基本方法介紹

圖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模擬的單片機串口上,用戶程序可以通過中斷處理程序或查詢方式接收到這些數據;同樣,單片機程序中發送到單片機串口上的數據也會通過被綁定的計算機串口發送出來,可以被其他軟件所接收。利用這個特點,就可以方便地仿真、調試單片機的串口部分程序。要注意的是,這兩個命令需要一起使用。

51單片機串口調試的基本方法介紹

2.3 仿真步驟

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

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

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

圖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語言開發單片機程序時,匯編語言是沒有可移植性的)。至于如何能夠減小程序移植的工作量,使得程序具有更好的通用性,以最小的代價就可以平滑地移植到其他單片機平臺上,也是一個非常值得探討的問題。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 51單片機
    +關注

    關注

    274

    文章

    5702

    瀏覽量

    123491
  • uart
    +關注

    關注

    22

    文章

    1235

    瀏覽量

    101354
  • 串口調試
    +關注

    關注

    2

    文章

    268

    瀏覽量

    24712
收藏 人收藏

    評論

    相關推薦

    單片機串口模塊調試方法

    筆者在調試某Cortex-M3內核單片機時遇到一個問題,此單片機不具備在線仿真功能,因此調試代碼時只能使用UART輸出Log的方式調試
    發表于 07-28 15:48 ?1536次閱讀
    <b class='flag-5'>單片機</b><b class='flag-5'>串口</b>模塊<b class='flag-5'>調試</b><b class='flag-5'>方法</b>

    51單片機程序開發多采用串口進行調試

    串口,作為單片機程序開發中最常用、最方便,也是應用最廣泛的程序調試方法;無論是作為調試工具,打印出調試
    發表于 11-18 09:22

    51單片機串口通信代碼

    51單片機串口通信的代碼設計
    發表于 11-09 17:47 ?180次下載

    51單片機哪些模擬串口方法哪些

    隨著單片機的使用日益頻繁,用其作前置進行采集和通信也常見于各種應用,一般是利用前置采集各種終端數據后進行處理、存儲,再主動或被動上報給管
    的頭像 發表于 10-20 10:36 ?5218次閱讀

    如何使用51單片機實現串口通信

    51單片機串口引腳為P3.0引腳與P3.1引腳,分別是RXD和TXD引腳。串口通信可以用于單片機和其它芯片通信或者
    發表于 11-21 15:47 ?3w次閱讀
    如何使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>實現<b class='flag-5'>串口</b>通信

    使用51單片機進行串口通信的基礎教程免費下載

    本文檔的主要內容詳細介紹的是使用51單片機進行串口通信的基礎教程免費下載。
    發表于 06-18 17:44 ?2次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>進行</b><b class='flag-5'>串口</b>通信的基礎教程免費下載

    使用51單片機進行串口通信的串口設置資料免費下載

    本文檔的主要內容使用51單片機進行串口通信的串口設置資料免費下載
    發表于 06-14 17:44 ?12次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>進行</b><b class='flag-5'>串口</b>通信的<b class='flag-5'>串口</b>設置資料免費下載

    51單片機串口通訊詳解

    串口,作為單片機程序開發中最常用、最方便,也是應用最廣泛的程序調試方法;無論是作為調試工具,打印出調試
    發表于 11-11 17:06 ?15次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>串口</b>通訊詳解

    51單片機串口通信

    51單片機串口通信文章目錄51單片機串口通信串口介紹
    發表于 11-18 14:06 ?22次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>串口</b>通信

    51單片機串口通信調試printf函數重定向輸出打印

    格式化輸出串行通信不知道你們寫單片機程序的時候有沒有煩惱,它沒有想c語言的dos窗口,沒有java的運行窗口,沒有python的控制臺,有時候想輸出一條調試信息卻無法做到,下面通過簡單的方法,將
    發表于 11-20 16:36 ?16次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>串口</b>通信<b class='flag-5'>調試</b>printf函數重定向輸出打印

    51單片機串口通信

    51單片機串口通信文章目錄51單片機串口通信串口介紹
    發表于 11-21 20:36 ?64次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>串口</b>通信

    51單片機串口通信(自動發送)

    51單片機串口通信(自動發送)51單片機串口通信,本次實驗程序是實現字符的自動發送,該程序可以
    發表于 11-23 17:06 ?13次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>串口</b>通信(自動發送)

    51單片機——串口通信

    World后回發給51單片機,最終51單片機回顯到LCD1602顯示屏。串口通信?其實我壓根不知道串口
    發表于 11-23 17:36 ?33次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>——<b class='flag-5'>串口</b>通信

    51 單片機串口燒錄程序方法

    51單片機串口燒錄程序方法51 單片機串口燒錄程序
    發表于 11-25 18:21 ?120次下載
    <b class='flag-5'>51</b> <b class='flag-5'>單片機</b><b class='flag-5'>串口</b>燒錄程序<b class='flag-5'>方法</b>

    51單片機串口配置方法

    串口,作為單片機程序開發中最常用、最方便,也是應用最廣泛的程序調試方法;無論是作為調試工具,打印出調試
    的頭像 發表于 04-14 14:58 ?5090次閱讀
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>串口</b>配置<b class='flag-5'>方法</b>
    主站蜘蛛池模板: 无码国产成人777爽死在线观看| 亚洲色综合狠狠综合区| 国产在线精彩视频| 78m成人亚洲| 香蕉久久日日躁夜夜嗓| 麻花豆传媒剧国产免费mv观看| 打扑克床上视频不用下载免费观看 | 成人影院久久久久久影院| 亚洲精品国产拍在线观看| 亲伦在线观看| 久久日本精品在线热| 国产成人免费片在线观看| 97免费视频在线观看| 亚洲男人97色综合久久久| 色婷婷五月综合久久中文字幕| 里番※琉璃全彩acg奈亚子| 国产亚洲色婷婷久久精品99| 成人AV无码一二二区视频免费看| 在线观看国产高清免费不卡| 午夜亚洲WWW湿好大| 日韩熟女精品一区二区三区| 麻豆精品传媒卡一卡二传媒短视频| 国产免费毛片在线观看| 成人网视频在线观看免费| 799是什么意思网络用语| 亚洲中文字幕无码一去台湾| 无码人妻少妇色欲AV一区二区| 女人爽得直叫免费视频| 久久这里只有精品2| 精选国产AV精选一区二区三区| 国产精品亚洲视频在线观看| 菠萝菠萝蜜视频在线看1| 99久久久无码国产精精品| 中字幕久久久人妻熟女天美传媒| 亚洲国产日韩欧美在线a乱码| 偷窥自拍性综合图区| 色欲av蜜臀av高清| 日本特黄网站| 日本高清免费看| 日本十八禁无遮拦啪啪漫画| 人成片在线观看亚洲无遮拦|