资源简介
此程序是用C语言编写的一个51的程序。
作用是对MODBUS协议进行了实现,用的是ASCII方式,简明易懂。
共实现的1读线圈,2写单个线圈,3写多个线圈,4读寄存器,5写单个寄存器,6写多个寄存器这几个基本的功能,简明易懂,是一个绝佳的MODBUS协议程序。
传输基于最普通的串口通信,严格按照协议说明。
程序中还做和详尽的注解,本人水平有限,难免出错,贻笑大方,献丑了。
多多指教。。。。。。
代码片段和文件信息
#include “ds18b20.h“
/*********************************************************************************/
/*函数名称: delay_124
*输入参数: 共 1 个参数;
*输出参数: 共 0 个参数;
*返回值:
*需储存的参数: 共 0 个参数;
*功能介绍: 延时
*修改日志:
此延时函数针对的是12Mhz的晶振
delay_124(0):延时518us 误差:518-2*256=6
delay_124(1):延时7us
delay_124(10):延时25us 误差:25-20=5
delay_124(20):延时45us 误差:45-40=5
delay_124(100):延时205us 误差:205-200=5
delay_124(200):延时405us 误差:405-400=5
*[2010-12-14] Ver. 1.00
开始编写;2010-12-12
完成; 2010-12-12
/* */
/*********************************************************************************/
void delay_124(unsigned char i_124)
{
while(--i_124);
}
/*********************************************************************************/
/*函数名称: init18b20_124(void)
*输入参数: 共 0 个参数;
*输出参数: 共 0 个参数;
*返回值:
*需储存的参数: 共 0 个参数;
*功能介绍: 初始化18B20
*修改日志:
*[2010-12-14 ] Ver. 1.00
开始编写;2010-12-13
完成; 2010-12-13
/* */
/*********************************************************************************/
void init18b20_124(void)
{
DQ_124 = 1;
delay_124(1);
DQ_124 = 0; //拉低数据线,复位总线;
delay_124(255); //延时504us
DQ_124 = 1; //提升数据线;
delay_124(18); //延时32us;
while(DQ_124); //等待从器件器件应答信号;存在脉冲
delay_124(90); //延时128us;
DQ_124 = 1; //提升数据线,准备数据传输;
}
/*********************************************************************************/
/*函数名称: WR18b20_124(unsigned char cmd_124)
*输入参数: 共 0 个参数;
*输出参数: 共 0 个参数;
*返回值:
*需储存的参数: 共 0 个参数;
*功能介绍: 向18B20写入数据
*修改日志:
*[2010-12-14 ] Ver. 1.00
开始编写;2010-12-13
完成; 2010-12-13
/* */
/*********************************************************************************/
void WR18b20_124(unsigned char cmd_124)
{
unsigned char k_124;
for(k_124=0;k_124<8;k_124++)
{
if(cmd_124 & 0x01) //低位在前;
{
DQ_124 = 0;
delay_124(1);
DQ_124 = 1; //发送数据;
}
else
{
DQ_124 = 0;
delay_124(1);
}
delay_124(30); //延时64us等待从器件采样;
DQ_124 = 1; //拉高总线
delay_124(1);
cmd_124 >>= 1;
}
}
/*********************************************************************************/
/*函数名称: RD18b20_124(void)
*输入参数: 共 0 个参数;
*输出参数: 共 0 个参数;
*返回值:
*需储存的参数: 共 0 个参数;
*功能介绍: 由18B20读取数据
*修改日志:
*[2010-12-14 ] Ver.
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11014 2011-12-18 16:14 赖泊能modbus\bmp_pixel.h
文件 5186 2011-12-18 16:14 赖泊能modbus\ds18b20.c
文件 317 2011-12-18 16:14 赖泊能modbus\ds18b20.h
文件 8685 2012-04-26 23:36 赖泊能modbus\ds18b20.LST
文件 4641 2012-04-26 23:36 赖泊能modbus\ds18b20.OBJ
文件 2965 2011-12-27 11:10 赖泊能modbus\EEPROM.c
文件 557 2011-12-18 16:14 赖泊能modbus\EEPROM.h
文件 5257 2012-04-26 23:36 赖泊能modbus\EEPROM.LST
文件 4575 2012-04-26 23:36 赖泊能modbus\EEPROM.OBJ
文件 4913 2011-12-18 16:14 赖泊能modbus\english_6x8_pixel.h
文件 7416 2011-12-27 20:16 赖泊能modbus\main.c
文件 1133 2011-12-27 11:10 赖泊能modbus\main.h
文件 14053 2012-04-26 23:36 赖泊能modbus\main.LST
文件 15000 2012-04-26 23:36 赖泊能modbus\main.OBJ
文件 39986 2011-12-27 20:16 赖泊能modbus\modbus.c
文件 775 2011-12-18 16:14 赖泊能modbus\modbus.h
文件 77266 2012-04-26 23:36 赖泊能modbus\modbus.LST
文件 50299 2012-04-26 23:36 赖泊能modbus\modbus.OBJ
文件 73530 2012-04-26 23:36 赖泊能modbus\modbusasii2
文件 21725 2012-04-26 23:36 赖泊能modbus\modbusasii2.hex
文件 128 2012-04-26 23:36 赖泊能modbus\modbusasii2.lnp
文件 80902 2012-04-26 23:36 赖泊能modbus\modbusasii2.M51
文件 174 2012-05-06 22:56 赖泊能modbus\modbusasii2.plg
....... 62670 2012-05-06 22:09 赖泊能modbus\modbusasii2.uvopt
文件 14078 2011-12-18 16:15 赖泊能modbus\modbusasii2.uvproj
....... 62670 2012-05-05 22:05 赖泊能modbus\modbusasii2_uvopt.bak
文件 14574 2011-12-18 16:15 赖泊能modbus\modbusasii2_uvproj.bak
文件 16057 2011-12-27 19:32 赖泊能modbus\nokia_5110.c
文件 1237 2011-12-18 16:15 赖泊能modbus\nokia_5110.h
文件 24167 2012-04-26 23:36 赖泊能modbus\nokia_5110.LST
............此处省略9个文件信息
评论
共有 条评论