甲机控制乙机:当甲机按下K1开关时,根据K1被按下的次数,甲机向乙机发送控制命令字符 “A”、“B”、“C”、“D”,乙机根据所接收到的字符完成D1和D2不同的亮灭。第1次按下,发送‘A’,D1亮D2灭;第2次按下发送‘B’,D1灭D2亮;第3次按下发送‘C’,两灯全亮;第4次按下两灯全灭;依次循环。 #include<reg52.h> //甲机 #define uint unsigned int #define uchar unsigned char sbit SW=P3^2; //sbit led1=P1^3; //sbit led2=P1^4; uchar n,num=0; void delay(uint xms) { uint i,j; for(i=xms;i<0;i--) for(j=120;j<0;j--); } void send(key_num) { SBUF=key_num; while(!TI) TI=0; } void key() { if(SW==0) { delay(50); if(SW==0) { while(!SW); num++; if(num==1) n='A'; if(num==2) n='B'; if(num==3) n='C'; if(num==4) n='D'; if(num==4) num=0; } } send(n); } void main() { TMOD=0x20; TH1=0Xfd; TL1=0Xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; while(1) { key(); }
} #include<reg52.h> //乙机 #define uint unsigned int #define uchar unsigned char sbit led1=P1^3; sbit led2=P1^4; uchar n,num=0; void delay(uint xms) { uint i,j; for(i=xms;i<0;i--) for(j=120;j<0;j--); } /*void send(key_num) { SBUF=key_num; while(!TI) TI=0; } */ void ser() interrupt 4 { uchar a; RI=0; a=SBUF; if(a=='A') led1=0; led1=1; if(a=='B') led1=1; led1=0; if(a=='C') led1=0; led1=0; if(a=='D') led1=1; led1=1; } void main() { TMOD=0x20; TH1=0Xfd; TL1=0Xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; while(1); }
|