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

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 串口通信传输字符的质量控制
  • ¥50 xslt如何让block撑满页面
  • ¥15 vs的显示无法启动IIS Express Web服务器,怎么解决?
  • ¥20 一个python博客项目的相关图例
  • ¥15 轮廓提取也提取不到,有没有别的方法,如何解决?
  • ¥50 Js和c++如何将含有图片的excel文件上传到后台服务器
  • ¥15 光电神经网络,FPGA
  • ¥20 通过防火墙出入站阻止游戏程序联网失效
  • ¥15 鼠标是可以在QT界面上移动的,但是热拔插鼠标无法移动了同时板子上是没问题的,如何解决?
  • ¥15 iframe嵌套显示问题