| //**************************发送*************************
#include <reg51.h>
unsigned char a;   
unsigned char b[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void init(void)
{
    SCON = 0x50;            // 串行口工作方式1,允许接收
    PCON = 0x00;            // 波特率不倍增
    TMOD = 0x20;            // 定时器1工作于8位自动重载模式, 用于产生波特率
    TH1 =0xf4 ;
    TL1 =0xf4;             // T1赋初值,11.0592M晶振,波特率2400
    TR1 = 1;                // 启动定时器1
 EA=1;
 ES=1;
}
void main(void)
{
 init();
 P1=0xff;
 a=P1&0x0f;
 SBUF=a;
}
void zd() interrupt 4   //当进入中断,要么RI=1,要么TI=1
{
 if(RI)
 {
  RI=0;
  a=SBUF;
  P2=b[a];
 
 }
 else TI=0;
}
//*********************接收*******************
#include <reg51.h>
unsigned char a;   
unsigned char b[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void init(void)
{
    SCON = 0x50;            // 串行口工作方式1,允许接收
    PCON = 0x00;            // 波特率不倍增
    TMOD = 0x20;            // 定时器1工作于8位自动重载模式, 用于产生波特率
    TH1 =0xf4 ;
    TL1 =0xf4;              // T1赋初值,波特率2400
    TR1 = 1;                // 启动定时器1
 EA=1;
 ES=1;
}
void main(void)
{
 init();
while(1)
{
P2=b[a];
}
 
}
void zd() interrupt 4
{
 if(RI)
 {
  RI=0;
  a=SBUF; 
  SBUF=a+1;  //加1后,在返回到主机
 }
 else TI=0;
}
 |