RS-485总线接口是一种常用的串口,具有网络连接方便、抗干扰性能好、传输距离远等优点。RS-485收发器采用平衡发送和差分接收,因此具有抑制共模干扰的能力,加上收发器具有高的灵敏度,能检测到低达200mv的电压,可靠通信的传输距离可达数千米。使用RS-485总线组网,只需一对双绞线就可实现多系统联网构成分布式系统、设备简单、价格低廉、通信距离长。

51单片机的485通信程序

#ifndef __485_C__ #define __485_C__

#include 《reg51.h》

#include 《string.h》

#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]; // 该缓冲区用于保存设备状态信息

uchar dev; // 该字节用于保存本机设备号

sbit M_DE = P1^0; // 驱动器使能,1有效

sbit M_RE = P1^1; // 接收器使能,0有效

void get_status(); // 调用该函数获得设备状态信息,函数代码未给出

void send_data(uchar type, uchar len, uchar *buf); // 发送数据帧

bit recv_cmd(uchar *type); // 接收主机命令,主机请求仅包含命令信息

void send_byte(uchar da); // 该函数发送一帧数据中的一个字节,由send_data()函数调用

void main() {

uchar type; uchar len;

/* 系统初始化 */

P1 = 0xff; // 读取本机设备号

dev = (P1》》2);

TMOD = 0x20; // 定时器T1使用工作方式2

TH1 = 250; // 设置初值

TL1 = 250;

TR1 = 1; // 开始计时

PCON = 0x80; // SMOD = 1

SCON = 0x50; // 工作方式1,波特率9600bps,允许接收

ES = 0; // 关闭串口中断

IT0 = 0; // 外部中断0使用电平触发模式 EX0 = 1; // 开启外部中断0 EA = 1; // 开启中断

/* 主程序流程 */

while(1) // 主循环 {

if(recv_cmd(&type) == 0) // 发生帧错误或帧地址与本机地址不符,丢弃当前帧后返回

conTInue; switch(type) {

case __ACTIVE_: // 主机询问从机是否存在

send_data(__OK_, 0, dbuf); // 发送应答信息,这里buf的内容并未用到

break;

case __GETDATA_: len = strlen(dbuf);

send_data(__STATUS_, len, dbuf); // 发送设备状态信息

break; default:

break; // 命令类型错误,丢弃当前帧后返回

}

}

}

void READSTATUS() interrupt 0 using 1 // 产生外部中断0时表示设备状态发生改变,该函数使用寄存器组1

{

get_status(); // 获得设备状态信息,并将其存入dbuf指向的存储区,数据最后一字节置0表示数据结束

}

/* 该函数接收一帧数据并进行检测,无论该帧是否错误,函数均会返回 * 函数参数type保存接收到的命令字

* 当接收到数据帧错误或其地址位不为0时(非主机发送帧),函数返回0,反之返回1 */

