485通信程序(51单片机).pdf
《485通信程序(51单片机).pdf》由会员分享,可在线阅读,更多相关《485通信程序(51单片机).pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、#include#include#define uchar unsigned char#define uintunsigned int/*通信命令*/#define _ACTIVE_ 0 x01/主机询问从机是否存在#define _GETDATA_ 0 x02/主机发送读设备请求#define _OK_0 x03/从机应答#define _STATUS_ 0 x04/从机发送设备状态信息#define _MAXSIZE0 x08/缓冲区长度#define _ERRLEN12/任何通信帧长度超过 12 则表示出错uchar dbufMAXSIZE;/该缓冲区用于保存设备状态信息uchar de
2、v;/该字节用于保存本机设备号sbit M_DE=P10;/驱动器使能,1 有效sbit M_RE=P11;/接收器使能,0 有效void get_status();/调用该函数获得设备状态信息,函数全码未给出void send_data(uchar type,uchar len,uchar*buf);/发送数据帧bitrecv_cmd(uchar*type);/接收主机命令,主机请求包含命令信息。void send_byte(uchar da);/该函数发送一帧数据中的一个字节,由send_data()函数调用void main()uchar type;uchar len;/*系统初始化*/
3、P1=0 xff;/读取本机设备号dev=(P12);TMOD=0 x20;/定时器 T1 使用方式 2TH1=250;TL1=250;TR1=1;/开始计时PCON=0 x80;/SMOD=1;SCON=0 x50;/工作方式 1,波特优选法 9600bps,允许接收ES=0;/关闭串品中断IT0=0;/外部中断 0 使有电平触发模式EX0=1;/开启外部中断 0EA=0;/开启总中断/*主程序流程*/while(1)if(recv_cmd(&type)=0)/发送帧错误或帧地址与本机地址不符,丢弃当前帧后返回continue;switch(type)case _ACTIVE_:/主机询问从
4、机是否存在send_data(_OK_,0,dbuf);/发送应答信息,这里的buf 的内容并未用到break;case _GETDATA_:/主机发送读设备请求len=strlen(dbuf);snd_data(_STATUS_,len,dbuf);/发送设备信息break;default:break;/命令类型错误,丢弃当前帧返回void READSTATUS()interrput 0 using 1/产生外部中断 0 时表示设备状态发生改变,该函数使用寄存器组 1get_status();/获得设备状态信息,并将其存入 dbuf 指向的存储区,数据最后一个字节置 0 表示数据结束/*该函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 485 通信 程序 51 单片机
限制150内