//任务名称:串行口实现双机通信 //任务内容: 通过串行口发送甲机开关状态 #include<reg51.h> void send(unsigned char stat) { SBUF=stat;//串行通信系统自动将8位数据拆字,并按照规定的速率,通过TXD接口一位接一位向外发送数据,直到将数据帧发完 while(TI==0);//等待 TI=0; } /*****串行通信初始化********/ void uart_init() { SCON=0X40; //串行口工作方式1.发送 TMOD=0x20;//T1定时器工作方式2 PCON=0x00;//波特率不倍增 TH1=0XFD;//波特率=9600,(11.0592Mhz) TL1=0XFD; TI=0;//清除发送标志 TR1=1;//启动定时器T1 } void main() { uart_init();//串行通信初始化 while(1) { send(P1);//不断发送开关值 } }
接收开关数据程序
//任务名称:串行口实现双机通信 //任务内容: 通过串行口发送甲机开关状态 #include<reg51.h> unsigned char stat; /***串行接收开关数据***/ void receive() { while(RI==0); stat=SBUF; RI=0; } /*****串行通信初始化********/ void uart_init() { SCON=0X50; //串行口工作方式1.允许 接收数据 TMOD=0x20;//T1定时器工作方式2 PCON=0x00;//波特率不倍增 TH1=0XFD;//波特率=9600,(11.0592Mhz) TL1=0XFD; RI=0;//清除接收标志 TR1=1;//启动定时器T1 } void main() { uart_init();//串行通信初始化 while(1) { receive();//接收开关数据 P1=stat;//根据接收数据点亮数码管 } }
原文:https://www.cnblogs.com/ssxblog/p/10884197.html