#includereg52.h//包函8052内部资源的定义#defineucharunsignedchar#defineuintunsignedintunsignedchardat;//用于存储单片机接收发送缓冲寄存器SBUF里面的内容unsignedcharconstdofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xff,0xef};//显示段码值01234567unsignedcharcodeseg[]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7};//{0,1,2,3,4,5,6,7};//分别对应相应的数码管点亮,即位码sbitwela=P2^7;ucharbai,shi,ge;/********************延时子函数******************/voiddelay(unsignedintxms)//xms表示延时的秒数{unsignedinti,j;for(i=xms;i0;i--)for(j=113;j0;j--);}/*********************显示函数******************/voiddisplay(dat){bai=dat/100;shi=(dat%100)/10;ge=dat%10;wela=1;P0=dofly[bai];P2=seg[0];delay(3);//短暂延时wela=1;P0=dofly[shi];P2=seg[1];delay(3);//短暂延时wela=1;P0=dofly[ge];P2=seg[2];delay(3);//短暂延时}/*******串口初始化波特率9600方式一*********/voidInit_Com(void){TMOD=0x20;//定时自动重装8为PCON=0x00;SCON=0x50;TH1=0xFd;TL1=0xFd;TR1=1;}/********主程序********************/voidmain(){Init_Com();//串口初始化while(1){if(RI)//RI=1时申请中断,要求CPU取走数据。在任何工作方式中,该位必须由软件清0{dat=SBUF;//接收数据SBUF赋与datRI=0;//RI清零。SBUF=dat;//在原样把数据发送回去(接收数据为发送数据的ASCII码,如发送q显示为113)}display(dat);}}