c51 单片机从串口接收发送字符串#include 〈reg52。h>#define uchar unsigned char#define uint unsigned intuchar data table[10]; //暂存数组,可以将 10 改为你需要的数值/***********************************************串行口初始化波特率 9600,定时器 1,工作方式 2 *************************************************/void serial_init(void){TMOD=0x20;//计时器 1 作为比特率发生器,方式 2TH1=0xfd;TL1=0xfd; //装入初值TR1=1;//计时中断允许SM0=0;SM1=1;//串行口工作于方式 2ES=1;//串行口中断允许REN=1;//接收允许EA=1;// 总中断允许}/********************* **************************串行口传送数据传送显示数组各字符给计算机*************************************************/void send(uchar *dis){while(*dis!='\0’){SBUF=*dis;dis++;while(!TI);TI=0; //软件请发送中断}}void main(){serial_init();//初始化while(SBUF!=0x0d);//计算机键盘按下回车键,则开始将接收到的数据回传给计算机send(table);}/***********************************************串行中断服务函数单片机接收数据,存入 table 数组*************************************************/void serial() interrupt 4{int i;ES=0; //关串口中断table[i++]=SBUF;//命令存到命令数组RI=0; //软件清除接收中断ES=1;//开串口中断}已经通过 proteus 仿真如下