找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4684|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

請問如何用串口調(diào)試助手接收串口發(fā)送數(shù)據(jù)呢?串口調(diào)試助手顯示的結(jié)果很奇怪,求指點(diǎn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

把要傳送的數(shù)據(jù)給SBUF,但串口調(diào)試助手顯示的結(jié)果很奇怪:

這是我寫的程序:

#include <reg52.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int
        
void delay(uint z)//延時函數(shù)
{
        uint x,y;
        for(x=z;x>0;x--);
                for(y=110;y>0;y--);
}

void init()  //系統(tǒng)初始化
{
TMOD |=0X20;//定時器T1,方式2,波特率由PCON寄存器的SMOD決定
SCON=0x50; //REN RI TI,RI為0,TI為0
//串行口1方式1 SCON是串行口1的串行控制寄存器,REN為1,允許接收
PCON=0x00;//各工作方式波特率加倍
TH1=0xfD;//9600bps@11.0592
TL1=0xfD;
TR1=1; //定時器1中斷打開
EA=1;//cpu總中斷允許位,1為開放中斷
ES=1;// 1允許串行口中斷
}

void main()
{
        init();
  while(1)
        {
               
                SBUF=22;   //比如把22這個數(shù)據(jù)傳給SBUF
                        while(TI==0);
      {
                                         }                        //數(shù)據(jù)發(fā)送結(jié)束時TI自動置1
                        TI=0;
                        
                }
        }


void UART_1() interrupt 4
{
        //接收完緩沖數(shù)據(jù)后RI置1
        if(RI)//如果RI為1,即如果收到
        {
                RI=0; //RI置0
        }
}

請問程序哪里不對呢?應(yīng)該如何修改呢?謝謝大家
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:592807 發(fā)表于 2020-12-8 08:31 | 只看該作者
串口通信應(yīng)該是一樣的,你選擇文本顯示試試。

51hei截圖20201208082815.png (28.18 KB, 下載次數(shù): 127)

51hei截圖20201208082815.png

XCOM V2.0.rar

215.94 KB, 下載次數(shù): 6

回復(fù)

使用道具 舉報

板凳
ID:406879 發(fā)表于 2020-12-8 08:51 | 只看該作者
別用hex模式。。最好先用文本,,等熟悉了才hex
回復(fù)

使用道具 舉報

地板
ID:517466 發(fā)表于 2020-12-8 13:11 | 只看該作者
以下是我自己的程序中使用的串口輸出代碼,已經(jīng)實(shí)際測過,是OK的:
主函數(shù)中初始化串口:
        // 初始化串口
        SCON=0x50;
        TMOD|=0x20;
        TH1=TL1=0xFD;
        TR1=1;
       


// 串口輸出函數(shù):輸出一個字符       
void comchar(uchar dat) {
    SBUF=dat;
        while(!TI);
        TI=0;
}       

// 串口輸出函數(shù):輸出一個字符串
void comstr(uchar *dat) {
        uchar i=0;
        uchar temp;
        while(temp=dat[i++]) {
            comchar(temp);
        }
}

        // 需要串口輸出的時候調(diào)用函數(shù)
        // 串口輸出字符
        comchar('A');
        // 串口輸出字符串
        comstr("this is test.");
回復(fù)

使用道具 舉報

5#
ID:866258 發(fā)表于 2021-1-8 17:50 | 只看該作者
應(yīng)該是以數(shù)組為空作為結(jié)束判斷條件
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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