Lepha000 2023-12-03 16:37 采纳率: 0%
浏览 16
已结题

51单片机串口通信问题,未完成且要修改

如题,PC机通过串口调试助手发送“a”字符给51单片机,51单片机通过通过串口接收后并在数码管上显示字符对应的 ASCII码值;51单片机接收到字符后,每隔 500ms发送一个 “a”字符给 PC机,并通过串口调试助手显示出来,500ms定时采用T0定时器工作方式1中断方式实现;假设晶振频率为 11.0592MHz,波特率为4800bps,设置波特率加倍。已知部分程序如下:

#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;

u8 smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
u8 wx[]={0x00,0x04,0x08};
u8 x;

void delay(u16 i)
{
    while(i--);
}

void disp()
{
    P0=smg[x%10];
    P2=wx[0];
    delay(100);
    P0=smg[(x%100)/10];
    P2=wx[1];
    delay(100);
    P0=smg[x/100];
    P2=wx[2];
    delay(100);
}

void delay_500ms()
{
    u8 i;
    for(i=0;i<50;i++)
    {
      TH0=(65536-10000)/256;
      TL0=(65536-10000)%256;
        disp();
    }
}

void Uartinit()
{
    SCON=0x50;
    PCON=0x00;
    TMOD=0x21;
    TH1=0xFD;
    TL1=0xFD;
    TR1=1;
    EA=1;
    ES=1;
    REN=1;
}

void main()
{
    Uartinit();
    while(1)
    {
        delay_500ms();
    }
}

void Serinit() interrupt 4
{           
        x=SBUF;
    delay_500ms();
      if(RI)
        {
      SBUF=0x61;
        
        }
        RI=0;
        while(!TI);
        TI=0;
}

  • 写回答

12条回答 默认 最新

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月4日
  • 修改了问题 12月3日
  • 修改了问题 12月3日
  • 创建了问题 12月3日

悬赏问题

  • ¥15 网络科学导论,网络控制
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)