单片机串行通信(9 页)Good is good, but better carries it.精益求精,善益求善。45 甲机通过串口控制乙机 LED/*名称:甲机发送控制命令字符说明:甲单片机负责向外发送控制命令字符“A”、“B”、“C”,或者停止发送,乙机根据所接收到的字符完成 LED1 闪耀、LED2 闪耀、双闪耀、或停止闪耀。*/#include#define uchar unsigned char#define uint unsigned intsbit LED1=P0^0;sbit LED2=P0^3;sbit K1=P1^0;//延时void DelayMS(uint ms){uchar i;while(ms--) for(i=0;i<120;i++);}//向串口发送字符void Putc_to_SerialPort(uchar c){SBUF=c;while(TI==0);TI=0;}//主程序void main(){uchar Operation_No=0;SCON=0x40;//串口模式 1TMOD=0x20;//T1 工作模式 2PCON=0x00;//波特率不倍增TH1=0xfd;TL1=0xfd;TI=0;TR1=1;while(1){if(K1==0)//按下 K1 时选择操作代码 0,1,2,3{while(K1==0);Operation_No=(Operation_No+1)%4;}switch(Operation_No)//根据操作代码发送 A/B/C 或停止发送{case 0:LED1=LED2=1;break;case 1:Putc_to_SerialPort('A');LED1=~LED1;LED2=1;break;case 2:Putc_to_SerialPort('B');LED2=~LED2;LED1=1;break;case 3:Putc_to_SerialPort('C');LED1=~LED1;LED2=LED1;break;}DelayMS(100);}}/*名称:乙机程序接收甲机发送字符并完成相应动作说明:乙机接收到甲机发送的信号后,根据相应信号控制 LED 完成不同闪耀动作。*/#include#define uchar unsigned char#define uint unsigned intsbit LED1=P0^0;sbit LED2=P0^3;//延时void DelayMS(uint ms){uchar i;while(ms--) for(i=0;i<120;i++);}//主程序void main(){SCON=0x50;//串口模式 1,允许接收TMOD=0x20;//T1 工作模式 2PCON=0x00;//波特率不倍增TH1=0xfd;//波特率 9600TL1=0xfd;RI=0;TR1=1;LED1=LED2=1;while(1){if(RI) //如收到则 LED 闪耀{RI=0;switch(SBUF)//根据所收到的不同命令字符完成不同动作{case 'A':LED1=~LED1;LED2=1;break;//LED1 闪耀case 'B':LED2=~LED2;LED1=1;break;//LED2 闪耀case 'C':LED1=~LED1;LED2=LED1;//双闪耀}}else LED1=LED2=1;//关闭 LEDDelayMS(100);}}46 单片机之间双向通信/*名称:甲机串口程序说明:甲机向乙机发送控制命令字符,甲机同时接收乙机发送的数字,并显示在数码管上。*/#include#define uchar unsigned char#define uint ...