www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 通訊規(guī)則:1:時(shí)鐘7.3728MHz/波特率9600/9個(gè)數(shù)據(jù)位/奇校驗(yàn)/1個(gè)停止位/硬件多機(jī)通訊功能/2:通訊連接采用硬件MAX485,雙向單工3:每個(gè)上行/下行的數(shù)據(jù)包的字節(jié)個(gè)數(shù)都是一樣的(通訊數(shù)據(jù)量) 4:每個(gè)上行/下行的數(shù)

通訊規(guī)則:
1:時(shí)鐘7.3728MHz/波特率9600/9個(gè)數(shù)據(jù)位/奇校驗(yàn)/1個(gè)停止位/硬件多機(jī)通訊功能/
2:通訊連接采用硬件MAX485,雙向單工
3:每個(gè)上行/下行的數(shù)據(jù)包的字節(jié)個(gè)數(shù)都是一樣的(通訊數(shù)據(jù)量)

4:每個(gè)上行/下行的數(shù)據(jù)包都采用CRC8校驗(yàn)
5:數(shù)據(jù)接收采用中斷+查詢的方式
6:總是由主機(jī)向從機(jī)發(fā)送一個(gè)數(shù)據(jù)包,從機(jī)收到數(shù)據(jù)包后向主機(jī)回復(fù)一個(gè)數(shù)據(jù)包
7:不管是主機(jī)還是從機(jī),如果收到的數(shù)據(jù)包有任何錯(cuò)誤,都將丟棄該數(shù)據(jù)包,等效于沒有接收
8:從機(jī)之間不能相互通訊,必須通過主機(jī)才能交換數(shù)據(jù)
9:無效地址是0,主機(jī)地址是1,從機(jī)地址是2.3.4......廣播地址是255
*/
#include
#include
#include
#include//CRC校驗(yàn)函數(shù)就在這個(gè)文件里面

#defineamount10//設(shè)定通訊數(shù)據(jù)量(包括1個(gè)地址幀,n個(gè)數(shù)據(jù)幀,1個(gè)校驗(yàn)幀)

unsignedcharsend[amount];//發(fā)件箱
unsignedcharinbox[amount];//收件箱
unsignedcharn=0;//記憶中斷次數(shù)

//--------------------------------------------------------------------
interrupt[12]Rxd_isr(void)//接收中斷
{
unsignedcharERROR=0;
if(UCSRA&4||UCSRA&16)ERROR=1;//奇偶效驗(yàn)錯(cuò)誤或者幀錯(cuò)誤就記錄下來
inbox[n]=UDR;//保存到收件箱
n++;//記憶中斷次數(shù)
if(ERROR)inbox[0]=0;//如果通訊有錯(cuò),收件箱的地址幀就標(biāo)記成無效地址0
}

//---------------------------------------------------------------------
voidmain(void)
{
usart_init();//串口初始化
UCSRA=0;//主機(jī)關(guān)閉地址篩選功能(多機(jī)通訊功能)
#asm("sei")//打開全局中斷
while(1)
{
//-------------與從機(jī)2對話,與其他從機(jī)對話與下面的程序類似-------------------
n=0;//中斷次數(shù)清0
inbox[0]=0;//收件箱地址清0
//請更新準(zhǔn)備發(fā)送的數(shù)據(jù)
//send[1]=?
//......
//send[n]=?
send[0]=2;//改變這個(gè)地址就可以實(shí)現(xiàn)與某個(gè)從機(jī)對話
send[amount-1]=crc8(send,amount-1);//計(jì)算發(fā)件箱的crc8校驗(yàn)碼
usart_out(send,amount);//將發(fā)件箱的數(shù)據(jù)send[]發(fā)送出去;

//等待,從機(jī)接收到數(shù)據(jù)后會回復(fù)數(shù)據(jù)的,如果是10個(gè)字節(jié)數(shù)據(jù)量,不能少于13ms!!!
//這個(gè)時(shí)間由人工計(jì)算,要考慮從機(jī)由于各種中斷延長回復(fù)時(shí)間的可能

delay_ms(15);

//if(n<3)如果接收到的數(shù)據(jù)還不到3個(gè),那么就是通訊線路故障

//如果收件箱已經(jīng)收到amount個(gè)數(shù)據(jù),并且crc8校驗(yàn)成功就...
if(n==amount&&inbox[amount-1]==crc8(inbox,amount-1))
{
if(inbox[0]==1)//如果收件箱地址幀屬于本機(jī)就運(yùn)行下面的測試代碼
{
DDRD.3=1;
PORTD.3=1;delay_ms(10);
PORTD.3=0;delay_ms(990);
}

if(inbox[0]==255)
{
//請?jiān)谶@里添加收到廣播數(shù)據(jù)的處理程序
}
}
}
}//end

