找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1539|回復(fù): 2
收起左側(cè)

初學(xué)者請(qǐng)教:單片機(jī)串口接收數(shù)據(jù)錯(cuò)誤

[復(fù)制鏈接]
ID:997772 發(fā)表于 2021-12-28 12:31 | 顯示全部樓層 |閱讀模式
初學(xué)者請(qǐng)教:
         學(xué)習(xí)串口接收數(shù)據(jù),在網(wǎng)上下了一段代碼。運(yùn)行出現(xiàn)幾個(gè)錯(cuò)誤。請(qǐng)指教-------------!

#include "main.h"
#include "mcu_uart.h"
uchar UartRxBuffer[ 64 ] = { 0 }; //uart串口接收數(shù)據(jù)
volatile uchar        RX_Cnt = 0; //接收計(jì)數(shù)
bit TX_Busy = 0;  //發(fā)送忙標(biāo)志

void uart_init()
{
    SCON = 0x50;//設(shè)置串口工作方式1
    TMOD = 0x20;//設(shè)置計(jì)數(shù)器工作方式2
    PCON = 0x00;//即SMOD=0,波特率不加倍
    TH1 = 0xFD;//計(jì)數(shù)器初值,波特率是9600,晶振11.0592MHz
    TL1 = 0xFD;
    ES = 1;//打開(kāi)接收中斷
    EA = 1;//打開(kāi)總中斷
                REN = 1;
    TR1 = 1;//打開(kāi)計(jì)數(shù)器
}

void main()
{
        uart_init();
        while(1);
}

void UART_INT (void) interrupt 4
{
        if(RI)
        {
                RI = 0;
                UartRxBuffer[RX_Cnt] = SBUF;
                RX_Cnt++;
        }
        if(TI)
        {
                TI = 0;
                TX_Busy = 0;
        }
}

uchar uart_rx_string( uchar* RxBuffer )
{
        uchar rxLength = 0;
        uint uartRxTimOut = 0x7FFF;

        while( uartRxTimOut-- )
        {
                if( 0 != RI )
                {
                        RI = 0;
                        *RxBuffer = SBUF;
                        RxBuffer++;
                        rxLength++;
                        uartRxTimOut = 0x7FFF;
                }
        }
        return rxLength;
}

運(yùn)行問(wèn)題如下:
第一次循環(huán):1-到32行,點(diǎn)擊發(fā)送。2-到31行,(錯(cuò)誤1)RI應(yīng)當(dāng)為0,但仍然為1。3-到32行,(錯(cuò)誤2)UartRxBuffer[0]=1,應(yīng)當(dāng)=c?

第一次循環(huán).jpg

第二次循環(huán):1-到31行,(錯(cuò)誤3)RI應(yīng)當(dāng)為0,但仍然為1。2-到32行,(錯(cuò)誤4)UartRxBuffer[0]=0x0A,沒(méi)有字符?

第二次循環(huán).jpg

第三次循環(huán):1-到31行,RI=0正確。2-到32行,(錯(cuò)誤5)UartRxBuffer[0]=0x0A,仍然沒(méi)有字符?

第三次循環(huán).jpg


回復(fù)

使用道具 舉報(bào)

ID:997772 發(fā)表于 2021-12-28 12:33 | 顯示全部樓層
本帖最后由 zubajie2179 于 2021-12-28 12:36 編輯

補(bǔ)了一張圖
第一次循環(huán).jpg
回復(fù)

使用道具 舉報(bào)

ID:57657 發(fā)表于 2021-12-28 18:01 | 顯示全部樓層
頭文件 main.h、mcu_uart.h 里的內(nèi)容貼出來(lái)看看。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

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

快速回復(fù) 返回頂部 返回列表