-
大小: 34.21 KB文件类型: .rar金币: 1下载: 0 次发布日期: 2024-10-04
- 语言: 其他
- 标签: MCGS 单片机 ATMEGA16 MODBUS-RTU
资源简介
MCGS与单片机通信,实现温度,AD,和红外数据的实时采集。
代码片段和文件信息
#include
#include
#include
#include “ds18b20.h“
#define uchar unsigned char
#define uint unsigned int
volatile uchar reve_datarenum=0mend=0nend=0adl=0adh=0;
volatile uchar a1=1a2=1a3=1a4=1a5=1a6=1a7=1a8=1a9=1;
void INT_Init();
#define BAUD 38400 //波特率38.4kbp/s
volatile uchar rx[7]={0x010x040x040x000x000x000x000x000x00};
uchar tx[30];
volatile uchar crcl=0x00crch=0x00;
uchar led=0xff;
void inti_uart(void)//uart 初始化
{
UBRRH = (F_CPU/BAUD/16-1)/256;
UBRRL = (F_CPU/BAUD/16-1)%256;
UCSRC = 0x86; //8bit data 1bit stop
UCSRB = (1< }
//发送字符
void send_char( uchar data )
{
/* 等待发送缓冲器为空 */
while ( !( UCSRA & (1< /* 将数据放入缓冲器,发送数据 */
UDR = data;
}
//发送字符串
void send_string(uchar *puchar mend)
{
uchar k=0;
for(k=0;k {
send_char(*p++);
}
}
void inti_port()
{
DDRA &= ~(_BV(PA0));
DDRB=0xff;
PORTB=0xff;
DDRC=0xff;
PORTC=0x00;
}
//CRC效验,将结果存储到CRCok变量中。
checkcrc(uchar *quchar nend)
{
uint wcrc=0xffff;
int j=0i=0;
for(i=0;i {
wcrc ^= *q++;
for(j=0;j<8;j++)
{
if(wcrc&1)
{
wcrc>>=1;
wcrc ^= 0xa001;
}
else
{
wcrc>>=1;
}
}
}
crcl = wcrc;
crch = wcrc>>8;
}
int main(void)
{
inti_uart();
inti_port();
INT_Init();
ADMUX=0X00;//外部参考电压,0 通道
ADCSRA |=_BV(ADEN)|_BV(ADIE)|_BV(ADPS2)|_BV (ADATE);//使能ADC中断允许自由模式 时钟: ck/16////自动触发
ADCSRA |=_BV(ADSC);//自由模式开始转换
sei();
while(1)
{
gettemp();
_delay_ms(1050);
}
}
SIGNAL(SIG_UART_RECV)
{
rx[renum++]=UDR;
if(renum==8 )
{
renum=0;
switch(rx[1])
{
case 0x01:
if(!rx[3])
{
tx[0]=rx[0];//leD灯
tx[1]=rx[1];
tx[2]=0x01;
DDRB=0X00;
tx[3]=PORTB;
DDRB=0XFF;
checkcrc(tx4);
tx[4]=crcl;
tx[5]=crch;
send_string(tx6);
break;
}
else
{
tx[0]=rx[0];//继电器和蜂鸣器
tx[1]=rx[1];
tx[2]=0x01;
DDRC=0X00;
tx[3]=PORTC;
tx[3]>>=7;
DDRC=0XFF;
checkcrc(tx4);
tx[4]=crcl;
tx[5]=crch;
send_string(tx6);
break;
}
/* case 0x02:
tx[0]=rx[0];
tx[1]=rx[1];
tx[2]=rx[5]<<1;
tx[3]=0x00;
tx[4]=teml;
tx[5]=0x00;
tx[6]=temh;
checkcrc(txnend=tx[2]+3);
tx[tx[2]+3]=crcl;
tx[tx[2]+4]=crch;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1672 2010-12-13 12:17 mcgs 通信\default\dep\uart.o.d
文件 1942 2010-10-23 21:57 mcgs 通信\default\Makefile
文件 13 2010-12-13 12:17 mcgs 通信\default\uart.eep
文件 13535 2010-12-13 12:17 mcgs 通信\default\uart.elf
文件 7402 2010-12-13 12:17 mcgs 通信\default\uart.hex
文件 62092 2010-12-13 12:17 mcgs 通信\default\uart.lss
文件 12967 2010-12-13 12:17 mcgs 通信\default\uart.map
文件 21532 2010-12-13 12:17 mcgs 通信\default\uart.o
文件 2235 2010-10-08 19:43 mcgs 通信\ds18b20.h
文件 3859 2010-12-13 12:31 mcgs 通信\uart.aps
文件 359 2010-12-13 12:31 mcgs 通信\uart.aws
文件 9845 2010-12-13 12:31 mcgs 通信\uart.c
目录 0 2011-08-15 09:01 mcgs 通信\default\dep
目录 0 2011-08-15 09:01 mcgs 通信\default
目录 0 2011-09-14 13:17 mcgs 通信
----------- --------- ---------- ----- ----
137453 15
- 上一篇:安卓-妄撮-撕衣服-源代码-无广告
- 下一篇:精美的个人主页网站源码
相关资源
- 基于proteus的单片机仿真--交通灯控制
- 带时间温度显示的室内灯光控制系统
- 单片机控制的步进电机正反转和加速
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- 基于89c51的数字钟
- atmega16硬件产生方波的程序
- DXP单片机常用的元件库
- 单片机控制74ls164程序
- 基于单片机交通灯设计
- 基于PIC单片机的万年历的设计
- PIC单片机延时计算器
- 51单片机频率计(很简单)
- 9s12单片机SPI功能代码
- AT89S ISP下载编程软件(串口)
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 8051单片机教程第二十七课:单片机几
- 8051单片机教程第二十六课:矩阵式键
- 适用于STC单片机和51单片机的SX1262驱动
- nRF24L01无线模块在单片机与FPGA上的应
- nRF24L01无线模块原理图和与5V单片机的
- 基于51单片机的计算器(C51编写,有
- 51单片机大量源码
- 单片机电子琴 数码管显示
- 单片机仿真软件proteus6.7免安装绿色版
- 基于SPCE061A单片机的图形液晶模块的驱
评论
共有 条评论