AVR单片机modbus通信源代码
更新时间:2023-05-21 18:35:01 阅读量: 实用文档 文档下载
AVR单片机modbus通信源代码
//-----单片机MODBUS通讯-----//
#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#pragma interrupt_handler uart_rx:12
#pragma interrupt_handler miao:9
/* CRC 高位字节值表 */
const uchar auchCRCHi[] = {
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40
} ;
/* CRC低位字节值表*/
const uchar auchCRCLo[]={
0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,
0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,
0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,
0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,
0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,
0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,
0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,
0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,
0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,
0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,
0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,
0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,
0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,
0xA5, 0x65, 0x64, 0xA4, 0x6C,
0xAC, 0xAD, 0x6D, 0xAF, 0x6F,
0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,
0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0
AVR单片机modbus通信源代码
xBE, 0x7E,
0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,
0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,
0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,
0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,
0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,
0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,
0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,
0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,
0x43, 0x83, 0x41, 0x81, 0x80, 0x40
};
#define mclk 16000000
uchar client_id=0x00; //广播通信
uchar rdata[],recslot=0,flag;
uchar modbus_time;
uint crc_16(uchar *puchMsg, uchar usDataLen)
{
uchar uchCRCHi=0xFF; // 高CRC字节初始化
uchar uchCRCLo=0xFF; //低CRC 字节初始化
ulong uIndex; //CRC循环中的索引
while (usDataLen--) //传输消息缓冲区
{
uIndex = uchCRCHi ^ *puchMsg++ ; // 计算CRC
uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex] ;
uchCRCLo = auchCRCLo[uIndex] ;
}
return (uchCRCHi << 8 | uchCRCLo) ;
}
void delay(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<22800;j++);
}
}
void uart_int(ulong baud)
{
UCSRB=0x00;
UCSRA=0x00; //控制寄存器清零
baud=mclk/16/baud-1; //波特率最大为65K
UBRRL=baud;
UBRRH=baud>>8; //设置波特率
UCSRA|=0X01; //多处理器通信模式
UCSRB=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE); //接收、发送使能,接收中断使能
UCSRC=(1<<URSEL)|(0<<UPM0)|(3<<UCSZ0); //选择UCSRC,异步模式,禁止,8位数据
DDRD|=0X04; //
//配置TX为输出(很重要)
PORTD|=0X04;//使能485接受
}
//----------------1ms----down--------------
void timer_int(void)
{
TCNT1H=0Xfe; //定计数寄存器初值设计 先写高8位
TCNT1L=0X0b; //定计数寄存器初值设计 再写低8位
TCCR1B=0X02; //定时1ms
TIMSK|=BIT(2); //定时计数器1中断屏蔽寄存器设计 第二位 TOIE1 定时溢出中断使能
}
void miao(void)
{
modbus_time++;
TCNT1H=0Xfe; //定计数寄存器初值设计 先写高8位
TCNT1L=0X0b; //定计数寄存器初值设计 再写低8位
}
//----------------1ms----up--------------
//----------接受函数-----------
void uart_rx(void)
{
uchar d;
d=UDR;
if((modbus_time>4)&&(d==client_id))
{
UCSRA&=0Xfe;
recslot=0;
rdata[recslot++]=d;
modbus_time=0;
}
if(recslot)
{
rdata[recslot++]=d;
if(recslot>=10)
{
modbus_time=0;
UCSRA|=0X01;
flag=1;
}
else
modbus_time=0;
}
}
//----------接受函数-------
----
void main(void)
{
uchar k;
uart_int(9600);
timer_int();
SREG|=BIT(7); //开总中断
DDRA=0XFF;
while(1)
{
if(flag)
{
PORTA=rdata[
AVR单片机modbus通信源代码
k];
}
}
}
正在阅读:
AVR单片机modbus通信源代码05-21
太阳生病了作文300字06-14
垃圾清运合同协议02-01
深圳市恒通橡胶制品(深圳)有限公司生产安全事故应急预案备案稿 (05-19
第二章 民法的渊源与适用08-17
人口与计划生育条例03-23
数字化教学解决方案 - 图文03-13
青光眼病人忌用的药03-15
21105作业规程05-21
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 单片机
- 源代码
- 通信
- modbus
- AVR
- 当前中小型货代公司战略转型的途径探讨
- 2014年东北财经大学西方经济学,复试笔试真题、考研真题、考研参考书,复试笔记、复试参考书
- 网页设计第二章 网页基本内容设计
- 中财会计学考研:备考心得体会
- 批发 电子监管总结
- 关于企业社会责任问题的分析
- 安徽公务员考试资料分析练习1
- ocpp-j-1.6-specification
- 小学四年级数学教师个人发展规划
- 基于温度、电流自动控制的半导体激光器稳频技术研究
- 冬天苗木保护措施
- 2016年中国人民大学国民经济学考博辅导班真题3
- 40米T梁预应力张拉作业指导书
- 选修5第1章第3节有机物的命名(第2课时)
- 有效设问,激发语文课堂教学的正能量
- 旧制度母体中的启蒙——读托克维尔《旧制度与大革命》
- 西门子S7-300教程_第1章
- 民间剪纸艺术在后现代服装设计中的应用研究
- 小学英语单词识记教学研究课题报告
- 人大法学考研真题之法律史部分