80C51串行口的編程_第1頁
80C51串行口的編程_第2頁
80C51串行口的編程_第3頁
80C51串行口的編程_第4頁
80C51串行口的編程_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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的C515.3 串行口的C51編程應用示例15.1 串行口基礎知識5.1.1 串行口的結構5.1.2 有關的寄存器5.1.3 串行口的工作方式25.1.1 串行口的結構35.1.2 有關的寄存器1串行控制寄存器SCON2電源控制寄存器PCON45.1.3 串行口的工作方式1工作方式0 串行口工作方式0為同步

2、移位寄存器輸入/輸出方式,可外接移位寄存器,以擴展I/O口。 方式0可分為方式0輸入和方式0輸出兩種方式。 但應注意:在這種方式下,不管輸出還是輸入,通信數(shù)據(jù)總是從P3.0(RXD)引腳輸出或輸入,而P3.1(TXD)引腳總是用于輸出移位脈沖,每一移位脈沖將使RXD端輸出或者輸入1位二進制碼。5(1)方式0輸出使用方式0實現(xiàn)數(shù)據(jù)的移位輸出時,實際上是把串行口變成并行口使用。 6(2)方式0輸入75. 2 不同工作方式下的C51編程5.2.1 工作方式0的C51程序設計5.2.2 工作方式1的C51程序設計5.2.3 工作方式2的C51程序設計5.2.4 工作方式3的C51程序設計85.2.1

3、工作方式0的C51程序設計方式0是同步移位寄存器輸入/輸出。格式:91、方式0的波特率 在串口方式0下,每個機器周期產(chǎn)生一個移位時鐘,對應著一個比特數(shù)據(jù)的發(fā)送和接收。因此,此時波特率固定為單片機振蕩頻率的1/12,其波特率計算公式如下: 串口方式0波特率=fosc/12 在串口方式0下,波特率不受波特率倍增SMOD的影響。因此,在C51程序設計時只要指定工作方式0便完成串口速率的設置,而無需再設置波特率。102方式0的數(shù)據(jù)發(fā)送及C51程序設計對于方式0的數(shù)據(jù)發(fā)送,單片機的TXD引腳都用于發(fā)送移位脈沖,而8位串行數(shù)據(jù)是通過單片機的RXD引腳來輸出。方式0的數(shù)據(jù)發(fā)送流程:對寄存器SCON進行初始化

4、,即工作方式的設置。由于使用串行口方式0,只需將00H送入SCON即可。置串行接口控制寄存器SCON的TI=0,啟動串行口發(fā)送。11執(zhí)行寫發(fā)送緩沖器指令 SBUF=i;單片機的CPU執(zhí)行完這條指令后,在TXD引腳發(fā)送同步移位脈沖,8位數(shù)據(jù)便從RXD端由低位到高位逐個發(fā)送出去。當8位數(shù)據(jù)發(fā)送完畢的時候,單片機硬件自動置中斷標志TI=1,請求中斷,表示發(fā)送緩沖器已空。準備下一次數(shù)據(jù)發(fā)送。標志位TI不會自動清零,當要發(fā)送下一組數(shù)據(jù)時,必須在軟件中置TI=0,然后才能發(fā)送下一組數(shù)據(jù)。串行口方式0的數(shù)據(jù)輸出可以采用查詢方式,也可以采用中斷方式。在查詢方式下,通過while語句查詢TI的值,如果TI=1則

5、結束查詢,可以發(fā)送下一組數(shù)據(jù);如果TI=0,則繼續(xù)查詢。在中斷方式下,在TI置位好產(chǎn)生中斷申請,在中斷服務程序中發(fā)送下一組數(shù)據(jù)。此時,需要開啟相應的中斷請求。 12例5-1】方式0數(shù)據(jù)發(fā)送的C51程序設計示例13(1)采用查詢方式的#includevoid main( ) unsigned char i=0 x55; SCON=0 x00;/初始化串口方式0 SBUF=i;/輸出數(shù)據(jù)到SBUF,啟動串行輸出 while(TI)/等待TI=1 TI=0; while(1);14(2)采用中斷方式的#includevoid SISR(void) interrupt 4 TI=0; void mai

6、n( ) unsigned char i=0 x55; SCON=0 x00;/初始化串口方式0 EA=1; ES=1;/允許串行中斷 SBUF=i;/輸出數(shù)據(jù)到SBUF,啟動串行輸出 while(1)/等待TI=1 ; 153方式0的數(shù)據(jù)接收及C51程序設計對于方式0的數(shù)據(jù)接收,單片機的TXD引腳都用于發(fā)送同步移位脈沖,而8位串行數(shù)據(jù)是通過RXD引腳來輸入。在方式0下,C51程序可以按照如下的流程來進行數(shù)據(jù)的接收:首先,需要對寄存器SCON進行初始化,即工作方式的設置。由于這里使用的是串行口的方式0,允許接收,因此需將10H送人SCON,即置REN=1。另外,在方式0工作時,寄存器SCON中

7、的SM2必須置0,而RB8位和TB8位都不起作用,一般置0即可。此時,在TXD端發(fā)送同步移位脈沖,在同步脈沖為低電平的時候,8位數(shù)據(jù)從RXD引腳由低位到高位逐位接收。當8位數(shù)據(jù)接收完畢的時候,硬件自動置RI=1,請求中斷,表示接收數(shù)據(jù)已裝人接收緩沖器,可以由CPU讀取,示例如下: i=SBUF;/讀取數(shù)據(jù)到變量i16準備下一次接收數(shù)據(jù)。由于RI不會自動清零,當需要接收下一組數(shù)據(jù)的時候,必須在軟件中置RI=0,然后才可以接收下一組數(shù)據(jù)。此時,同樣可以采用查詢和中斷兩種方式,分別介紹如下。在查詢方式中,使用while語句查詢RI的值,如果RI=1則結束查詢,可以接收下一組數(shù)據(jù);如果RI-0,則繼續(xù)

8、查詢。在中斷方式中,在RI置位后產(chǎn)生中斷申請,在中斷服務程序中接收下一組數(shù)據(jù)。此時,需要開啟相應的中斷請求。 17【例5-2】方式0數(shù)據(jù)接收的C51程序設計18(1)采用查詢方式#includesbit S_L=P30;void main( ) unsigned char i; SCON=0 x10;/初始化串口方式0 while(1) S_L =0;/并行數(shù)據(jù)送入74LS165 S_L =1; while(RI)/查詢RI=1 RI=0; i=SBUF; P1=i; 19(2)采用中斷方式#includeint i;void SISR(void) interrupt 4 RI=0; i=SB

9、UF;void main( ) SCON=0 x10;/初始化串口方式0 EA=1; ES=1;/開啟串行中斷 while(1) ; 205.3 串行口的C51編程應用示例【例5-9】串行口自發(fā)自收21#include#define uchar unsigned char#define uint unsigned intvoid main( ) uchar i=0 x55; uint j=0; TMOD=0X20;/設定定時器1模式2 TL1=TH1=0XF4; PCON=0X00; SCON=0X50; TR1=1; while(1) SBUF=i;/發(fā)送數(shù)據(jù) do( )while(!RI)

10、 RI=0; TI=0; i=SBUF;/讀取接收數(shù)據(jù) P1=i; i=i;/將發(fā)送數(shù)據(jù)取反 for(j=0;j12500;j+); 22【例5-10】兩個單片機串行通信123單片機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; while(TI=0) ; TI=0; 24單片機2的C51源程序:#include#define uint unsig

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論