欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

單片機IO口模仿UART串口通訊

為了讓人人充沛了解 UART 串口通訊的道理,我們先把 P3.0 和 P3.1 當做 IO 口來停止模仿實踐串口通訊的進程,道理搞懂后,我們再運用存放器設置裝備擺設完成串口通訊進程。
關(guān)于 UART 串口波特率,常用的值是 300、600、1200、2400、4800、9600、14400、19200、28800、38400、57600、115200 等速度。IO 口模仿 UART 串行通訊程序是一個復雜的演示程序,我們運用串口調(diào)試助手下發(fā)一個數(shù)據(jù),數(shù)據(jù)加 1 后,再主動前往。
串口調(diào)試助手,這里我們直接運用 STC-ISP 軟件自帶的串口調(diào)試助手,先把串口調(diào)試助手的運用給人人說一下,如圖 11-6 所示。第一步要選擇串口助手菜單,第二步選擇十六進制顯示,第三步選擇十六進制發(fā)送,第四步選擇 COM 口,這個 COM 口要和本人電腦裝備治理器里的誰人 COM 口分歧,波特率按我們程序設定好的選擇,我們程序中讓一個數(shù)據(jù)位繼續(xù)工夫是 1/9600 秒,那這個中央選擇波特率就是選 9600,校驗位選 N,數(shù)據(jù)位 8,中止位 1。

漳浦ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

單片機IO口模仿UART串口通訊
圖 11-6   串口調(diào)試助手表示圖


串口調(diào)試助手的本質(zhì)就是應用電腦上的 UART 通訊接口,發(fā)送數(shù)據(jù)給我們的單片機,也可以把我們的單片機發(fā)送的數(shù)據(jù)接納到這個調(diào)試助手界面上。
由于首次接觸通訊方面的技巧,所以我把前面的 IO 模仿串口通訊程序停止一下說明,人人可以邊看我的說明邊看程序,把底層道理先徹底弄懂。
變量界說局部就不必說了,直接看 main 主函數(shù)。起首是對通訊的波特率的設定,在這里我們設置裝備擺設的波特率是 9600,那么串口調(diào)試助手也得是 9600。設置裝備擺設波特率的時分,我們用的是準時器 T0 的形式 2。形式 2 中,不再是 TH0 代表高 8 位,TL0 代表低 8 位了,而只要TL0 在停止計數(shù),當 TL0 溢出后,不只僅會讓 TF0 變 1,并且還會將 TH0 中的內(nèi)容從新主動裝到 TL0 中。如許有一個益處,就是我們可以把想要的準時器初值提早存在 TH0 中,當 TL0溢出后,TH0 主動把初值就從新送入 TL0 了,全主動的,不需求程序中再給 TL0 從新賦值了,設置裝備擺設方法很復雜,人人可以本人看下程序而且盤算一下初值。
波特率設置好今后,翻開中綴,然后等候接納串口調(diào)試助手下發(fā)的數(shù)據(jù)。接納數(shù)據(jù)的時分,起首要停止低電平檢測 while (PIN_RXD),若沒有低電平則闡明沒無數(shù)據(jù),一旦檢測到低電平,就進入啟動接納函數(shù) StartRXD()。接納函數(shù)最開端啟動半個波特率周期,初學能夠這里不是很明確。人人回頭看一下我們的圖 11-2 里邊的串口數(shù)據(jù)表示圖,假如在數(shù)據(jù)位電平變更的時分去讀取,由于時序上的誤差以及旌旗燈號波動性的成績很輕易讀錯數(shù)據(jù),所以我們愿望在旌旗燈號最波動的時分去讀數(shù)據(jù)。除了旌旗燈號變更的誰人沿的地位外,其它地位都很波動,那么我們?nèi)缃窬蜕潭ㄔ陟浩鞜籼杻深^地位去讀取電平形態(tài),如許可以包管我們讀的必定是準確的。
一旦讀到了肇端旌旗燈號,我們就把以后形態(tài)設定成接納形態(tài),而且翻開準時器中綴,第一次是半個周期進入中綴后,對肇端位停止二次判別一下,確認一下肇端位是低電平,而不是一個攪擾旌旗燈號。今后每經(jīng)由 1/9600 秒進入一次中綴,而且把這個引腳的形態(tài)讀到 RxdBuf 里邊。等候接納終了之后,我們再把這個 RxdBuf 加 1,再經(jīng)過 TXD 引腳發(fā)送出去,異樣需求先發(fā)一位肇端位,然后發(fā) 8 個數(shù)據(jù)位,再發(fā)完畢位,發(fā)送終了后,程序運轉(zhuǎn)到 while (PIN_RXD),等候第二輪旌旗燈號接納的開端。

