新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 利用VSPD、串口調(diào)試助手、Keil做串口調(diào)試

        利用VSPD、串口調(diào)試助手、Keil做串口調(diào)試

        作者: 時間:2016-11-23 來源:網(wǎng)絡(luò) 收藏

        下面詳細介紹下如何用虛擬串口調(diào)試串口發(fā)送接收程序。

        本文引用地址:http://www.104case.com/article/201611/320470.htm

        需要用到三個軟件:KEIL、VSPD XP5(virtual serial ports driver xp5.1虛擬串口軟件)、串口調(diào)試助手(個人感覺2.1比較好用)。

        1、首先在KEIL里編譯寫好的程序。

        2、打開VSPD,界面如下圖所示:

        左邊欄最上面的是電腦自帶的物理串口。點右邊的add pair,可以添加成對的串口。一對串口已經(jīng)虛擬互聯(lián)了,如果添加的是COM3、COM4,用COM3發(fā)送數(shù)據(jù),COM4就可以接收數(shù)據(jù),反過來也可以。

        3、接下來的一步很關(guān)鍵。把KEIL和虛擬出來的串口綁定。現(xiàn)在把COM3和KEIL綁定。在KEIL中進入DEBUG模式。在最下面的COMMAND命令行,輸入

        MODE COM3 4800,0,8,1(設(shè)置串口3的波特率、奇偶校驗位、數(shù)據(jù)位、停止位,打開COM3串口,注意設(shè)置的波特率和程序里設(shè)置的波特率應(yīng)該一樣)

        ASSIGN COM3 SOUT(把單片機的串口和COM3綁定到一起。因為我用的單片機是STC89C52,只有一個串口,所以用SIN,SOUT,如果單片機有幾個串口,可以選擇S0IN,S0OUT,S1IN,S1OUT。)

        為了不每次都重新綁定串口,可以建立一個初始化文件debug.ini。初始化文件是一個普通的文本文件,內(nèi)容就是仿真時需要的命令,按照順序一行輸入一條。如圖2所示,建立了一個debug.ini的初始化文件。這樣,當(dāng)每次進入仿真調(diào)試狀態(tài)時,Keil就會自動載入debug.ini 的內(nèi)容進行初始化。

        4.串口調(diào)試助手

        可以看到虛擬出來的串口COM3、COM4,選擇COM4,設(shè)置為波特率4800,無校驗位、8位數(shù)據(jù)位,1位停止位(和COM3、程序里的設(shè)置一樣)。打開COM4。

        現(xiàn)在就可以開始調(diào)試串口發(fā)送接收程序了。可以通過KEIL發(fā)送數(shù)據(jù),在串口調(diào)試助手中就可以顯示出來。也可以通過串口調(diào)試助手發(fā)送數(shù)據(jù),在KEIL中接收。

        串口調(diào)試助手不支持發(fā)送發(fā)送漢字,回車符等。如需支持可使用usr-tcp232-test(支持漢字),或者超級終端(支持漢字,回車符和Keil串口仿真控件效果一樣)。

        這種方法的好處是不用硬件就可以調(diào)試。這是網(wǎng)上一篇文章介紹的方法.

        [cpp]view plaincopy
        1. //利用VSPD、串口調(diào)試助手、Keil串口自發(fā)自收程序
        2. //測試通過
        3. #include
        4. #defineucharunsignedchar
        5. #defineuintunsignedint
        6. uchari=0;
        7. //串口初始化程序
        8. voidinit_chuankou()
        9. {
        10. TMOD=0x20;
        11. TH1=0xfd;//波特率9600
        12. TL1=0xfd;
        13. SM0=0;
        14. SM1=1;
        15. REN=1;
        16. EA=1;
        17. TR1=1;
        18. ES=1;
        19. }
        20. voidmain()
        21. {
        22. init_chuankou();
        23. while(1)
        24. {
        25. }
        26. }
        27. voides()interrupt4
        28. {
        29. if(RI)
        30. {
        31. RI=0;
        32. i=SBUF;
        33. SBUF=i;
        34. while(TI==0);
        35. TI=0;
        36. }
        37. //else
        38. //{
        39. //TI=0;
        40. //SBUF=i;
        41. //}
        42. }



        關(guān)鍵詞: VSPDKeil串口調(diào)

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 铁岭县| 朝阳县| 开封县| 青铜峡市| 铜山县| 长宁县| 金乡县| 永吉县| 海阳市| 康定县| 香格里拉县| 大洼县| 满洲里市| 孙吴县| 赤峰市| 略阳县| 德格县| 美姑县| 合川市| 新蔡县| 铜陵市| 关岭| 广东省| 永定县| 西宁市| 余姚市| 尼木县| 黄山市| 壤塘县| 淮安市| 弥勒县| 满洲里市| 沅陵县| 汾阳市| 铜鼓县| 佛坪县| 称多县| 北京市| 巴彦淖尔市| 定安县| 旬邑县|