-
大小: 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
- 上一篇:安卓-妄撮-撕衣服-源代碼-無廣告
- 下一篇:精美的個人主頁網站源碼
評論
共有 條評論