<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于串口通信的單片機仿真和C語(yǔ)言開(kāi)發(fā)

基于串口通信的單片機仿真和C語(yǔ)言開(kāi)發(fā)

作者: 時(shí)間:2012-08-28 來(lái)源:網(wǎng)絡(luò ) 收藏

2. 選擇波特率發(fā)生器

選擇定時(shí)器1或定時(shí)器2 做為其波特率發(fā)生器。

3. 設置定時(shí)器工作方式

當選擇定時(shí)器1 做為波特率發(fā)生器時(shí),需設置其方式寄存器TMOD 為計數方式并選擇相應的工作方式(一般選擇方式2 以避免重裝定時(shí)器初值);當選擇定時(shí)器2 做為波特率發(fā)生器時(shí),需將T2CON 設置為波特率發(fā)生器工作方式。

4. 設置波特率參數

影響波特率的參數有二,一是特殊寄存器PCON 的SMOD 位,另一個(gè)是相應定時(shí)器初值。

5. 允許串行中斷

因在程序中我們一般采有中斷接收方式,故應設EA=1、ES=1.

6. 允許接收數據

設置 SCON 中的REN 為1.表示允許串行口接收數據。

7. 允許定時(shí)/計數器工作

此時(shí)開(kāi)啟定時(shí)/計數器,使其產(chǎn)生波特率8. 編寫(xiě)串行中斷服務(wù)程序。

當有數據到達時(shí),系統將自動(dòng)執行所編寫(xiě)的中斷服務(wù)程序。

9. 收/發(fā)相應數據

注意的是發(fā)送操作完成需將T1清零,接收工作完成后需將R1清零。

5.2 程序設計

5.2.1 主程序設計

主程序主要完成硬件初始化、子程序調用等功能。

1. 初始化。

首先調用 LCD 初始化程序,在LCD 上顯示數據RECEIVE:和TEMP is: *C.

然后調用中斷及初始化子程序程序,把接收數據單元RECDATA 清零。設置寄存器SCON 的SM0、SM1 位定義串口工作方式,選擇波特率發(fā)生器為定時(shí)器T1;設定定時(shí)器T1 工作方式為方式2;設置波特率參數為9600bps;允許串行中斷及總中斷;允許串口接收數據,定義REN=1;啟動(dòng)定時(shí)/計數器T1 工作,定義TR1=1.

2. 串口收發(fā)數據。

判斷串口成功接收數據標志位flag_uart 是否為0,若flag_uart 為0,表明串口未接收到數據,則繼續等待串口接收數據;若flag_uart 為1,表明串口成功接收或發(fā)送數據,進(jìn)入串口中斷服務(wù)子程序,接收數據,并將串口成功接收數據標志位flag_uart 清零,調用LCD 顯示接收數據子程序,在LCD 上顯示從串口接收到的數據,同時(shí)回傳溫度值給PC機顯示。主程序設計流程圖如圖5.1 所示。

圖 5.1 主程序流程圖
圖 5.1 主程序流程圖

5.2.2 串口中斷服務(wù)子程序

判斷串口發(fā)送標志位TI 是否為1,若TI 為1,則把數據從發(fā)給PC 機,并把TI清零,中斷子程序返回;若TI為0,表明RI=0,則把串口接收標志位RI清零,把串口接收緩沖器SBUF 中的數據寫(xiě)入串口接收數據單元RECDATA,再把該數據送到串口發(fā)送緩沖器SBUF 中,傳給PC 機,置串口成功接收數據標志位RECOKBIT 為1,表明串口成功接收發(fā)送數據,最后中斷子程序返回。串口收發(fā)數據中斷服務(wù)子程序設計流程圖如圖5.2 所示。

圖5.2 串口中斷服務(wù)子程序
圖5.2 串口中斷服務(wù)子程序



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>