標(biāo)題: 為什么串口助手返回值不一樣? [打印本頁(yè)]

作者: 青春之逝    時(shí)間: 2018-1-1 23:06
標(biāo)題: 為什么串口助手返回值不一樣?
#include<reg51.h>
#define uchar unsigned char
       
void main()
{
        uchar temp = 0;
        TMOD = 0x20;
        TH1 = 0xfd;
        TL1 = 0xfd;
        SCON = 0x50;
        PCON = 0x00;
        TR1 = 1;
        P1 = 0xff;
        while(1)
        {
                while(RI==0);
                RI = 0;
                temp = SBUF;
                P1 = temp;
                SBUF = temp;
               
        }
}

捕獲.PNG (201.54 KB, 下載次數(shù): 54)

捕獲.PNG

作者: wulin    時(shí)間: 2018-1-2 06:47
波特率選擇錯(cuò)誤,應(yīng)為9600
作者: HC6800-ES-V2.0    時(shí)間: 2018-1-2 08:13
同學(xué):
我按照你串口的設(shè)置,得到你的波特率是在晶振12M條件下,9600不加倍的波特率。
這個(gè)波特率的誤差8.5%,很大很大的誤差,在這種情況下,你當(dāng)然接收不到正確的數(shù)據(jù)了。
還有問(wèn)題,看你的截圖,你的使用串口調(diào)試工具時(shí),選擇的波特率卻是2400,這再次讓你無(wú)法得到正確的數(shù)據(jù)。
正確的做法是:
第一:看清楚你的晶振是多少?12M?還是11.0592M?
第二:如果是11.0592M晶振,那么,波特率選擇9600,不加倍,誤差0%,沒(méi)有問(wèn)題。如果是12M,則波特率只能在4800及以下,且加倍,誤差才小。
第三:使用串口調(diào)試工具時(shí),要設(shè)置與你程序相同的波特率才行。
作者: ahshmj    時(shí)間: 2018-1-2 09:33
波特率對(duì)嗎?
作者: david888    時(shí)間: 2018-1-2 09:50
串口打印工具的波特率要和下位機(jī)程序的波特率一致才不會(huì)錯(cuò)誤
作者: FIFTEEN    時(shí)間: 2018-1-2 10:13
波特率設(shè)置一下
作者: 青春之逝    時(shí)間: 2018-1-2 10:31
HC6800-ES-V2.0 發(fā)表于 2018-1-2 08:13
同學(xué):
我按照你串口的設(shè)置,得到你的波特率是在晶振12M條件下,9600不加倍的波特率。
這個(gè)波特率的誤差8 ...

謝謝!




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1