欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 怎么設(shè)置151T單片機波特率為9600,大概就行 [打印本頁]

作者: 十點差三分    時間: 2021-10-22 10:39
標題: 怎么設(shè)置151T單片機波特率為9600,大概就行
打算使用一個HC-08的藍牙芯片,但感覺波特率設(shè)置的不對,我設(shè)置發(fā)送一個位的時間位9.6us,有沒有大佬解決一下,非常感謝

作者: 小貓電子    時間: 2021-10-22 13:28
晶振頻率是使用多少
作者: hz_dyg    時間: 2021-10-22 13:37
看數(shù)據(jù)手冊,串口模塊和對應(yīng)寄存器,別人教不會的!
作者: 十點差三分    時間: 2021-10-22 19:19
hz_dyg 發(fā)表于 2021-10-22 13:37
看數(shù)據(jù)手冊,串口模塊和對應(yīng)寄存器,別人教不會的!

大佬,你有沒有那個IAP15F2K61S2的手冊,我試過好多次,不是程序卡死就是無法發(fā)送數(shù)據(jù)
作者: 十點差三分    時間: 2021-10-22 19:22
hz_dyg 發(fā)表于 2021-10-22 13:37
看數(shù)據(jù)手冊,串口模塊和對應(yīng)寄存器,別人教不會的!

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;
    }
}
這個是我寫的部分程序,按道理應(yīng)該可以,但就是不行,特別是初始化的《SCON=0x50;》這,之前就是卡到這了,把這個注釋掉可以運行,但波特率不對
作者: wulin    時間: 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;                //設(shè)置定時器模式
        TMOD |= 0x20;                //設(shè)置定時器模式
        TL1 = 0xD9;                //設(shè)置定時初始值
        TH1 = 0xD9;                //設(shè)置定時重載值
        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;                //設(shè)置定時器模式
        TMOD |= 0x20;                //設(shè)置定時器模式
        TL1 = 0xDC;                //設(shè)置定時初始值
        TH1 = 0xDC;                //設(shè)置定時重載值
        ET1 = 0;                //禁止定時器1中斷
        TR1 = 1;                //定時器1開始計時
}

作者: 188610329    時間: 2021-10-22 20:33
你加4句,去掉2句,應(yīng)該就可以了

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;      <== 加一句這個
    }
}



作者: 十點差三分    時間: 2021-10-23 13:33
188610329 發(fā)表于 2021-10-22 20:33
你加4句,去掉2句,應(yīng)該就可以了

bit  Uart_Busy;

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




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