日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]關(guān)于51單片機(jī)串口多機(jī)通信的實(shí)現(xiàn)和編程。

一、51單片機(jī)的主從模式,首先要設(shè)定工作方式3:(主從模式+波特率可變)

SCON串口功能寄存器:SM0=1;SM1=1(工作方式3)

注:主機(jī)和從機(jī)都要為工作方式3。

【工作方式2 (SM0 SM1 :1 0):串行口為11位異步通信接口。發(fā)送或接收一幀信息包括1位起始位“0”、8位數(shù)據(jù)位、1位可編程位、1位停止位“1”。發(fā)送數(shù)據(jù):發(fā)送前,先根據(jù)通信協(xié)議由軟件設(shè)置TB8為“奇偶校驗(yàn)位”或“數(shù)據(jù)標(biāo)識位”,然后將要發(fā)送的數(shù)據(jù)寫入SBUF,即能啟動發(fā)送器。發(fā)送過程是由執(zhí)行任何一條以SBUF為目的寄存器的指令而啟動的,把8位數(shù)據(jù)裝入SBUF,同時(shí)還把TB8裝到發(fā)送移位寄存器的第9位上,然后從TXD(P3.1)端口輸出一幀數(shù)據(jù)。接收數(shù)據(jù):先置REN=1,使串行口為允許接收狀態(tài),同時(shí)還要將RI清“0”。然后再根據(jù)SM2的狀態(tài)和所接收到的RB8的狀態(tài)決定此串行口在信息到來后是否置R1=1,并申請中斷,通知CPU接收數(shù)據(jù)。當(dāng)SM2=0時(shí),不管RB8為“0”還是為“1”,都置RI=1,此串行口將接收發(fā)送來的信息。當(dāng)SM2=1時(shí),且RB8=1,表示在多機(jī)通信情況下,接收的信息為“地址幀”, 此時(shí)置RI=1,串行口將接收發(fā)來的地址。當(dāng)SM2=1時(shí),且RB8=0,表示在多機(jī)通信情況下,接收的信息為“數(shù)據(jù)幀”, 但不是發(fā)給本從機(jī)的,此時(shí)RI不置為“1”,因而SBUF中接收的數(shù)據(jù)幀將丟失。

工作方式3 (SM0 SM1 :1 1):為波特率可變的11位異步通信方式,除了波特率有所區(qū)別之外,其余方式都與方式2相同?!俊疽陨蟽?nèi)容摘自網(wǎng)絡(luò)】

二、主機(jī)的配置發(fā)送“地址”時(shí),把TB8設(shè)定為1,發(fā)送數(shù)據(jù)時(shí)TB8設(shè)定為0

(類似于:主機(jī) TB8=1發(fā)送的是地址,TB8=0發(fā)送的是數(shù)據(jù))

發(fā)送幀結(jié)構(gòu):

假設(shè)主機(jī)將發(fā)送“1234”給地址為1的從機(jī):調(diào)用函數(shù):TXdata(1,"1234$");

void TXdata(uchar addr,uchar *str)

{

TB8 = 1; //發(fā)送地址

SBUF = addr; //把地址發(fā)送出去

while(!TI); //判斷是否發(fā)送成功(發(fā)送成功后TI會置1,需手動清0)

TI = 0;

TB8 = 0; //發(fā)送數(shù)據(jù)

while(*str != '\0') //發(fā)送數(shù)組

{

SBUF = (*str);

while(!TI);

TI = 0;

str++;

}

}

三、從機(jī)配置

1. 從機(jī)接收時(shí),首先串口初始化時(shí),使SM2=1(接收地址模式,即只能接收到TB8=1的數(shù)據(jù),才觸發(fā)中斷),主機(jī)發(fā)送TB=0的數(shù)據(jù),被認(rèn)為是總線上的主機(jī)發(fā)送給別機(jī)的通信數(shù)據(jù),本機(jī)丟棄,不產(chǎn)生中斷。

2. 接收的地址與本機(jī)地址相符后,使SM2=0(接收數(shù)據(jù)模式,接收數(shù)據(jù)正常觸發(fā)中斷)

(類似于:從機(jī) SM2=1只接收地址,SM2=0只接收數(shù)據(jù))

void chuan() interrupt 4 //串口中斷服務(wù)函數(shù)

{

ES = 0; //關(guān)閉串口中斷

if(RI) //再次判斷,是否接收到數(shù)據(jù)(接收到數(shù)據(jù)后,RI會置1,需手動清0)

{

RXData = SBUF;

if(RXstart) //判斷是否接收到過本地址

{

if(RXData != '$') //判斷是否接收到 數(shù)據(jù)結(jié)束 標(biāo)志 $

{

temp[j] = RXData; //沒有接收到結(jié)束標(biāo)志,正常保存數(shù)據(jù)至數(shù)組

j++;

}

else //接收到 結(jié)束標(biāo)志 $

{

RXstart= 0; //本次接收結(jié)束

SM2 = 1; //重新 配置為:只接收地址 模式,下次發(fā)送TB8=1才中斷

j = 0;

}

}

if(RXData == 1) //判斷是否呼叫本機(jī),地址范圍:000 – 254(00 - FE)

{

RXstart = 1; //開始接收數(shù)據(jù)

SM2 = 0; //配置為:接收數(shù)據(jù) 模式

}

}

RI = 0; //清除接收標(biāo)志位

ES = 1; //重新開啟串口中斷

}

