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