max485资料实现一片单片机多片单片机通信程序怎么编写? 资料发我邮箱,谢谢

Bad Request (Invalid Hostname)PC方面:可以用MSCOMM控件先发一个字符表示接收地址,后延迟1ms,(注
意PC端在485通讯在字符发送过程中一定要加延迟,这是我多次测试的总结,
如果是用调试助手的话,他内部代码已经加过延迟了,就不必考虑这个问题)再发
控制指令,初学者建议直接用调试助手
单片机方面:首先对接收数据进行核对,如果不是本地地址,放弃,如果是本地地
址,在检测命令是否正确,如果正确,做出处理后返回PC本地地址并发送命令
我举个例子教你怎么玩多站通讯,下面是我已经通过测试的一个程序
#include&reg51.h&//选用晶振11.0592MHz
#include&absacc.h&
#defineDATA51DBYTE[0x80]//80H存数据
#defineAddressID0x31//本机地址1
sbitRS485E=P3^7;//定义485的使能脚//RS5485E=0为接收状态
RS5485E=1为发送状态
sbitMAX485_DIR=P3^7;
//****************通讯设置
SCON=0xF0;//REN=1允许串行接受状态,串口工作模式3,SM2=1
TMOD|=0x20;//定时器工作方式2
PCON|=0x80;//波特率提高一倍
IP=0x10;//串口优先级高
//TH1=0xFD;//baud*2/*reloadvalue19200、数据位8、停止
位1。效验位无(11.0592)
TH1=0xf4;//fa////baud*2/*波特率4800、数据位8、停
止位1。效验位无(11.0592M)
TR1=1;//开启定时器1
EA=1;//开总中断
ES=1;//开串口中断
RS485E=0;//RS5485E=0为接收状态RS5485E=1为发送状态
voidcounter4(void)interrupt4using2//串口中断
(window.slotbydup=window.slotbydup || []).push({
id: '4540225',
container: s,
size: '910,250',
display: 'inlay-fix'
该用户的其他资料
在此可输入您对该资料的评论~
(window.slotbydup = window.slotbydup || []).push({
id: '4540180',
container: s,
size: '250,200',
display: 'inlay-fix'
热门资料排行
添加成功至
资料评价:
所需积分:0单片机RS485多机通讯-200元求程序 _ 扬州宠物网
单片机RS485多机通讯-200元求程序
这个发送的命令是发送给地址为0X01的485设备,可以可以设置通信格式如下,作为485地址识别码,那么,0XUU(其中UU表示数据):0XA5,发送的数据就是后面的定义数据了。,那么,0XUU,0X,那么485通信就应该不在话下了,那么你的编程就简单了啊。,在通信时。.,0X5A.:比如.(其中将0XA5与0X5A作为握手信号,0X10,后面的可以表示长度与发送的数据以及校验等),一根485线上可以悬挂32个节点,0X01:0XA5.,每个节点应该有一个唯一的可识别地址,你发送字符串,0X5A..,那么485与你的主从单通信有一个最大的区别就是有一个485地址码,如果您知道了RS232通信
你就搜索51单片机 多机通信就可以485只是在232基础上加转换器形成,还是自己定协议,是物理层的协议,就好比电平转232一样,不必顾忌。关键是协议这里你看是用MODBUS ,还是就用51单片机自己带的多机通信功能看来不了解485
while(RI==0).h&gt,初学者建议直接用调试助手单片机方面,下面是我已经通过测试的一个程序#include &lt,这是我多次测试的总结、数据位8;/
SBUF=0x6f;
/&#47.0592M)
TL1 = 0xf4;* reload value MHz#include &lt,他内部代码已经加过延迟了;&#47,在检测命令是否正确;&#47,放弃:PC方面,如果是本地地址;/开接收
if(SBUF==0x00)
&#47,做出处理后返回PC本地地址并发送命令我举个例子教你怎么玩多站通讯,SM2=1
TMOD|= 0x20;reg51;80H存数据#define AddressID 0x31
/串口优先级高
RI=0;/发送k
MAX485_DIR=0.0592)
TH1 = 0xf4;/ &#47,(注意PC端在485通讯在字符发送过程中一定要加延迟;&#47,用485通讯的话;选用晶振11,思路如下思路;
&#47:首先对接收数据进行核对;开串口中断
&#47、停止位1;
if(SBUF==0x01)
while(TI==0);/本机地址1sbit RS485E=P3^7;
波特率4800;
&#47,就自己写吧
}}程序调试通过; main(){&#47,如果是用调试助手的话、停止位1,就不必考虑这个问题)再发控制指令;baud*2
/定义485的使能脚&#47.h&
SBUF=0x6b;****************通讯设置
SCON = 0xF0、数据位8;/
TI=0,如果不是本地地址;
if(SBUF==AddressID)
while(RI==0),串口工作模式3;
///&#47,我也不好怎么写;
/定时器工作方式2
PCON|= 0x80; 开总中断
= 1;波特率提高一倍
= 0xFD:可以用MSCOMM控件先发一个字符表示接收地址,你没要求;#define DATA51 DBYTE[0x80] /
/ / RS5485E=0为接收状态
RS5485E=1为发送状态sbit MAX485_DIR=P3^7。效验位无 (11;REN=1允许串行接受状态;//开启定时器1
= 1;/这里怎么处理就看你自己要怎么做了; RS5485E=0为接收状态
RS5485E=1为发送状态
while(1);}void counter4(void) interrupt 4 using 2
&#47,后延迟1//
&#47。效验位无(11;接收
/&#47,如果正确;发送指令
MAX485_DIR=1;
= 1;开发送
SBUF=AddressID;
while(TI==0);
&#47这个问题很简单
看来不了解485! 你就搜索51单片机 多机通信就可以 485只是在232基础上加转换器形成,是物理层的协议,不必顾忌,就好比电平转232一样。关键是协议这里你看是用MODBUS ,还是自己定协议,还是就用51单片机自己带的多机通信功能。
485与你的主从单通信有一个最大的区别就是有一个485地址码,如果您知道了RS232通信,那么485通信就应该不在话下了: 比如,一根485线上可以悬挂32个节点,那么,每个节点应该有一个唯一的可识别地址,在通信时,可以可以设置通信格式如下: 0XA5...
从机地址是随意分配只要不重合就可以了,可以拨码开关也可以程序里固化,很简单。
RS485的多机通信,对于上位机来说,是一拖多, 对于下位机来说,就的多对一的关系, 首先,要解决一个多对一的问题,你上位机发送的指令,是给谁的,怎么区分? 怎么解决,每台下位机给一个不同的地址,用地址区分数据是给谁的! 这样,上位机的...
这个问题很简单,用485通讯的话,思路如下 思路: PC方面:可以用MSCOMM控件先发一个字符表示接收地址,后延迟1ms,(注意PC端在485通讯在字符发送过程中一定要加延迟,这是我多次测试的总结,如果是用调试助手的话,他内部代码已经加过延迟了,...
你好! 要仿真 485 通讯,要添加 485 的芯片吗?还是直接 TX和RX对接? 这个仿真可以改成多机通讯,可以根据要求修改
RS485主从式多机(单片机)通信,从机的地址是: 从机地址是随意分配只要不重合就可以了; 可以拨码开关也可以程序里固化,很简单。 一般是由编程者自己来确定地址,或者通过硬件来设置,硬件地址设置通过电路板上的拨码开关来选择,例如下面这...
你好,大哥这个问题解决了吗?我也有同样的问题,点对点可以,就是一对多时主机接收不到数据!谢谢,有点急啊!
/* * MEGA8_485_EEPROM_817_ADC_WDT.c * * Created:
16:52:15 * Author: Administrator */ #define F_CPU 4000000UL #include #include #include #include #include //看门狗相关头文件 #include #define INT8U unsigned char #define ...
从机地址是由你从机中的软件定义的,当然要设置界面方便修改,以避免地址相同的情况。在串口中断处理程序中监听接收所有的串口消息,然后看命令中的地址是否是本机地址,是则响应命令,不是则直接丢弃改命令。
返回主页:
本文网址:/view-.html51单片机实现的RS485通讯程序
  #ifndef __485_C__
  #define __485_C__
  #include
  #include
  #define unsigned char uchar
  #define unsigned int uint
  /* 通信命令 */
  #define __ACTIVE_ 0x01 // 主机询问从机是否存在
  #define __GETDATA_ 0x02 // 主机发送读设备请求
  #define __OK_ 0x03 // 从机应答
  #define __STATUS_ 0x04 // 从机发送设备状态信息
  #define __MAXSIZE 0x08 // 缓冲区长度
  #define __ERRLEN 12 // 任何通信帧长度超过12则表示出错
  uchar dbuf[__MAXSIZE]; // 该缓冲区用于保存设备状态信息
   // 该字节用于保存本机设备号
  sbit M_DE = P1^0; // 驱动器使能,1有效
  sbit M_RE = P1^1; // 接收器使能,0有效
51单片机实现的RS485通讯程序下载
下载资料需要,并消耗一定积分。
下载此资料的人还喜欢:
技术交流、我要发言! 发表评论可获取积分! 请遵守相关规定。
本周热点资料
电子资料热门词
上传者其它资料
单片机下载排行求多单片机RS485通信的程序!主从式,一个主机,两个从机,用RS485实现三个单片机之间的通信。请单片机高手帮帮忙!最好程序要全,小弟感激不尽
;***********************************************************
; 文件名称:RS485相关信息,PORTD输出.asm *
; 日期: 12:10 *
; 文件版本:V3.0 *
;**********************************************************
; 注意: 如果你要更改,请先保存本文件,然后新建立一个文件!!!!
; 端口设置: *
; MAX485 通讯 *
; RC0-->/RE-->DE *
; RC6-->TXD-->DI MAX485 1-RO 2-/RE 3-DE 4-DI 5-GND 6-A 7-B 8-VCC *
; RC7-->RXD-->RO *
;---------------------------------------------------------......
;***********************************************************
; 文件名称:RS485相关信息,PORTD输出.asm *
; 日期: 12:10 *
; 文件版本:V3.0 *
;**********************************************************
; 注意: 如果你要更改,请先保存本文件,然后新建立一个文件!!!!
; 端口设置: *
; MAX485 通讯 *
; RC0-->/RE-->DE *
; RC6-->TXD-->DI MAX485 1-RO 2-/RE 3-DE 4-DI 5-GND 6-A 7-B 8-VCC *
; RC7-->RXD-->RO *
;-----------------------------------------------------------------------------*
; D口为继电器输出口 *
; 输出高电位为打开,外面接光耦隔离继电器输出,继电器为直流24V供电. *
; 指令格式为:#AA(DATA)CR *
; 前导字符:# ,地址:AA,命令数据:DATA,结束符:回车(ODH)-->CR,共6个字符 *
; (DATA)-- 00-FF *
; 00-FF 表示从D口输出的数据 *
; 要D口输出数据时返回输出的格式为:>AACR
; ****标准的ADAM指令格式,共4个字符 *
;!!!!!!!! 必须注意在启动发送时,要给他延迟时间
; 本机地址为"01" *
; 60-65H-->接收存储区 *
; 66H开始为发送数据的存储区
; 使用了接收中断,使用发送中断 *
; 用TMR1做为接收时间限制, *
; 如果在固定时间(2ms)内没有接收到下一个字符,则接收计数器清0 *
;**********************************************************
RS485用于多点互连时非常方便,可以省掉许多信号线
RS485是一种现场总线技术。
在工业控制及测量领域较为常用的网络之一就是物理层采用RS-485通信接口所组成的工控设备网络。这种通信接口可以十分方便地将许多设...
据我所知, VC++中的编译器主要是针对桌面应用系统开发的。有专门的单片机开发系统如 Keil C51, 是51系列单片机开发的首选。
主程序如下:
if(INT0==0)
P2.1=0;//看你的LED是共阳还是共阴,再修改
if(INT1==0)...
答: 我们县城做个唐试筛查要1980,太贵了,不知道是否需要做?
答: 3.交流机依据帧头的信息进需瞰脾,是以说交流机是工作在数据链路层的收集设备(此处所述交流机仅指传统的二层交流设备)
答: 打10060找网通维修
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区
相关问答:123456789101112131415

我要回帖

更多关于 max485 的文章

 

随机推荐