純文本復制
			#include <reg52.h> sbit PIN_RXD = P3^0; //接納引腳界說 sbit PIN_TXD = P3^1; //發(fā)送引腳界說 bit RxdOrTxd = 0; //指導以后形態(tài)為接納照樣發(fā)送 bit RxdEnd = 0; //接納完畢標記 bit TxdEnd = 0; //發(fā)送完畢標記 unsigned char RxdBuf = 0; //接納緩沖器 unsigned char TxdBuf = 0; //發(fā)送緩沖器 void ConfigUART(unsigned int baud); void StartTXD(unsigned char dat); void StartRXD(); void main(){ EA = 1; //開總中綴 ConfigUART(9600); while (1){ //設置裝備擺設波特率為 9600 while (PIN_RXD); //等候接納引腳呈現(xiàn)低電平,即肇端位 StartRXD(); //啟動接納 while (!RxdEnd); //等候接納完成 StartTXD(RxdBuf+1); //接納到的數(shù)據(jù)+1 后,發(fā)送歸去 while (!TxdEnd); //等候發(fā)送完成 } } /* 串口設置裝備擺設函數(shù),baud-通訊波特率 */ void ConfigUART(unsigned int baud){ TMOD &= 0xF0; //清零 T0 的掌握位 TMOD |= 0x02; //設置裝備擺設 T0 為形式 2 TH0 = 256 - (11059200/12)/baud; //盤算 T0 重載值 } /* 啟動串行接納 */ void StartRXD(){ TL0 = 256 - ((256-TH0)>>1); //接納啟動時的 T0 準時為半個波特率周期 ET0 = 1; //使能 T0 中綴 TR0 = 1; //啟動 T0 RxdEnd = 0; //清零接納完畢標記 RxdOrTxd = 0; //設置以后形態(tài)為接納 } /* 啟動串行發(fā)送,dat-待發(fā)送字節(jié)數(shù)據(jù) */ void StartTXD(unsigned char dat){ TxdBuf = dat; //待發(fā)送數(shù)據(jù)保管到發(fā)送緩沖器 TL0 = TH0; //T0 計數(shù)初值為重載值 ET0 = 1; //使能 T0 中綴 TR0 = 1; //啟動 T0 PIN_TXD = 0; //發(fā)送肇端位 TxdEnd = 0; //清零發(fā)送完畢標記 RxdOrTxd = 1; //設置以后形態(tài)為發(fā)送 } /* T0 中綴效勞函數(shù),處置串行發(fā)送和接納 */ void InterruptTimer0() interrupt 1{ static unsigned char cnt = 0; //位接納或發(fā)送計數(shù) if (RxdOrTxd){ //串行發(fā)送處置 cnt++; if (cnt <= 8){ //低位在先順次發(fā)送 8bit 數(shù)據(jù)位 PIN_TXD = TxdBuf & 0x01; TxdBuf >>= 1; }else if (cnt == 9){ //發(fā)送中止位 PIN_TXD = 1; }else{ //發(fā)送完畢 cnt = 0; //復位 bit 計數(shù)器 TR0 = 0; //封閉 T0 TxdEnd = 1; //置發(fā)送完畢標記 } }else{ //串行接納處置 if (cnt == 0){ //處置肇端位 if (!PIN_RXD){ //肇端位為 0 時,清零接納緩沖器,預備接納數(shù)據(jù)位 RxdBuf = 0; cnt++; } }else{ //肇端位不為 0 時,中斷接納 TR0 = 0; //封閉 T0 }else if (cnt <= 8){ //處置 8 位數(shù)據(jù)位 RxdBuf >>= 1; //低位在先,所以將之前接納的位向右移 //接納腳為 1 時,緩沖器最高地位 1, //而為 0 時不處置即仍堅持移位后的 0 if (PIN_RXD){ RxdBuf |= 0x80; } cnt++; }else{ //中止位處置 cnt = 0; //復位 bit 計數(shù)器 TR0 = 0; //封閉 T0 if (PIN_RXD){ //中止位為 1 時,方能以為數(shù)據(jù)無效 RxdEnd = 1; //置接納完畢標記 } } } }

新聞標題:單片機IO口模仿UART串口通訊
分享網(wǎng)址:http://chinadenli.net/article44/gesdee.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計公司微信小程序建站公司搜索引擎優(yōu)化軟件開發(fā)網(wǎng)頁設計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名