---------------------------------------------------------------------------------
從機(jī)
---------------------------------------------------------------------------------
#include
#include
#include

#defineamount10//設(shè)定通訊數(shù)據(jù)量(包括1個(gè)地址幀,n個(gè)數(shù)據(jù)幀,1個(gè)校驗(yàn)幀)
#defineaddress2//請?jiān)谶@里設(shè)定本機(jī)地址

unsignedcharsend[amount];//發(fā)件箱
unsignedcharinbox[amount];//收件箱
unsignedcharn=0;//記憶中斷次數(shù)

interrupt[12]Rxd_isr(void)//接收中斷
{
unsignedcharERROR=0;
if(UCSRA&4||UCSRA&16)ERROR=1;//記錄奇偶效驗(yàn)錯(cuò)誤或者幀錯(cuò)誤
inbox[n]=UDR;//把接收到的數(shù)據(jù)保存到收件箱
n++;//記憶接收的次數(shù)
if(ERROR)//如果通訊有錯(cuò)....
{
n=0;//接收計(jì)數(shù)清0
inbox[0]=0;//把地址改為無效地址0
UCSRA|=0x01;//重新打開接收器的地址幀篩選功能
}

//如果地址匹配本機(jī)或者是廣播地址就關(guān)閉地址篩選(多機(jī)通訊)功能
if(inbox[0]==address||inbox[0]==255)UCSRA&=254;

if(n==amount)//接收到amount個(gè)數(shù)據(jù)以后...
{
n=0;//接收計(jì)數(shù)清0
UCSRA|=0x01;//重新打開接收器的地址幀篩選功能
if(inbox[amount-1]==crc8(inbox,amount-1))//如果crc8校驗(yàn)正確就...
{
if(inbox[0]==address)//如果地址匹配本機(jī)就回復(fù)數(shù)據(jù)
{
send[0]=1;//發(fā)件箱地址指向主機(jī)
send[amount-1]=crc8(send,amount-1);//產(chǎn)生發(fā)件箱的crc8校驗(yàn)碼
usart_out(send,amount);//發(fā)送發(fā)件箱的數(shù)據(jù)包send[]
//請?jiān)谶@里備份你的收件箱信息
}
if(inbox[0]==255)//如果是廣播地址就...
{
//請?jiān)谶@里添加你的代碼
//收到廣播數(shù)據(jù)請不要回復(fù)
}
}
}
}

voidmain(void)
{
usart_init();
#asm("sei")

while(1)
{
//send[1]=?
//......
//send[n]=?
};
}


---------------------------------------------------------------------------------
usart.h文件
---------------------------------------------------------------------------------
//波特率9600/9個(gè)數(shù)據(jù)位/1個(gè)停止位/奇校驗(yàn)/收發(fā)開啟/接收中斷
voidusart_init(void)
{
UCSRA=0x01;
UCSRB=0x9C;
UCSRC=http://www.pICavr.com/0xB6;
UBRRH=0x00;
UBRRL=47;

PORTD.4=0;//MAX485平時(shí)工作在接收狀態(tài)
DDRD.4=1;
}

//-----------------------------------------------------------
//從數(shù)組datas[]的首地址開始發(fā)送amount個(gè)數(shù)據(jù),其中第0個(gè)數(shù)據(jù)是地址幀,其他是數(shù)據(jù)幀
voidusart_out(unsignedchar*datas,unsignedcharn)
{
unsignedchari=0;
PORTD.4=1;//使MAX485處于發(fā)送狀態(tài)
while(i{
if(i==0)UCSRB|=1;elseUCSRB&=254;
UDR=*(datas+i);//裝載數(shù)據(jù)開始發(fā)送
while((UCSRA&64)==0);//等待發(fā)送結(jié)束
UCSRA|=64;//清除發(fā)送結(jié)束標(biāo)志
i++;//發(fā)送次數(shù)統(tǒng)計(jì)
}
PORTD.4=0;//使MAX485處于接收狀態(tài)
}

---------------------------------------------------------------------------------
crc8校驗(yàn)程序
---------------------------------------------------------------------------------
unsignedcharcrc8(unsignedchar*ptr,unsignedcharlen)
{
unsignedchari;
unsignedcharcrc=0;
while(len--!=0)
{
for(i=1;i!=0;i*=2)
{
if((crc&1)!=0){crc/=2;crc^=0x8C;}
elsecrc/=2;
if((*ptr&i)!=0)crc^=0x8C;
}
ptr++;
}
return(crc);
}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

在這篇文章中,小編將為大家?guī)韱纹瑱C(jī)的相關(guān)報(bào)道。如果你對本文即將要講解的內(nèi)容存在一定興趣,不妨繼續(xù)往下閱讀哦。