四、串口初始化配置

89S51、52、STC12Cxxx + 11.0592M晶振,9600bps

void UART_init()

{

TMOD = 0x20; //定時(shí)器1,工作方式2:8位、自動重裝

TH1 = 0xfd; //fd: 9600bps @ 11.0592M

TL1 = 0xfd; //e8: 1200bps @ 11.0592M

//f4: 2400bps @ 11.0592M

REN = 1; //允許串口接收

SM0 = 1;

SM1 = 1; //SM0和SM1:串口工作模式3,主從模式 + 波特率可變

SM2 = 1; //只接收地址(從機(jī)如此配置,主機(jī)不需要)

ES = 1; //開串口中斷

TR1 = 1; //啟動定時(shí)器1

EA = 1; //中斷 總開關(guān)

}

五、接線圖和注意事項(xiàng)

1、從機(jī)和從機(jī)之間通信,只能通過主機(jī)中轉(zhuǎn)。

2、各從機(jī)的TXD輸出不能設(shè)置為推挽輸出,要設(shè)置為開漏輸出。

3、通信總線不能過長,最好不超過2米。

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

本文中,小編將對PLC予以介紹,如果你想對它的詳細(xì)情況有所認(rèn)識,或者想要增進(jìn)對它的了解程度,不妨請看以下內(nèi)容哦。

關(guān)鍵字: PLC 編程

在下述的內(nèi)容中,小編將會對PLC的相關(guān)消息予以報(bào)道,如果PLC是您想要了解的焦點(diǎn)之一,不妨和小編共同閱讀這篇文章哦。

關(guān)鍵字: PLC 編程 模塊化

-Cognizant正在籌辦全球最大規(guī)模的氛圍編程活動,以提升數(shù)千名員工的AI素養(yǎng) 為抓住人工智能經(jīng)濟(jì)將創(chuàng)造的巨大機(jī)遇,Cognizant與Lovable、Windsurf、Cursor、Gemini Code Ass...

關(guān)鍵字: 編程 NI AN PI

上海 2025年6月23日 /美通社/ -- 日前,以"匯聚?連接?創(chuàng)造"為主題的2025世界移動通信大會(MWC)上海拉開帷幕。大會期間,愛立信專家圍繞"5G-A","...

關(guān)鍵字: 愛立信 編程 網(wǎng)絡(luò) AI

采用51單片機(jī)最小開發(fā)板,由8位自制獨(dú)立按鍵控制。單片機(jī)芯片為STC89C52RC,晶振為@12.000 mhz。8X8LED點(diǎn)陣屏模塊由MAX7219驅(qū)動,MAX7219包含一個(gè)自動掃描電路。你只需要把要顯示的數(shù)據(jù)發(fā)送...

關(guān)鍵字: 51單片機(jī) MAX7219 寄存器

北京2025年3月6日 /美通社/ -- 2025世界移動通信大會(MWC25)期間,愛立信的5G可編程網(wǎng)絡(luò)榮獲"GTI年度大獎(jiǎng)—移動技術(shù)創(chuàng)新突破獎(jiǎng)"。此次獲獎(jiǎng),標(biāo)志著愛立信的5G可編程網(wǎng)絡(luò)獲得了GT...

關(guān)鍵字: 網(wǎng)絡(luò) 愛立信 編程 TI

北京2025年3月4日 /美通社/ -- 日前,愛立信總裁兼首席執(zhí)行官鮑毅康(Börje Ekholm)在巴塞羅那舉行的2025年世界移動通信大會(MWC)上表示,移動連接將在實(shí)現(xiàn)人工智能(AI)和云技術(shù)能力方...

關(guān)鍵字: 愛立信 API AD 編程

上海2025年2月20日 /美通社/ -- 新品亮點(diǎn) 產(chǎn)品豐富:5個(gè)系列,9款產(chǎn)品,工作距離覆蓋300~3000mm 性能出眾:采集時(shí)間0.3s,不懼反光,精度最高0.03mm@300mm 應(yīng)用廣泛:支...

關(guān)鍵字: 3D視覺 相機(jī) 編程 機(jī)器人系統(tǒng)

在現(xiàn)代電子系統(tǒng)中,串口通信(UART/USART)是一種廣泛應(yīng)用的通信方式,尤其在微控制器(MCU)領(lǐng)域。STM32系列MCU以其高性能、低功耗和豐富的外設(shè)資源,成為許多嵌入式系統(tǒng)開發(fā)的首選。在某些情況下,硬件串口資源可...

關(guān)鍵字: STM32 串口通信

防御性編程是指一種預(yù)見代碼可能出現(xiàn)問題并提前采取措施來防止這些問題發(fā)生的編程風(fēng)格。在前端開發(fā)中,這尤其重要,因?yàn)槟愕拇a直接與用戶交互,任何錯(cuò)誤都可能導(dǎo)致糟糕的用戶體驗(yàn),甚至安全漏洞。

關(guān)鍵字: 代碼 編程
關(guān)閉