




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第5章章 單片機串行口的單片機串行口的C51編程編程5.1 串行口基礎知識串行口基礎知識 5.1.1 串行口的結構串行口的結構 5.1.2 有關的寄存器有關的寄存器 5.1.3 串行口的工作方式串行口的工作方式5. 2 不同工作方式下的不同工作方式下的C51編程編程 5.2.1 工作方式工作方式0的的C51程序設計程序設計 5.2.2 工作方式工作方式1的的C51程序設計程序設計 5.2.3 工作方式工作方式2的的C51程序設計程序設計 5.2.4 工作方式工作方式3的的C51程序設計程序設計5.3 串行口的串行口的C51編程應用示例編程應用示例5.1 串行口基礎知識串行口基礎知識 5.1.
2、1 串行口的結構串行口的結構 5.1.2 有關的寄存器有關的寄存器 5.1.3 串行口的工作方式串行口的工作方式5.1.1 串行口的結構串行口的結構5.1.2 有關的寄存器有關的寄存器 1串行控制寄存器串行控制寄存器SCON 2電源控制寄存器電源控制寄存器PCON5.1.3 串行口的工作方式串行口的工作方式 1工作方式工作方式0 串行口工作方式串行口工作方式0為為同步移位寄存器輸入同步移位寄存器輸入/輸出方式輸出方式,可外接移位寄存器,以擴展,可外接移位寄存器,以擴展I/O口。口。 方式方式0可分為方式可分為方式0輸入和方式輸入和方式0輸出兩種方式。輸出兩種方式。 但應注意:在這種方式下,不管
3、輸出還但應注意:在這種方式下,不管輸出還是輸入,通信數據總是從是輸入,通信數據總是從P3.0(RXD)引腳)引腳輸出或輸入,而輸出或輸入,而P3.1(TXD)引腳總是用于)引腳總是用于輸出移位脈沖,每一移位脈沖將使輸出移位脈沖,每一移位脈沖將使RXD端輸端輸出或者輸入出或者輸入1位二進制碼。位二進制碼。(1)方式)方式0輸出輸出 使用方式0實現數據的移位輸出時,實際上是把串行口變成并行口使用。 (2)方式)方式0輸入輸入5. 2 不同工作方式下的不同工作方式下的C51編程編程 5.2.1 工作方式工作方式0的的C51程序設計程序設計 5.2.2 工作方式工作方式1的的C51程序設計程序設計 5
4、.2.3 工作方式工作方式2的的C51程序設計程序設計 5.2.4 工作方式工作方式3的的C51程序設計程序設計5.2.1 工作方式工作方式0的的C51程序設計程序設計 方式方式0是同步移位寄存器輸入是同步移位寄存器輸入/輸出。輸出。 格式:格式:1、方式、方式0的波特率的波特率 在串口方式在串口方式0下,每個機器周期產生一個下,每個機器周期產生一個移位時鐘,對應著一個比特數據的發(fā)送和接移位時鐘,對應著一個比特數據的發(fā)送和接收。因此,此時波特率固定為單片機振蕩頻收。因此,此時波特率固定為單片機振蕩頻率的率的1/12,其波特率計算公式如下:,其波特率計算公式如下: 串口方式串口方式0波特率波特率
5、=fosc/12 在串口方式在串口方式0下,波特率不受波特率倍增下,波特率不受波特率倍增SMOD的影響。因此,在的影響。因此,在C51程序設計時只要程序設計時只要指定工作方式指定工作方式0便完成串口速率的設置,而無便完成串口速率的設置,而無需再設置波特率。需再設置波特率。2方式方式0的數據發(fā)送及的數據發(fā)送及C51程序設計程序設計 對于方式對于方式0的數據發(fā)送,單片機的的數據發(fā)送,單片機的TXD引腳都引腳都用于發(fā)送移位脈沖,而用于發(fā)送移位脈沖,而8位串行數據是通過單位串行數據是通過單片機的片機的RXD引腳來輸出。引腳來輸出。 方式方式0的數據發(fā)送流程:的數據發(fā)送流程: 對寄存器對寄存器SCON進
6、行初始化,即工作方式的進行初始化,即工作方式的設置。由于使用串行口方式設置。由于使用串行口方式0,只需將,只需將00H送送入入SCON即可。即可。 置串行接口控制寄存器置串行接口控制寄存器SCON的的TI=0,啟,啟動串行口發(fā)送。動串行口發(fā)送。 執(zhí)行寫發(fā)送緩沖器指令執(zhí)行寫發(fā)送緩沖器指令 SBUF=i; 單片機的單片機的CPU執(zhí)行完這條指令后,在執(zhí)行完這條指令后,在TXD引腳發(fā)送同步移位脈沖,引腳發(fā)送同步移位脈沖,8位數據位數據便從便從RXD端由低位到高位逐個發(fā)送出去。端由低位到高位逐個發(fā)送出去。當當8位數據發(fā)送完畢的時候,單片機硬位數據發(fā)送完畢的時候,單片機硬件自動置中斷標志件自動置中斷標志T
7、I=1,請求中斷,表,請求中斷,表示發(fā)送緩沖器已空。示發(fā)送緩沖器已空。 準備下一次數據發(fā)送。標志位準備下一次數據發(fā)送。標志位TI不會自動不會自動清零,當要發(fā)送下一組數據時,必須在軟件清零,當要發(fā)送下一組數據時,必須在軟件中置中置TI=0,然后才能發(fā)送下一組數據。串行,然后才能發(fā)送下一組數據。串行口方式口方式0的數據輸出可以采用查詢方式,也可的數據輸出可以采用查詢方式,也可以采用中斷方式。以采用中斷方式。 在查詢方式下,通過在查詢方式下,通過while語句查詢語句查詢TI的值,的值,如果如果TI=1則結束查詢,可以發(fā)送下一組數據;則結束查詢,可以發(fā)送下一組數據;如果如果TI=0,則繼續(xù)查詢。,則
8、繼續(xù)查詢。 在中斷方式下,在在中斷方式下,在TI置位好產生中斷申請,置位好產生中斷申請,在中斷服務程序中發(fā)送下一組數據。此時,在中斷服務程序中發(fā)送下一組數據。此時,需要開啟相應的中斷請求。需要開啟相應的中斷請求。 【例例5-1】方式方式0數據發(fā)送的數據發(fā)送的C51程序程序設計示例設計示例(1)采用查詢方式的采用查詢方式的 #include void main( ) unsigned char i=0 x55; SCON=0 x00;/初始化串口方式初始化串口方式0 SBUF=i;/輸出數據到輸出數據到SBUF,啟動串行輸出,啟動串行輸出 while(TI)/等待等待TI=1 TI=0; whi
9、le(1); (2)采用中斷方式的采用中斷方式的 #include void SISR(void) interrupt 4 TI=0; void main( ) unsigned char i=0 x55; SCON=0 x00;/初始化串口方式初始化串口方式0 EA=1; ES=1; /允許串行中斷允許串行中斷 SBUF=i; /輸出數據到輸出數據到SBUF,啟動串行輸出,啟動串行輸出 while(1) /等待等待TI=1 ; 3方式方式0的數據接收及的數據接收及C51程序設計程序設計 對于方式0的數據接收,單片機的TXD引腳都用于發(fā)送同步移位脈沖,而8位串行數據是通過RXD引腳來輸入。 在
10、方式0下,C51程序可以按照如下的流程來進行數據的接收: 首先,需要對寄存器SCON進行初始化,即工作方式的設置。由于這里使用的是串行口的方式0,允許接收,因此需將10H送入SCON,即置REN=1。另外,在方式0工作時,寄存器SCON中的SM2必須置0,而RB8位和TB8位都不起作用,一般置0即可。 此時,在TXD端發(fā)送同步移位脈沖,在同步脈沖為低電平的時候,8位數據從RXD引腳由低位到高位逐位接收。 當8位數據接收完畢的時候,硬件自動置RI=1,請求中斷,表示接收數據已裝人接收緩沖器,可以由CPU讀取,示例如下: i=SBUF;/讀取數據到變量i 準備下一次接收數據。由于準備下一次接收數據
11、。由于RI不會自動清不會自動清零,當需要接收下一組數據的時候,必須在零,當需要接收下一組數據的時候,必須在軟件中置軟件中置RI=0,然后才可以接收下一組數據。,然后才可以接收下一組數據。此時,同樣可以采用查詢和中斷兩種方式,此時,同樣可以采用查詢和中斷兩種方式,分別介紹如下。分別介紹如下。 在查詢方式中,使用在查詢方式中,使用while語句查詢語句查詢RI的值,的值,如果如果RI=1則結束查詢,可以接收下一組數據;則結束查詢,可以接收下一組數據;如果如果RI-0,則繼續(xù)查詢。,則繼續(xù)查詢。 在中斷方式中,在在中斷方式中,在RI置位后產生中斷申請,置位后產生中斷申請,在中斷服務程序中接收下一組數
12、據。此時,在中斷服務程序中接收下一組數據。此時,需要開啟相應的中斷請求。需要開啟相應的中斷請求。 【例例5-2】方式方式0數據接收的數據接收的C51程序程序設計設計(1)采用查詢方式采用查詢方式#includesbit S_L=P30;void main( ) unsigned char i; SCON=0 x10;/初始化串口方式初始化串口方式0 while(1) S_L =0; /并行數據送入并行數據送入74LS165 S_L =1; while(RI) /查詢查詢RI=1 RI=0; i=SBUF; P1=i; (2)采用中斷方式采用中斷方式#includeint i;void SISR
13、(void) interrupt 4 RI=0; i=SBUF;void main( ) SCON=0 x10;/初始化串口方式初始化串口方式0 EA=1; ES=1;/開啟串行中斷開啟串行中斷 while(1) ; 5.3 串行口的串行口的C51編程應用示例編程應用示例 【例例5-9】串行口自發(fā)自收串行口自發(fā)自收 #include #define uchar unsigned char #define uint unsigned int void main( ) uchar i=0 x55; uint j=0; TMOD=0X20;/設定定時器1模式2 TL1=TH1=0XF4; PCON=
14、0X00; SCON=0X50; TR1=1; while(1) SBUF=i;/發(fā)送數據 do( )while(!RI)/相當于while(RI=1) RI=0; TI=0; i=SBUF;/讀取接收數據 P1=i; i=i;/將發(fā)送數據取反 for(j=0;j12500;j+); 【例例5-10】兩個單片機串行通信兩個單片機串行通信1單片機單片機1的的C51源程序代碼:源程序代碼:#include#define uint unsigned int#define uchar unsigned charvoid main( ) uchar i; TMOD=0 x20; TH1=TL1=0 xff; SCON=0 x50; PCON=0 x80; TR1=1; P1=0 xff; while(1) P1=0 xff; i=P1; SBUF=i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專項10 文學常識(試卷版)
- 2025屆江蘇省鹽城市射陽中學高三上學期一模物理試題(解析版)
- 2025屆四川省資陽市安岳中學高三二模語文試題(原卷版+解析版)
- 人教版九年級下冊化學教學工作計劃(含進度表)
- 《跨境電子商務法律法規(guī) 》全套教學課件
- 廣東省廣州市華南師范附屬中學2024-2025學年高二下學期3月月考物理試卷(原卷版+解析版)
- 教育咨詢居間協議樣本
- 汽車車身電子控制技術指南
- 中醫(yī)護理學(第5版)課件 第三節(jié) 中藥煎服法與護理
- 雨水收集再利用系統
- JJG 257-2007浮子流量計行業(yè)標準
- 2023年 新版評審準則質量記錄手冊表格匯編
- 2024年全國版圖知識競賽(小學組)考試題庫大全(含答案)
- 博物館保安服務投標方案(技術方案)
- (高清版)TDT 1047-2016 土地整治重大項目實施方案編制規(guī)程
- 2024年新疆維吾爾自治區(qū)中考一模綜合道德與法治試題
- 醫(yī)藥代表專業(yè)化拜訪技巧培訓
- 今年夏天二部合唱譜
- 現代制造技術課件
- 小米公司招聘測試題目
- 2024年北京控股集團有限公司招聘筆試參考題庫含答案解析
評論
0/150
提交評論