關(guān)鍵字: 單片機(jī) AVR PIC

7月25日消息,據(jù)媒體報(bào)道,SpaceX衛(wèi)星互聯(lián)網(wǎng)服務(wù)星鏈周四表示,其業(yè)務(wù)正在經(jīng)歷網(wǎng)絡(luò)故障。

關(guān)鍵字: 星鏈 通訊

上海2025年3月17日 /美通社/ -- 3月14日, "2025 英飛凌消費(fèi)、計(jì)算與通訊創(chuàng)新大會"(ICIC 2025,以下同)在深圳舉行。本屆大會匯聚600多位業(yè)界精英,就AI、機(jī)器人、邊緣計(jì)算、氮化鎵應(yīng)用等話題展...

關(guān)鍵字: 英飛凌 通訊 數(shù)據(jù)中心 氮化鎵

中山2025年3月6日 /美通社/ -- 2025年3月3-6日,領(lǐng)先的無線技術(shù)創(chuàng)新企業(yè)通宇通訊在巴塞羅那2025年世界移動通信大會(MWC)上發(fā)布了其開創(chuàng)性的MacroWiFi產(chǎn)品。這款新產(chǎn)品標(biāo)志著無線通信技術(shù)在大型戶...

關(guān)鍵字: MACRO Wi-Fi 通訊 世界移動通信大會

現(xiàn)代通訊電子設(shè)備的抗干擾測試己經(jīng)成為必須的測試項(xiàng)目,主要的干擾類型為噪聲干擾。在通信信道測試和電子對抗領(lǐng)域里,噪聲始終是聲始終是最基本、最常用的干擾源之一。

關(guān)鍵字: 通訊 電子設(shè)備

香港2024年10月31日 /美通社/ -- 2024年10月17日,2024 CAHK STAR Award(2024香港通訊業(yè)聯(lián)會非凡年獎(jiǎng))頒獎(jiǎng)典禮在香港圓滿落幕。中國電信國際榮獲"Best AI Appl...

關(guān)鍵字: 中國電信 ST AI 通訊

加利福尼亞州貝爾蒙特2024年10月21日 /美通社/ -- 全球領(lǐng)先的AI驅(qū)動的企業(yè)通訊解決方案提供商RingCentral, Inc.(紐約證券交易所代碼:RNG)宣布,Gartner已將RingCentral評為2...

關(guān)鍵字: CENTRAL 通信 GARTNER 通訊

隨著現(xiàn)代電子技術(shù)的發(fā)展,在通訊、雷達(dá)、宇航、電視廣播、遙控遙測和電子測量等使用領(lǐng)域,對信號源的頻率穩(wěn)定度、頻譜純度、范圍和輸出頻率提出了越來越高的要求。

關(guān)鍵字: 通訊 雷達(dá) 宇航

中國烏魯木齊2024年10月15日 /美通社/ -- 以"人工智能與媒體變革"為主題的第六屆世界媒體峰會14日上午在烏魯木齊開幕。 10月14日,新華通訊社社長傅華在第六屆世界媒體峰會上發(fā)言 來自...

關(guān)鍵字: 人工智能 人工智能技術(shù) 通訊 數(shù)字化

自動電壓調(diào)節(jié)器 (AVR) 用于通過補(bǔ)償輸入電壓的任何波動來調(diào)節(jié)供電電壓水平。AVR 也通常稱為電壓穩(wěn)定器,可用于許多工業(yè)和住宅應(yīng)用。例如,AVR 用于船舶發(fā)電機(jī)組、應(yīng)急電源和石油鉆井平臺,以在電力需求波動期間穩(wěn)定電壓水...

關(guān)鍵字: AVR 電壓調(diào)節(jié)
關(guān)閉