找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3029|回復: 7
打印 上一主題 下一主題
收起左側(cè)

怎么設置151T單片機波特率為9600,大概就行

[復制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:922838 發(fā)表于 2021-10-22 10:39 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
10黑幣
打算使用一個HC-08的藍牙芯片,但感覺波特率設置的不對,我設置發(fā)送一個位的時間位9.6us,有沒有大佬解決一下,非常感謝

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

使用道具 舉報

7#
ID:922838 發(fā)表于 2021-10-23 13:33 | 只看該作者
188610329 發(fā)表于 2021-10-22 20:33
你加4句,去掉2句,應該就可以了

bit  Uart_Busy;

非常感謝啊,已經(jīng)成功的試出來了
回復

使用道具 舉報

6#
ID:624769 發(fā)表于 2021-10-22 20:33 | 只看該作者
你加4句,去掉2句,應該就可以了

bit  Uart_Busy;         <== 全局變量 加一句這個

void SendOneByte(unsigned char c)
{
    while(Uart_Busy);         <== 加一句這個
    Uart_Busy = 1;             <== 加一句這個
    SBUF = c;
//        while(!TI);                            <==    你卡死在這里!。 把這兩句去掉
//        TI=0;
}
void Uart() interrupt 4
{
        uchar HC08JS;
    if(RI)
    {
        RI = 0;
        HC08JS = SBUF;
        string1(0xCA,HC08JS);
    }
    if(TI)
    {
        TI = 0;
        Uart_Busy = 0;      <== 加一句這個
    }
}


回復

使用道具 舉報

5#
ID:213173 發(fā)表于 2021-10-22 20:05 | 只看該作者
十點差三分 發(fā)表于 2021-10-22 19:22
void InitUART(void)
{
    TMOD = 0x20;

STC官方例程
void UartInit(void)                //9600bps@12.000MHz
{
        PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位數(shù)據(jù),可變波特率
        AUXR |= 0x40;                //定時器時鐘1T模式
        AUXR &= 0xFE;                //串口1選擇定時器1為波特率發(fā)生器
        TMOD &= 0x0F;                //設置定時器模式
        TMOD |= 0x20;                //設置定時器模式
        TL1 = 0xD9;                //設置定時初始值
        TH1 = 0xD9;                //設置定時重載值
        ET1 = 0;                //禁止定時器1中斷
        TR1 = 1;                //定時器1開始計時
}

void UartInit(void)                //9600bps@11.0592MHz
{
        PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位數(shù)據(jù),可變波特率
        AUXR |= 0x40;                //定時器時鐘1T模式
        AUXR &= 0xFE;                //串口1選擇定時器1為波特率發(fā)生器
        TMOD &= 0x0F;                //設置定時器模式
        TMOD |= 0x20;                //設置定時器模式
        TL1 = 0xDC;                //設置定時初始值
        TH1 = 0xDC;                //設置定時重載值
        ET1 = 0;                //禁止定時器1中斷
        TR1 = 1;                //定時器1開始計時
}
回復

使用道具 舉報

地板
ID:922838 發(fā)表于 2021-10-22 19:22 | 只看該作者
hz_dyg 發(fā)表于 2021-10-22 13:37
看數(shù)據(jù)手冊,串口模塊和對應寄存器,別人教不會的!

void InitUART(void)
{
    TMOD = 0x20;
    SCON = 0x50;
    TH1 = 0xD9;
    TL1 = 0xD9;
    PCON = 0x00;
    EA = 1;
    ES = 1;
    TR1 = 1;
}
void SendOneByte(unsigned char c)
{
    SBUF = c;
        while(!TI);
        TI=0;
}
void Uart() interrupt 4
{
        uchar HC08JS;
    if(RI)
    {
        RI = 0;
        HC08JS = SBUF;
        string1(0xCA,HC08JS);
    }
    if(TI)
    {
        TI = 0;
    }
}
這個是我寫的部分程序,按道理應該可以,但就是不行,特別是初始化的《SCON=0x50;》這,之前就是卡到這了,把這個注釋掉可以運行,但波特率不對
回復

使用道具 舉報

板凳
ID:922838 發(fā)表于 2021-10-22 19:19 | 只看該作者
hz_dyg 發(fā)表于 2021-10-22 13:37
看數(shù)據(jù)手冊,串口模塊和對應寄存器,別人教不會的!

大佬,你有沒有那個IAP15F2K61S2的手冊,我試過好多次,不是程序卡死就是無法發(fā)送數(shù)據(jù)
回復

使用道具 舉報

沙發(fā)
ID:298123 發(fā)表于 2021-10-22 13:37 | 只看該作者
看數(shù)據(jù)手冊,串口模塊和對應寄存器,別人教不會的!
回復

使用道具 舉報

樓主
ID:883698 發(fā)表于 2021-10-22 13:28 | 只看該作者
晶振頻率是使用多少
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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