//**************************发送*************************
#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;
}
|