甲机
#include <reg51.h>
unsigned char temp,num;
void main(){
EX0=1;//外部中断位int0的中断允许位
IT0=1;//边沿触发方式
IT1=1;//边沿触发方式
EX1=1;//外部中断位int1的中断允许位
EA=1;//总中断
TMOD=0x20;//定时器工作方式1
TH1=0xfd;//同步时钟
TL1=0xfd;
SCON=0x50;//串口 方式1 允许接受
TR1=1;//开启定时器1
/*while(1){
//当按下按钮之后,开始发送数据
SBUF=P1;//发送的数据
while(TI==0);//TI可以发送数据 当TI可以发送数据 发送数据 发送完数据 归0
TI=0;
}*/
}
void reset() interrupt 2{
EX0=1;
SBUF=0x0a;
while(TI==0);TI=0;
}
void send() interrupt 0{
EX0=0;
temp=P1;
switch(temp){
case 0x7f: num=0x08;break;//0111 1111
case 0xbf: num=0x07;break;//1011 1111
case 0xdf: num=0x06;break;//1101 1111
case 0xef: num=0x05;break;//1110 1111
case 0xf7: num=0x04;break;//1111 0111
case 0xfb: num=0x03;break;
case 0xfd: num=0x02;break;
case 0xfe: num=0x01;break;
}
SBUF=num;
while(TI==0);TI=0;
}
乙机
#include <reg51.h>
unsigned char temp=0;
//unsigned char zt;
void main(){
EA=1;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
SCON=0x50;
TR1=1;
P2=0x0a;
while(1){
while(RI==0);
RI=0;
P2=SBUF;
}
/*while(1){
//当接收完毕后 恢复可以接收
while(RI==0);RI=0;
//按键按下是0 原本是1 所以取反、
//蓝色为0 红色为1
zt=~SBUF;
P0=zt;
}*/
}