找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6713|回復: 5
打印 上一主題 下一主題
收起左側

用虛擬串口發(fā)現(xiàn)proteus內(nèi)窗口顯示的是好的,對串口調試助手內(nèi)顯示的是亂碼,請問大...

[復制鏈接]
跳轉到指定樓層
樓主
ID:127023 發(fā)表于 2016-6-18 19:39 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
LZ試了試虛擬串口發(fā)現(xiàn)proteus[img=0,1]file:///D:\Documents\Tencent Files\731888784\Image\C2C\TY~SRF[6%0`A0X7HVC1R)C6.png[/img]內(nèi)窗口顯示的是好的,對串口調試助手內(nèi)顯示的是亂碼,請問大神是怎么回事?
程序很簡單如下:

/*******************************************************************************
* 實驗名                           : 串口實驗
* 使用的IO             : P2
* 實驗效果       : 將接收到發(fā)送回電腦上面。
*        注意                                         :
*******************************************************************************/

#include<reg51.h>

//--聲明全局函數(shù)--//
void UsartConfiguration();
/*******************************************************************************
* 函 數(shù) 名         : main
* 函數(shù)功能                   : 主函數(shù)
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/

void main()
{
        UsartConfiguration();
        while(1)
        {
        }
}
/*******************************************************************************
* 函 數(shù) 名         :UsartConfiguration()
* 函數(shù)功能                   :設置串口
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/

void UsartConfiguration()
{
        SCON=0X50;                        //設置為工作方式1
        TMOD=0X20;                        //設置計數(shù)器工作方式2
        PCON=0X80;                        //波特率加倍
        TH1=0XF3;                    //計數(shù)器初始值設置,注意波特率是4800的
        TL1=0XF3;
        ES=1;                                                //打開接收中斷
        EA=1;                                                //打開總中斷
        TR1=1;                                            //打開計數(shù)器
}

/*******************************************************************************
* 函 數(shù) 名         :Delay(unsigned int i)
* 函數(shù)功能                   : 延時函數(shù)
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/
void Usart() interrupt 4
{
        unsigned char receiveData;
        receiveData=SBUF; //出去接收到的數(shù)據(jù)
        RI = 0;           //清除接收中斷標志位
        SBUF=receiveData; //將接收到的數(shù)據(jù)放入到發(fā)送寄存器
        while(!TI);                  //等待發(fā)送數(shù)據(jù)完成
        TI=0;                          //清除發(fā)送完成標志
}


就是搞不清楚這亂碼的情況,跪求大神

[img]file:///D:\Documents\Tencent Files\731888784\Image\C2C\TY~SRF[6%0`A0X7HVC1R)C6.png[/img]

[img]file:///D:\Documents\Tencent Files\731888784\Image\C2C\TY~SRF[6%0`A0X7HVC1R)C6.png[/img]




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:127023 發(fā)表于 2016-6-19 10:24 | 只看該作者
LZ已經(jīng)自行解決,仿真內(nèi)芯片晶振問題,開始內(nèi)部是設置24M,后來把它改成12MHZ后就好了,但是keil編譯時hex內(nèi)是默認24Mhz,就是不清楚為什么改成12MHZ就好了。有知道的大神回復一下,小弟心切想知道。
回復

使用道具 舉報

板凳
ID:110895 發(fā)表于 2016-6-19 17:32 | 只看該作者
你設置波特率加倍了。
回復

使用道具 舉報

地板
ID:127023 發(fā)表于 2016-6-19 18:47 來自手機 | 只看該作者
liuyimao485812 發(fā)表于 2016-6-19 17:32
你設置波特率加倍了。

你的意思是若PCON內(nèi)設置波特率加倍那么仿真時與hex相比芯片內(nèi) 晶振也要減小一倍?
回復

使用道具 舉報

5#
ID:110895 發(fā)表于 2016-6-21 06:10 | 只看該作者
對的,設置波特率為4800,加倍后,波特率就是9600了。
回復

使用道具 舉報

6#
ID:127023 發(fā)表于 2016-6-21 13:02 | 只看該作者
嗯謝謝懂了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表