#include<reg51.h> //包含单片机寄存器的头文件
unsigned char dat;
/*****************************************************
函数功能:接收一个字节数据
***************************************************/
unsigned char Receive(void)
{
while(RI==0) //只要接收中断标志位RI没有被置“1”
; //等待,直至接收完毕(RI=1)
RI=0; //为了接收下一帧数据,需将RI清0
dat=SBUF; //将接收缓冲器中的数据存于dat
return dat;
}
void config_sgg() //操作程序
{
    switch(dat)
    {
        case 0:temp=0;break;
        case 1:temp=1;break;
        case 2:temp=2;break;
        case 3:temp=3;break;
        case 4:temp=4;break;
        case 5:temp=5;break;
        case 6:temp=6;break;
        case 7:temp=7;break;
    }
}
void disp_seg()//显示程序
{
    P0 = ~dat[temp/1000];
    P1 = C[1];
    delay(200);
    P0 = ~dat[temp/100];
    P1 = C[2];
    delay(200);
    P0 = ~dat[temp/10];
    P1 = C[3];
    delay(200);
    P0 = ~dat[temp];
    P1 = C[4];
    delay(200);
}
/*****************************************************
函数功能:主函数
***************************************************/
void main(void)
{
    TMOD=0x20; //定时器T1工作于方式2
    SCON=0x50; //SCON=0101 0000B,串口工作方式1,允许接收(REN=1)
    PCON=0x00; //PCON=0000 0000B,波特率9600
    TH1=0xfd; //根据规定给定时器T1赋初值
    TL1=0xfd; //根据规定给定时器T1赋初值
    TR1=1; //启动定时器T1
    REN=1; //允许接收
    while(1)
    {
        config_sgg();
        disp_seg();
    }
}