单片6机原理与接口技术(第9章).pptVIP

  • 5
  • 0
  • 约1.45万字
  • 约 141页
  • 2016-11-29 发布于湖南
  • 举报
单片6机原理与接口技术(第9章)

---延时子程序--- delay( ) { uint j; uchar k; for(j=0;j50000;j++) for(k=0;k10;k++); } ---主程序--- main( ) { SCON=0xf0; //串口工作于方式3,允许接收,SM2=1 PCON=0x80; //SMOD=1 TMOD=0x20;//T1作为波特率发生器 TH1=0xff; TL1=0xff; TR1=1; //启动T1 while(1) {while(!RI);//等待地址接收完毕 RI=0; //清除接收标志位 if(SBUF==ADDRESS) {SM2=0; //可以接收数据帧 SBUF=ADDRESS;//发送地址 while(!TI);//等待发送完毕 TI=0; //清除发送标志位 P1=0xf9; //显示地址信息 delay(); //延时 while(!RI);//等待地址接收完毕 RI=0; //清除接收标志位 P0=SBUF; //显示接收信息 delay(); //延时 SM2=1; //等待接收地址帧 P1=0xff; P0=0xff; //清除显示 } } } 以下为three_cpu_3.c源文件。 //---多机通信实验--- //---包含头文件--- #include reg51.h //---宏定义--- #define uchar unsigned char #define uint unsigned int #define ADDRESS 0x02 ---延时子程序--- delay( ) { uint j; uchar k; for(j=0;j50000;j++) for(k=0;k10;k++); } ---主程序--- main( ) { SCON=0xf0;//串口工作于方式3,允许接收,SM2=1 PCON=0x80;//SMOD=1 TMOD=0x20;//T1作为波特率发生器 TH1=0xff; TL1=0xff; TR1=1; //启动T1 while(1) {while(!RI);//等待地址接收完毕 RI=0; //清除接收标志位 if(SBUF==ADDRESS) {SM2=0; //可以接收数据帧 SBUF=ADDRESS;//发送地址 while(!TI);//等待发送完毕 TI=0; //清除发送标志位 P1=0xa4; //显示地址信息 delay(); //延时 while(!RI);//等待接收完毕 RI=0; //清除接收标志位 P0=SBUF; //显示接收信息 delay(); delay(); //延时 SM2=1; //等待接收地址帧 P1=0xff; P0=0xff; //清除显示 } } } 9.4.4.3 实验运行结果 从图9-29至图9-32可见双机通信实验运行结果。 图9-29 甲机发送地址帧,乙机接收地址帧后准备接收数据帧 图9-30 甲机发送数据帧,乙机接收 图9-31 甲机发送地址帧,丙机接收地址帧后准备接收数据帧 图9-32 甲机发送数据帧,丙机接收 9.4.2.3 实验运行结果 从图9-20和图9-21可以看到串口发送和接收信息的过程。 图9-20 发送信息显示 图9-21 发送接收信息显示 9.4.3 双机通信实验 该实验中,单片机的串口工作于方式1下,实现的功能是甲机和乙机实现通信。为此,将甲机串口的发送端和乙机串口的接收端连接;将甲机串口的接收端和乙机串口的发送端连接。 双机通信实验 为了便于观察实验结果,由甲机先发送“0”的显示码,乙机接收到之后,再发送“1”的显示码作为应答,甲机接收到之后,再发送“0”的显示码,如此循环下去。 9.4.3.1 硬件电路 双机通信实验的硬件电路见图9-22。 图9-22 双机通信实验的硬件电路 9.4.3.2 软件 在工

文档评论(0)

1亿VIP精品文档

相关文档