#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 使用电平触发模式
请浏览后下载,资料供参考,期待您的好评与关注!
- 1
- 2
- 3
前往页