/*******************************************************/ 
/*RS232接收显示实验                                                            */ 
/*目标器件:AT89S52                                                                   */ 
/*晶振:11.0592MHZ                                                                       */ 
/*编译环境:Keil                                                                   */ 
/*******************************************************/ 
 
#include "reg52.h"                 
 
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; 
 
unsigned char dat;                                //定义全局变量 
 
//串行口初始化程序 
void Init_Com(void) 
{ 
     TMOD = 0x20; 
     PCON = 0x00; 
     SCON = 0x50;                         
     TH1 = 0xFd; 
     TL1 = 0xFd; 
     TR1 = 1;                                 
} 
 
//LED数码管延时程序 
void delay(void) 
{ 
        int k; 
        for(k=0;k<600;k++); 
} 
 
//串行中断服务程序 
serial()interrupt 4 using 1 
{ 
        if(RI) 
        RI=0; 
        dat=SBUF; 
} 
 
//LED数码管显示程序 
void display(int k) 
{ 
        P2=0xef;                                                                //位选                         
        P0=tab[k/1000];                                                        //显示千位数字 
        delay();                                                                //延时 
        P2=0xdf;                                                                //位选 
        P0=tab[k%1000/100];                                                //显示百位数字 
        delay();                                                                //延时 
        P2=0xbf;                                                                //位选 
        P0=tab[k%100/10];                                                //显示十位数字 
        delay();                                                                //延时 
        P2=0x7f;                                                                //位选 
        P0=tab[k%10];                                                        //显示个位数字 
        delay();                                                                //延时 
        P2=0xff;                                                                //位选 
} 
 
//主程序 
void main() 
{    
           P2=0xff; 
          P0=0xff; 
        P1=0xff; 
        EA=1; 
        ES=1; 
           Init_Com(); 
           while(1) 
   { 
      display(dat);                                                        //显示数据 
   } 
} 
 
 
 
 
 
 |