bit recv_cmd(uchar *type) {

bit db = 0; // 当接收到的上一个字节为0xdb时,该位置位

bit c0 = 0; // 当接收到的上一个字节为0xc0时,该位置位

uchar data_buf[__ERRLEN]; // 保存接收到的帧

php 485通讯协议 编程,485通讯协议程序怎么写(51单片机的485通信程序案例)相关推荐

  1. 51单片机串口通讯c语言程序,如何使用51单片机实现串口通信

    描述 STC51单片机一般带有1个串口,有的带有2个串口,串口一般用于下载程序和串口通信.串口通信特别适合控制设备,所以工控机的电脑上一般都带有串口. 51单片机的串口引脚为P3.0引脚与P3.1引脚 ...

  2. 51单片机c语言485通讯案例,485通讯协议程序怎么写(51单片机的485通信程序案例)...

    RS-485总线接口是一种常用的串口,具有网络连接方便.抗干扰性能好.传输距离远等优点.RS-485收发器采用平衡发送和差分接收,因此具有抑制共模干扰的能力,加上收发器具有高的灵敏度,能检测到低达20 ...

  3. 基于新塘51单片机的485通信

    基于新塘51单片机的485通信 序言 最近有一个项目用新塘的51FB9A单片机做时控开关(上位机控制)控制继电器,但是我原来也没整过485啊,本来以为这玩意很难.没想到才了一些坑之后还觉得挺简单的.这 ...

  4. 51单片机串行口程序c语言编程,单片机C语言编程串行口通讯.ppt

    单片机C语言编程串行口通讯 第7章 MCS-51单片机串行口 第7章 MCS-51单片机串行口 目 录 7.1 串行通信基本知识 7.2 串行口结构及控制 7.3 串行口工作方式 7.4 串行口应用举 ...

  5. pid控制器c51语言编程,51单片机电机pid控制系统程序

    51单片机电机pid控制系统程序 本程序来源网上,小编进行了简单修改,还未验证. /************************* 应用背景:直流电机的额定功率12V,额定转速3000rpm,光码 ...

  6. 8255编程c语言程序,51单片机8255驱动C程序

    /*-------------------------------------------------------------------------------------------------- ...

  7. 机械手编程用c语言,51单片机机械手控制C程序.doc

    51单片机机械手控制C程序 //包含所需头文件 #include #define uchar unsigned char /***************------宏定义------******** ...

  8. c51c语言编程的音乐程序,51单片机唱歌C51音乐程序.doc

    51单片机唱歌C51音乐程序 51单片机唱歌 C51音乐程序 unsigned char n 0; //n为节拍常数变量 unsigned char code music_tab[] 0x18, 0x ...

  9. c语言编程使蜂鸣器音乐,求: 用51单片机c语言操作使蜂鸣器奏出“祝你生日快乐”音乐的全部程序!...

    满意答案 yxy777li 推荐于 2017.10.05 采纳率:59%    等级:12 已帮助:8867人 #include sbit speaker=P1^2; unsigned char ti ...

  10. Visual C#TCP协议编程

    Visual C#TCP协议编程 Visual C# TCP协议编程基础 TCP协议层次结构 TCP协议规范 TCP协议相关类简介 TcpListener TcpClient NetworkStrea ...

最新文章

  1. .NET Core2.1下采用EFCore比较原生IOC、AspectCore、AutoFac之间的性能
  2. 达观数据分析平台架构和Hive实践
  3. hibernate3.4+struts1.3分页封装,有兴趣者可以看一下
  4. 给Macbook装系统的网址
  5. e-mobile帐号状态存在异常_Java 常见异常种类
  6. c语言链表qsort排序,排序链表最快的算法是什么?
  7. 基于Spring Cloud的微服务架构
  8. 一个RGB数据采集实例学习matlab_GUI界面设计
  9. ZipEntry压缩时中文文件名乱码解决办法
  10. 硬盘坏道数据如何恢复?如何知道硬盘是否坏道?
  11. 如何让你的程序员不要厌倦工作?
  12. 手机查看企业qq邮件服务器,QQ企业邮箱怎么用?手机QQ邮箱收发邮件的方法
  13. IB数学考试真题题型解析
  14. matlab省略,matlab的省略号
  15. Error launching IDEA解决方法
  16. iOS_基于百度地图的开发
  17. DBA在项目中的角色
  18. Z-Stack3.0协议栈组网
  19. 性能测试——基本性能监控系统使用
  20. eclipse+装android+studio,EclipseAndroid Studio安装教程

热门文章

  1. 计算机版本过低怎么办,浏览器版本过低嗡嗡叫怎么办_电脑显示浏览器版本过低嗡嗡叫如何处理-win7之家...
  2. WPF下CefSharp的使用
  3. 大牛直播SDK-Windows推送端使用说明
  4. c语言串口通信实验报告,单片机实验报告-串口实验
  5. 基于JavaWEB+MySQL的房屋租赁网站管理系统
  6. 大米云如何通过ssh连接云主机
  7. abaqus与python后处理_abaqus用Python批量后处理教程!如何从abaqus导出python
  8. 新宝资讯上证涨跌比:1131:649
  9. 分享CFA一级考试干货
  10. java实现的身份证照片脸部识别(头像截图) 以及OCR字体识别