当前位置:首页 >> 信息与通信 >>

双机通讯参考资料


关于双单片机串口通讯的问题。 要求如下: 1,如果下位机的 P1.0 口输入低电平,就发出 0x01,上位机在自己的 P1.0 口输出高电平; 2,如果下位机的 P1.1 口输入低电平,就发出 0x03,上位机在自己的 P1.1 口输出高电平; 3,只有下位机两个口都变成高电平,才发送 0x07,上位机在 P1.0 和 P1.1 口都输出低电平。 悬赏分:10 - 解决时间:20

10-11-19 09:51 //----------------------------------------------------------最佳答案: 根据要求,绘制 PROTEUS 仿真电路图如下:

图片连接: http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/d9581a5108d990171238c244.html#IMG=d9581a510 图中的上位机,是完成串行接收、并根据收到的数据,输出高低电平。使用的程序如下: //================================================ #include <reg51.h> #define XTAL 11059200 // CPU 晶振频率

#define baudrate 9600 // 通信波特率 #define uchar unsigned char #define uint unsigned int sbit K1 = P1^0; sbit K2 = P1^1; // 定义端口

void init(void) { SCON = 0x50; // 设定串行口工作方式 PCON &= 0x00; // 波特率不倍增 TMOD = 0x20; // 定时器 1 工作于 8 位自动重载模式, 用于产生波特率 TH1 = (unsigned char)(256 - (XTAL / (32L * 12L * baudrate))); TL1 = (unsigned char)(256 - (XTAL / (32L * 12L * baudrate))); // T1 赋初值 TR1 = 1; // 启动定时器 1 IE = 0x00; // 禁止任何中断 // EA = 1; // 中断总允许 } //----------------------------------------------------------void main(void) { init(); while(1) { while(RI == 0); RI = 0; if (SBUF == 0x01) K1 = 1; if (SBUF == 0x03) K2 = 1; if (SBUF == 0x07) { K1 = 0; K2 = 0; } } } //================================================ 图中的下位机,要完成输入的检测,并发送不同的串行数据。使用的程序如下: //================================================ #include <reg51.h> #define #define #define #define XTAL 11059200 // CPU 晶振频率 baudrate 9600 // 通信波特率 uchar unsigned char uint unsigned int // 定义端口

sbit K1 = P1^0; sbit K2 = P1^1;

//----------------------------------------------------------void init(void) { SCON = 0x50; // 设定串行口工作方式 PCON &= 0x00; // 波特率不倍增 TMOD = 0x20; // 定时器 1 工作于 8 位自动重载模式, 用于产生波特率 TH1 = (unsigned char)(256 - (XTAL / (32L * 12L * baudrate))); TL1 = (unsigned char)(256 - (XTAL / (32L * 12L * baudrate))); // T1 赋初值 TR1 = 1; // 启动定时器 1 IE = 0x00; // 禁止任何中断 // EA = 1; // 中断总允许 } //----------------------------------------------------------void main(void) { bit T_1 = 0, T_2 = 0, T_3 = 0; init(); //-------------------------------------------------while(1) { if ((K1 == 0) && (T_1 == 0)) { T_1 = 1; T_3 = 0; SBUF = 0x01; while(TI == 0); TI = 0; } //------------------------------------if ((K2 == 0) && (T_2 == 0)) { T_2 = 1; T_3 = 0; SBUF = 0x03; while(TI == 0); TI = 0; } //------------------------------------if ((K1 == 1) && (K2 == 1) && (T_3 == 0)) { T_1 = 0; T_2 = 0; T_3 = 1; SBUF = 0x07; while(TI == 0); TI = 0; } } } //================================================

程序运行的画面,已经在插图中显示,符合楼主要求。 原题网址:http://zhidao.baidu.com/question/198788419.html?fr=im100008 提问者对于答案的评价:谢谢 太有帮助了!

双机(51 单片机)串行通信最基本的方法 2010-04-24 19:35 有网友求助双机串行通信的方法,做而论道以前曾经发表过这方面的博文,但是 当时没有配发电路图,不太好理解和仿制。 做而论道过去一直使用硬件的仿真器,在最近,把 PROTEUS 软件逐渐的熟悉起 来了,用这个“纸上谈兵”的东西,也有一定的好处,就是便于和没有硬件条件 的网友进行交流。 下面是一个最基本、最简单的串口通信电路,图中的两个单片机,使用同一个程 序,双机的硬件配置也完全相同。

图片链接: http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/719a2589b2501 aaca5c272ed.html 在程序控制下,本方拨码开关的信息,可以在对方的 LED 上显示。

编制软件时,使用了汇编语言,针对按键和串行通信,都采用了中断方式,这样 就可以取得最快的反应速度。 在实际的硬件实验中,双方都显得十分灵敏。 两个单片机,使用同一个程序,源代码如下: ;---------------------------------------ORG 0000H SJMP START ORG 0003H LJMP INT0_INT ORG 0023H LJMP UART_INT ;---------------------------------------START: MOV SP, #60H MOV SCON,#50H ;方式1,8-n-1 MOV TMOD,#20H MOV TH1, #0FDH ;波特率设置 MOV TL1, #0FDH ; 9600@11.0592MHz SETB TR1 SETB IT0 ;P3.2 下降沿触发中断 SETB EX0 SETB ES ;开放中断 SETB EA SJMP $ ;---------------------------------------INT0_INT: MOV P2, #0FFH MOV A, P2 ;读出的拨码开关信息 ; MOV P0, A ;调试的时候,可在本方显示,以证明中断正常 ; JB TI, $ MOV SBUF,A ;向串口发送 RETI ;---------------------------------------UART_INT: JB TI, _FA_ MOV A, SBUF ;读出串口收到的信息 MOV P0, A ;送到 P0 口进行显示 CLR RI RETI ;-------------------_FA_: CLR TI

RETI ;---------------------------------------END ;---------------------------------------做成了本实验,只是说明电路、软件基本上都可以正常工作。如果真正的用到实 际工作中,传输信息,还需要编制通信协议。 比如说想要传输四个数据字节, 那么在前面, 应该先发送一些字节, 来呼叫对方, 待对方正确回答了, 再向对方传送有效的数据, 最后再向对方传送一些校验信息, 等到收到对方的确认信息之后,一次通信,才算结束。


相关文章:
双机通讯
单片机双机通讯 5页 免费 双机通讯参考资料 6页 2财富值 串行双机通讯 3页 5财富值 CAN总线双机通讯 5页 2财富值 双机通讯实验 3页 1财富值 双机并行通讯程序...
实验 双机互联参考资料
实验 双机互联参考资料_计算机硬件及网络_IT/计算机_专业资料。同学们请注意:第...如选择国内著名即时通讯产品 QQ 的网站 www.qq.com 来测试。 (3)服务器、 ...
实验 双机互联参考资料
计算机网络实验报告_双机互... 7页 5财富值 实验三双机互连通信 3页 免费 双机...实验 双机互联参考资料 隐藏>> 同学们请注意:第一次实验名称叫双机互联 别写...
利用Socket实现双机通讯
16 计算机网络课程设计 利用 Socket 实现双机通讯网络上的两个程序通过一个双向的通讯连接实现数据的交换, 这个双向链路的一端称为 一个 Socket。Socket 通常用来...
双机串口通讯
百度文库 专业资料 工程科技 电子/电路双​机​...关键词:汇编语言 双机异步串口通讯 8251A 芯片 查询...《微机原理与接口技术》课程设计说明书 参考文献 [1...
51单片机实现双机通信(自己整理的)
51单片机实现双机通信(自己整理的)_信息与通信_工程科技_专业资料。左边 1 号机,右边 2 号机, ,功能实现 1 号机程序 #include<reg51.h> #define uint ...
利用Socket实现双机通信
利用Socket实现双机通信_工学_高等教育_教育专区。计算机网络课程设计报告简单双机...参考资料: 1.《计算机网络(第 5 版)》 严伟 潘爱民译,清华大学出版社 2.《...
双机间的串口双向通信_图文
构建主题思想,绘制电路图 代码实现 代码调试和文档资料 1 专题 业目 网络工程 双机间的串口双向通信 课程名称 共1周 主要参考资料 [1]张毅刚,彭喜元,姜守达,乔...
双机间的串口双向通信设计
双机间的串口双向通信 设计 完成期限 自 2014 年 12 月 22 日至 2015 年 ...北京:北京航空航天大学出版社, 1999 主要参考资料 [3] 何立民.单片机高级教程....
基于单片机的双机通信
基于单片机的双机通信_工学_高等教育_教育专区。本文...方面支持 Keil 和 MPLAB,里 面有大量的例子参考. ...经过课程设计,在查阅资料的过程中,学习了基于单片机...
更多相关标签:
单片机双机通信 | spi双机通信 | 双机通信 | stm32双机串口通信 | 单片机双机通信c程序 | 单片机双机串口通信 | 单片机双机通信程序 | stm32 spi双机通信 |