潇月2014 2022-09-19 15:28 采纳率: 0%
浏览 43
已结题

51单片机串口通信,无法实现通信

刚刚接触单片机串口通信,用串口调试助手,发送任何字母都没有任何反应,波特率设置的是9600

/****************串口通信****************/


#include <stdio.h>
#include <reg51.h>
#include <intrins.h>    //包含延时函数
#define uint unsigned int
#define uchar unsigned char
    
void SendData(uchar dat);
void UartInit(void);
void delay_ms(uint time2);
uchar re;

void main(){
    UartInit();
    EA = 1;            //打开总中断
    
    while(1)
    {
    SendData(re);
    delay_ms(50);
    
    }
}


//串口初始化,9600波特率
void UartInit(void)        //9600bps@22.1184MHz
{
    PCON &= 0x7F;        //波特率不倍速
    SCON = 0x50;        //8位数据,可变波特率,选择模式1
    //AUXR |= 0x40;        //定时器时钟1T模式
    //AUXR &= 0xFE;        //串口1选择定时器1为波特率发生器
    TMOD &= 0x0F;        //设置定时器模式
    TMOD |= 0x20;        //设置定时器模式
    TL1 = 0xB8;        //设置定时初始值
    TH1 = 0xB8;        //设置定时重载值
    ET1 = 0;        //禁止定时器%d中断
    TR1 = 1;        //定时器1开始计时
    ES = 1;            //打开串口中断
    
}


void SendData(uchar dat){
    
    SBUF=dat;        //发送数据
    while(!TI);
    TI=0;        //发送中断标志位置0

}




void UART() interrupt 4{        //串口中断号为4
    if(RI)
    {
    RI=0;        //清除接收中断标志
//    ES=0;        //关闭串口中断
    re=SBUF;    //接受数据
    
    }
   
}
/**********延时程序**************/
void Delay1us()        //@22.1184MHz     ,STC-ISP系统生成的延时函数
{
    unsigned char i;

    _nop_();
    i = 5;
    while (--i);
}
void delay_us(uint time1){        //封装的1us函数接口
    uint i;
    for(i=0;i<=time1;i--){
        Delay1us();
    }
}

void Delay1ms()        //@22.1184MHz    STC-ISP系统生成的延时函数
{
    unsigned char i, j;

    i = 29;
    j = 183;
    do
    {
        while (--j);
    } while (--i);
}
void delay_ms(uint time2){        //封装的1ms函数接口
    uint i;
    for(i=0;i<=time2;i--){
        Delay1ms();
    }
}
    
/**********************************/


这个是下载程序的截图:

img


这个是串口调试的截图:

img

  • 写回答

1条回答 默认 最新

  • qllaoda 2022-09-19 16:29
    关注

    串口调试助手用hex模式看看
    另外,确定一下烧写程序的时候设置的波特率。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月20日
  • 创建了问题 9月19日

悬赏问题

  • ¥20 指导如何跑通以下两个Github代码
  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀
  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题