51单片机双机通信

供稿:hz-xin.com     日期:2025-01-14
51单片机怎么双机通信

你好!!
单片机双机通讯,就是直接单片机的串口RX和TX直接连接,然后通过串口命令完成通讯!
给你一个实例,可以完全满足你的要求!
希望帮到你,满意请采纳!


晕,先收3个,再发3个不就好了吗?中断中处理就可以了啊,给你点样子,自己去改下,波特率什么的自己处理吧,很快的
void COUNTER_com(void) interrupt 4 //主机接收程序
{
ucharx *EMS_agree;
uchar a;
uint b;
REC_ADDRESS //EMS_agree首地址初始化

//=======================接收数据中断 =====================================
if(RI){ ES=0; //如果数据输入 串行中断暂时禁止 32字节xdata接收缓冲区

do{
while(!RI); //接受指令
{if(b == 50000){ ES = 1; return; } b++; } //延时保护
b = 0;
(*EMS_agree) = SBUF;
RI =0;
EMS_agree++; //累加地址
if(EMS_agree > 0x0084 ){ES = 1;return;} //32字节;如果超过最大默认字节 侧退出
}while(SBUF != 0x04);

//=====================================================================
// 多机通讯主机程序
//zhuji.c
//writer:谷雨 2008年3月22日于EDA实验室
//注:主机先发送地址,接收到应答后,再发送数据
//=====================================================================#include<reg52.h>#define addr1 0x31 //从机1地址
#define addr2 0x32 //从机2地址unsigned char xx[10];
unsigned char p = 0;void delay_1ms(unsigned int i)
{
unsigned char j;
while ((i--)!=0) {for (j=0;j<125;j++);}
}
void Uart_Init(void)
{
TMOD = 0x20; //定时器T1使用工作方式2
TH1 = 0XF3; TL1 = 0XF3; PCON = 0x00; //SMOD=1;
SCON = 0xf0; //工作方式3,9位数据位,波特率9600bit/s,允许接收
SM2 = 0;
TR1 = 1; //开始计时

EA = 1; //中断允许
ES = 1; //串行中断允许}
void Serial_INT() interrupt 4
{
if(!RI) return; ES = 0;
RI = 0;
xx[p] = SBUF;
p++;
ES = 1;
}
void send_addr(unsigned char addr) //发送地址
{
p = 0;
TB8 = 1; //发送地址帧
SBUF=addr; //发送地址
while(!TI); //等待发送完毕
TI=0; //软件复位TI
}
void send_data(unsigned char ddata) //发送数据
{
TB8=0; //发送数据帧
SBUF=ddata; //发送数据
while(!TI);
TI=0; //软件复位TI
}void main()
{
Uart_Init();
delay_1ms(2000);
while(1)
{
send_addr(addr1); //向从机1发地址
send_data(0x33);
send_data(0x01); delay_1ms(500);
if(xx[9]=='0') P1=0xaa; delay_1ms(500); send_addr(addr2); //向从机2发地址
send_data(0x33);
send_data(0x01); delay_1ms(500);
if(xx[9]=='9') P1=0x55; delay_1ms(500);
}
// while(1);
} //=====================================================================
// 多机通讯从机1程序
//cong1.c
//writer:谷雨 2008年3月22日于EDA实验室
//注:
//=====================================================================
#include<reg52.h>
#define addr 0x31 //从机1地址unsigned char receive;
unsigned char xx[ ]={"1234567890"};void Uart_Init(void)
{
TMOD = 0x20; //定时器T1使用工作方式2
TH1 = 0XF3; TL1 = 0XF3; PCON = 0x00; //SMOD=1;
SCON = 0xf0; //工作方式3,9位数据位,波特率9600bit/s,允许接收 TR1 = 1; //开始计时

EA = 1; //中断允许
ES = 1; //串行中断允许}void Serial_INT() interrupt 4
{
if(!RI) return;
RI=0;
if(RB8==1)
{
if(SBUF==addr) SM2=0;
else SM2=1;
}
if(RB8==0) receive=SBUF;
}void SendOneByte(unsigned char c)
{
TB8=0;
SBUF = c;
while(!TI);
TI = 0;
}
void SendListChar(unsigned char *DData,unsigned char Ef)
{
unsigned char L=0; if(Ef!=0)
{
for( ;L<Ef;L++) //显示有效长度
SendOneByte(DData[L]); //发送单个字符
}else
while (DData[L]!='\0') //发送至字串结束
{
SendOneByte(DData[L]); //发送单个字符
L++; //下一个字符
}
}void main()
{
Uart_Init();

while(1)
{
switch(receive)
{
case 0xff:
break;
case 0x01: //在此可以写入要完成的动作,最多可完成256个动作
SendListChar(xx,0);
break;
case 0x02:
break;
case 0x33:
P1=!P1; //为方便其间,赋值给P1口,测P1口电平来检测该程序
break;
default:
break;
}
receive=0xff;
}
}

想了解哪方面的问题其实双机通信很容易的设置好波特率写好接收发送中断就可以了基本上就这两方面.你想了解哪方面的

等答案……

单片机多机通信
单片机之间的多机通信方式1是通过双机串行连接,当SM0、SM1配置为01时,串口进入方式1,利用TXD和RXD脚进行数据传输。这种方式支持10位帧,包括1位起始位、8位数据位和1位停止位,数据按最低位先发送或接收。波特率可通过公式确定,其中SMOD位影响频率。发送时,先写入数据到SBUF,然后串口以方式1发送...

单片机双机串行通信能否只用一根导线直接连接单片机1的txd和单片机2的r...
不过,如果你只需要单片机2简单地反馈一个信号给单片机1的话,用软件做也可设计成双机通信的,举个例子:当单片机2接收到一个数据后,就马上将rxd引脚电平接低,这样单片机1读出txd引脚为低电平表示对方已收到信号。

51单片机双机通信最远距离能有多远
单片机双机通信有很多模式,距离也是不一样的。UART-TTL1-2米,速率1M以内,有线连接,3条线(RXD-TXD、TXD-RXD、GND),串行全双工。SPI1米以内,速率10M以内,有线连接,5条线(含共地),主从模式双工。315M\/2.4G无线模块,速率100K以内,无线连接,可靠距离通常在50-100米,半双工。借助于公共...

单片机工作在双机通信模式2时各寄存器如何设置
串行通信寄存器、发送\/接收数据寄存器等。1、串行通信寄存器:设置波特率、数据位、停止位和奇偶校验等参数,确保两个单片机以相同的速率和格式进行通信。2、发送\/接收数据寄存器:在发送模式下,将待发送的数据写入发送数据寄存器;在接收模式下,从接收数据寄存器读取已接收的数据。

51单片机双机RS232串口通信硬件怎么连?
这些都不需要了。把单片机1的TXD接单片机2的RXD,把单片机1的RXD接单片机2的TXD,同一个电路,地是相通的。MAX232,DB9之类的都不需要。

单片机双机通信直接要接电阻吗
不需要。两个单片机串口通讯需要将Rx和Tx连接,其中间不需要外接电阻或电容等,因此不需要接电阻。

单片机进行双机数据通信时,在线路连接上有什么特点?
MCS一51单片机的另一个特点是在内部有一个全双工的串行接口。在程序的控制下,串行口有4种工作方式。用户可根据需要将它设定为移位寄存器方式,以扩充I/O接口和外接同步输入、输出设备;或用做异步通信接口,以实现双机或多机通信。因此,单片机能极为方便地组成分布式控制系统。5.独立的位处理器 在单...

51单片机双机通讯物理接线有什么要求(芯片引脚怎么连接)?
51单片机双机通讯,如果双机距离超过了1米,就要采用RS232接口,这是常用的串口通信方式,物理接线可采用3线连接即可,距离超过10米时应采用双芯屏蔽线。距离小于1米时,属于实验性的临时串口通信,两个单片机的RXD,TXD引脚交叉连接就行,需要共地,用普通的3条导线连接。

多机通信与双机通信有何区别?
51单片机具有多机通信的功能,可实现一台主机于多台从机的通信。多机通信充分利用了单片机内部的多机通信控制位SM2。当从机SM2=1时,从机只接收主机发出的 地址帧(第九位为1),对数据帧(第九位为0)不予理睬;而当SM2=0时,可接收主机发送过来的所有信息。多机通信的过程如下:(1)所有从机SM2均...

在单片机的串口通信中,双机通信与单机通信有什么不同?
在单片机的串口通信中,有双机通信,却没有单机通信,你给自己打电话怎么打?要通信,至少要有两个单片机。两个单片机互相通信叫双机通信。另一种应该是多机通信,在多机通信模式下,通常是一个主机发送,多个从机接收。就好比,一个老师在讲课\/发送,很多的学生在听课\/接收,学生也想发送\/发言答题,一...