如题,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;
}