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

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 Pyqt 如何正确的关掉Qthread,并且释放其中的锁?
  • ¥30 网站服务器通过node.js部署了一个项目!前端访问失败
  • ¥15 WPS访问权限不足怎么解决
  • ¥15 java幂等控制问题
  • ¥15 海湾GST-DJ-N500
  • ¥15 氧化掩蔽层与注入条件关系
  • ¥15 Django DRF 如何反序列化得到Python对象类型数据
  • ¥15 多数据源与Hystrix的冲突
  • ¥15 如何在线硕士了解,广告太多,希望有真实接触过的人回答下?(标签-学习|关键词-在线硕士)
  • ¥15 zabbix6.4与frp如何进行联动