久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
基于89C51單片機串口通信程序的設計
[打印本頁]
作者:
51黑科技
時間:
2016-2-4 04:07
標題:
基于89C51單片機串口通信程序的設計
MCS-51系列單片機上有一個通用異步接收/發送器UART,通過引腳RXD[P3.O]和TXD[P3.1]可與外音B電路進行全雙工的串行異步通信,發送數據時由TXD端送出,接收時數據由RXD端輸入。本文將具體介紹單片機串口的特點和編程方法,并且在最后給出一個實用的單片機與計算機通過串口通信的程序。
串行接口的基本特點
MCS-51單片機的串行端口有4種基本工作方式,通過編程設置,可以使其工作在任一方式,以滿足不同場合的需要。其中方式0主要用于外接移位寄存器,以擴展單片機的I/O電路;工作方式1多用于雙機之間或與外設電路的通信;方式2、3除有方式1的功能外,還可以作多機通信,以構成分布式多微機系統。
串行端口有兩個控制寄存器SCON、PCON,用于設置工作方式、發送或接收的狀態、特征位、數據傳送波特率[每秒傳送的位數]以及作為中斷標志等。
串行端口有一個數據寄存器SBUF[在特殊功能寄存器中的字節地址為99H],該寄存器為發送和接收所共用。發送時,只寫不讀;接收時,只讀不寫。在一定條件下,向SBuF寫入數據就啟動了發送過程;讀SBuF就啟動了接收過程。
串行端口的波特率可以用程序來控制。在不同工作方式中,由時鐘振蕩頻率的分頻值或由定時器T1的定時溢出時間確定,使用十分方便靈活。
串口控制寄存器
1. 特殊功能寄存器SCON
它用于定義串行口的工作方式及實施接收和發送控制。字節地址為98H,其各位定義如下表:
SM0、SM1:串行口工作方式選擇位,其定義如下:
SM2:多機通訊控制位,僅用于方式2和方式3。當發送數據時SM2必須有軟件設置為1;接收數據時,如果SM2=1只有接收到的第9位數據為1時,RI才置位;如果SM2=0只要接收第9位數據,RI就置位。
REN:接收允許控制位。由軟件置位(REN=1)才允許接收,又由軟件清O(REN=0)來禁止接收。
TB8:是要發送數據的第9位。在方式2或方式3中,要發送的第9位數據,根據需要由軟件置1或清0。例如。可約定作為奇偶校驗位,或在多機通訊中作為區別地址幀或數據幀的標志位。
RB8:接收到的數據的第9位。在方式0中不使用RB8。在方式1中,若(SM2)=O,RB8為接收到的停止位。在方式2或方式3中,RB8為接收到的第9位數據。
TI:發送中斷標志。發送數據前必須軟件清0,發送過程中TI一直為0,當發送完一幀數據后,由硬件自動置1。如果要再發送,必須用軟件再清0。在編寫串行通信程序的時候,可以使用軟件查詢TI的方法獲得數據是否已發送完畢。
RI:接收中斷標志位。接收數據前必須軟件清0,接收過程中RI一直為0,當接收完一幀數據后,由硬件自動置1。如果要再接收,必須用軟件再清0。在編寫串行通信程序的時候,可以使用軟件查詢RI的方法獲得數據是否已接收完畢。
2. 特殊功能寄存器PCON
PCON的字節地址為87H,它的第7位SMOD是與串口的波特率設置有關的選擇位。
SMOD:波特率加倍位。在計算串行方式1、2、3的波特率時SMOD=0波特率不加倍;SMOD=1波特率加倍。
MCS-51單片機的串行的工作方式
MCS-51單片機的全雙工串行口可編程為4種工作方式,現分述如下:
1方式O
方式0為移位寄存器輸入/輸出方式。可外接移位寄存器以擴展I/O口,也可以外接同步輸入/輸出設備。波特率固定為fosc/12,其中fosc為時鐘頻率。
8位串行數據是從RXD輸入或輸出,TXD用來輸出同步脈沖。
輸出:串行數據從RXD引腳輸出,TXD引腳輸出移位脈沖。CPU將數據寫入發送寄存器SBUF時,立即啟動發送,將8位數據以fos/12的固定波特率從RXD輸出,低位在前,高位在后。發送完一幀數據后,發送中斷標志TI由硬件置位。
輸入:RXD為串行數據輸入端,TXD仍為同步脈沖移位輸出端。當(R1)=0且(REN)=1時,開始接收。當接收到第8位數據時,將數據移入接收寄存器,并由硬件置位RI。
左面兩圖分別是方式0擴展輸出和輸入的接線圖,74LS164/74LS165是移位寄存器,將單片機輸出的串行數據變為8位并行數據,將外部輸入的8位并行數據變成串行數據。
2方式1
方式1為波特率可變的10位異步通訊接口方式。發送或接收一幀信息,包括1個起始位0,8個數據位和1個停止位1。其中的起始位和停止位在發送時自動插入的。
輸出:當CPU執行一條指令將數據寫入發送緩沖SBUF且TI=0時,就啟動發送。串行數據從TXD引腳輸出,發送完一幀數據后,就由硬件置位TI。
輸入:在(REN)=1時,串行口采樣RXD引腳,當采樣到1至O的跳變時,確認是串行發送來的一幀數據的開始位0,從而開始接收一幀數據。只有當8位數據接收完,并檢測到高電平停止位后,只有滿足①(R1)=0;②(SM2)=0或接收到的第9位數據為1時,停止位才進入RB8,8位數據才能進入接收寄存器,并由硬件置位中斷標志RI;否則信息丟失。所以在方式1接收時,應先用軟件清零RI和SM2標志。
3. 方式2
方式2為固定波特率的11位uART方式。它比方式1增加了一位可程控為1或0的第9位數據。
輸出:發送的串行數據由TXD端輸出一幀信息為11位,附加的第9位來自SCON寄存器的TB8位,用軟件置位或復位。它可作為多機通訊中地址/數據信息的標志位,也可以作為數據的奇偶校驗位。當CPu執行一條數據寫入SuBF的指令且TI=0時,就啟動發送器發送。發送一幀信息后,置位中斷標志TI。
輸入:在(REN)=1時,串行口采樣RXD引腳,當采樣到1至O的跳變時,確認是串行發送來的一幀數據的開始位0,從而開始接收一幀數據。在接收到附加的第9位數據后,當滿足①(RI):0;②(SM2)=0或接收到的第9位數據為1時,第9位數據才進入RB8,8位數據才能進入接收寄存器,并由硬件置位中斷標志Ri;否則信息丟失。且不置位RI。
4. 工作方式3
方式3為波特率可變的11位UART方式。除波特率外,其余與方式2相同。
波特率的選擇
如前所述,在串行通訊中,收發雙方的數據傳送率(波特率)要有一定的約定。在MCS-51串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時器T1的溢出率控制。
1.方式O
方式0的波特率固定為主振頻率 的1/12。
2.方式2
方式2的波特率由PCON中的選擇位SMOD來決定,可表示為:波特率=2sMoD×fosc/64也就是當SMOD=1時,波特率為1/32×fosc,當SMOD=0時,波特率為1/64×fosc。
3.方式1和方式3
定時器T1作為波特率發生器,其公式如下:
波特率=2SMOD/32×定時器T1溢出率
T1溢出率=T1計數率/產生溢出所需的周期數
式中T1計數率取決于它工作在定時器狀態還是計數器狀態。當工作于定時器狀態時,T1計數率為fOSC門2:當工作于計數器狀態時,T1計數率為外部輸入頻率,此頻率應小于fOSC/24。產生溢出所需周期與定時器T1的工作方式、T1的預置值(×]有關。
定時器T1工作于方式O:溢出所需周期數=8192-×
定時器T1工作于方式1:溢出所需周期數=65536-X
定時器T1工作于方式2:溢出所需周期數=256-X
因為方式2為自動重裝入初值的8位定時器/計數器模式,所以用它來做波特率發生器最恰當。這種方式下,T1的溢出率[次/秒]計算式可以表示為:
T1溢出率=fsoc/12[256-X]
于是波特率(位/秒)表達式為:
當時鐘頻率選用11.0592MHz時,取易獲得標準的波特率,所以很多單片機系統選用這個看起來“怪”的晶振就是這個道理。
左表列出了定時器T1工作于方式2常用波特率及初值。
作者:
弓長謙謙
時間:
2017-10-20 10:33
代碼呢?
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产精品欧美一区二区三区不卡
|
精品国产一级
|
欧美成人激情视频
|
日韩av在线一区二区
|
欧美日韩精品一区二区天天拍
|
中文字幕一区二区在线观看
|
在线免费观看毛片
|
日韩欧美在线观看视频
|
91大神在线资源观看无广告
|
欧美综合久久
|
久久亚洲欧美日韩精品专区
|
久久午夜国产精品www忘忧草
|
日韩影院一区
|
伊人久久麻豆
|
爱爱视频在线观看
|
日韩精品在线视频
|
中文字幕在线免费视频
|
久久国产精品免费视频
|
国产综合精品
|
国产精品99精品久久免费
|
亚洲国产一区二区三区
|
亚洲激情自拍偷拍
|
欧美成人视屏
|
久久久久久久久久爱
|
在线观看国产91
|
一区二区中文字幕
|
国产精品免费观看视频
|
视频羞羞
|
91香蕉嫩草
|
欧美精品一区二区三区在线播放
|
亚洲精品一区二区
|
成人精品国产一区二区4080
|
国产精品久久精品
|
一区二区三区国产好
|
亚洲精品久久久蜜桃
|
欧美黄色一区
|
日韩精品视频在线免费观看
|
亚洲一区电影
|
亚洲毛片在线观看
|
99re6在线
|
在线视频一区二区
|