89s51多机通信程序(编辑修改稿)内容摘要:

= 0。 SBUF = addr。 //将地址送入 SBUF准备发送 while(!TI)。 //等待发送完毕 TI = 0。 //TI清 0准备发送下一数据 RI = 0。 while(!RI)。 //等待接收数据 temp = SBUF。 RI = 0。 //RI清 0为接受下一数据作准备 } } /**************************************************************** * 函数功能:主函数程序 * * 入口参数:无 * * 出口参数:无 *****************************************************************/ void main() { init_serial()。 //串口初始化 while(1) { send_data()。 //发送数据 } } 从机 1程序: include include /****************************************************************/ define addr 0x01 // 从机 1的地址 /**************************************************************** * 函数功能:串口初始化子程序 * * 入口参数:无 * * 出口参数:无 *****************************************************************/ void init_serial() { IE = 0x90。 //允许串口中断 TMOD = 0x20。 //定时器 T1使用工作方式 2 TH1 = TL1 = //4800波特率 TR1 = 1。 //启动定时器 SCON = 0xf0。 // 选择串口工作方式 3,允许接受数据 ,SM2 = 1 PCON = 0x00。 //波特率不加倍 } /*************************************************************** * 函数功能:接收主机发来的数据子程序 * * 入口参数:无 * * 出口参数:无 ***************************************************************/ void rev_data() { while(1) { while(!RI)。 //等待 RI置 1 if(RB8==1) //判断接受的是地址还是数据 { if (addr==SBUF) //如果 RB8=1,与本从机地址比较,判断是否为被寻从机 { RI = 0。 //RI清 0为接收下一帧数据做准备 TI = 0。 SBUF = addr。 //如果是被寻从机,则发送地址返回给从机 while(!TI)。 TI = 0。 /。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。