串行接口的工作方式_第1頁
串行接口的工作方式_第2頁
串行接口的工作方式_第3頁
串行接口的工作方式_第4頁
串行接口的工作方式_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、6.2.1 串行接口的工作方式串行接口的工作方式方式方式0 0同步移位寄存器方式同步移位寄存器方式 串行口的SBUF是作為8位同步移位寄存器用,主要用于和外部同步移位寄存器外接以擴展一個并行I/O接口(將串行口變?yōu)?個8位并行I/O口使用)。此方式是半雙工的,并非是一種同步通信方式。 波特率固定為fosc/12,即每個機器周期移位一次。串行數據從RXD(P3.0)端輸入或輸出,同步移位脈沖由TXD(P3.1)送出。這種方式常用于擴展I/O口,也可外接同步輸入/輸出設備。ABCLK3 4 5 6 10 11 12 13數據輸出移位脈沖RXDTXD805174LS164D7D6D5D4D3D2D1

2、D0(1)發(fā)送操作發(fā)送操作 SBUF中的串行數據由RXD逐位移出;TXD輸出移位時鐘,頻率=fosc/12;每送出8位數據,TI就自動置1;必須用軟件清零 TI。RXD不再是接收引腳、TXD也不再是發(fā)送引腳。ACLK6543 14 13 12 11數據輸入移位脈沖RXDTXD805174LS165D0D1D2D3D4D5D6D7(2)接收操作接收操作 串行數據由RXD逐位移入SBUF中;TXD輸出移位時鐘,頻率=fosc/12;每接收8位數據RI就自動置1;必須用軟件清零 RI。例寫出串行口工作方式例寫出串行口工作方式0 0接收時的串行口控制字。接收時的串行口控制字。方式0時:SM0,SM10

3、0方式0時SM2必須為0:SM20 REN1時允許接收:REN1方式0為8位數據,TB8、RB800 接收前,發(fā)送中斷標志TI0 接收中斷標志RI0故控制字(SCON)00010000B10H 案例案例 用單片機的串行口擴展輸出口用單片機的串行口擴展輸出口用8051串行口外接CD4094擴展8位并行輸出口,8位并行口的各位都接一個發(fā)光二極管,要求發(fā)光二極管自右向左以一定速度依次顯示,呈流水燈狀態(tài)。案例案例 用單片機的串行口擴展輸出口用單片機的串行口擴展輸出口本例是將串行口工作于方式0,串行口工作于方式0時有兩種不同的用途:把串行口設置成并入串出的輸出口,此時需要外接一片8位串行輸入和并行輸出的

4、同步移位寄存器74LS164或CD4094;將串行口設置成串入并出的輸入口,此時需要外接一片8位并行輸入和串行輸出的同步移位寄存器74LS165或CD4014。CD4094CD4094是一種8位串行輸入(D端)并行輸出的同步移位寄存器,采用CMOS工藝制成。CLK為同步脈沖輸入端,STB為控制端:若STB0,則8位并行數據輸出端關閉,但允許串行數據從D輸入;若STB1,則D輸入端關閉,但允許8位數據并行輸出。#includesbit p10=P10;void main() unsigned char sdata=0 xfe; int i; SCON=0; p10=0; /避免LED產生“暗紅”

5、現象 while(1) 查詢查詢方式!方式! SBUF = sdata; while(TI=0); TI=0; p10=1; for(i=10000;i0;i-); sdata=1; /左移 sdata |=1; /最低位補1 if(sdata=0 xff) sdata=0 xfe; p10=0; /關閉并行輸出 #includesbit p10=P10;void isr_serial(); unsigned char sdata=0 xfe;void main() SCON=0; p10=0; SBUF = sdata; EA=1;ES=1; while(1);void isr_serial

6、() interrupt 4 int i; p10=1; for(i=10000;i0;i-); sdata=1; sdata |=1; if(sdata=0 xff) sdata=0 xfe; p10=0; SBUF = sdata;TI=0;案例案例 用單片機的串行口擴展輸出口用單片機的串行口擴展輸出口中斷方式!2. 2. 方式方式1 1 方式1、方式2、方式3均為全雙工方式,串行數據經TXD(P3.1)端發(fā)送給外設,而外設發(fā)出的串行數據由RXD(P3.0)端接收,發(fā)送和接收可同時進行。當SM00,SM11時,串行口工作在方式1。串行口為10位異步通信方式。方式1多用于兩個單片機(雙機)之

7、間或單片機與外設電路間的通信。在此方式下字符幀除8位數據位外,還有一位起始位(0)和1位停止位(1)。(1 1)發(fā)送過程)發(fā)送過程 發(fā)送操作在TI0時進行,任何一條“寫SBUF”指令都可以啟動一次發(fā)送,CPU向發(fā)送器緩沖寄存器寫入一個字節(jié)的數據后,發(fā)送電路自動在8位發(fā)送字符前后分別添加1位起始位和1位停止位,并在移位脈沖的作用下在TXD線上依次發(fā)送一幀信息。 發(fā)送完后自動維持TXD線為高電平(1狀態(tài)),TI由硬件在發(fā)送停止位時置1,并向CPU申請中斷。(2)接收過程)接收過程接收操作在RI0和REN1條件下進行。方式1是靠檢測RXD來判斷的,CPU不斷采樣RXD端,當采樣到負跳變時,啟動一次接

8、收。在移位脈沖控制下,把接收的數據移入接收SBUF中,直到接收到數據第9位(即停止位)時,同時滿足:RIRI0 0SM2SM20 0或接收到的停止位為或接收到的停止位為1 1 則把接收到的8位數據存入“接收SBUF”,把停止位送入RB8中,并使RI置1和發(fā)出串行口中斷請求,通知CPU執(zhí)行“讀SBUF”指令,從SBUF中取出接收到的一個數據。如果條件不滿足,則這次收到的數據就被舍去,不送入“SBUF(接收)”中,這就意味著丟失了一組數據。3. 方式方式2和方式和方式3 方式2和方式3都是11位為一幀的UART方式1個起始位,9個數據位和一個停止位。第9位數據位既可作奇偶校驗位也可作控制位,發(fā)送之

9、前應先在SCON的TB8位中準備好。方式3和方式2除波特率不同之外,其它的性能完全一樣,兩種工作方式的通信過程完全相同。方式2的波特率只有fosc/32和fosc/64兩種而方式3的波特率是可變的,由用戶根據需要在程序中設定,這一點與方式1相同。(1)通信過程)通信過程發(fā)送過程是由執(zhí)行 “寫入SBUF”指令來啟動的。由“寫入SBUF”信號把8位數據裝入SBUF,同時還把TB8裝入發(fā)送移位寄存器的第9位。當TI=0,CPU向發(fā)送器緩沖寄存器寫入一個字節(jié)的數據后,發(fā)送電路自動在9位發(fā)送字符前后分別添加1位起始位和1位停止位,并在移位脈沖的作用下在TXD線上依次發(fā)送一幀信息,發(fā)送完后自動維持TXD線

10、為高電平,TI由硬件在發(fā)送停止位時置1,并向CPU申請中斷。第9位數據(TB8)由軟件置位或清零。2)接收過程)接收過程與方式1類似,方式2和方式3接收過程始于在RXD端檢測到負跳變時,說明起始位有效,將其移入移位寄存器,并開始接收一幀信息的其余位。當檢測到停止位時,如果同時滿足下列兩個條件: RI=0; SM2 =0 或接收到的第 9 位數據為“1”。 則第9位數據裝入SCON中的RB8, 前8位數據裝入接收SBUF,并置中斷標志RI=1。上述兩個條件中任一個不滿足, 所接收的數據幀就會丟失, 不再恢復。(2)第)第9位數據的應用位數據的應用方式2和方式3可以像方式1一樣用于點對點的異步通信

11、。在數據通信中由于傳輸距離較遠,數據信號在傳送過程中會產生畸變,從而引起誤碼。為了保證通信質量,除了改進硬件之外,通常要在通信軟件上采取糾錯的措施。常用的一種簡單方法就是用“校驗和”,作為第9位數據稱奇偶校驗位,將其置入TB8位一同發(fā)送。在接收端可以用第9位數據來核對接收的數據是否正確。 發(fā)送端發(fā)送一個數據字節(jié)及其奇偶校驗位的程序發(fā)送端發(fā)送一個數據字節(jié)及其奇偶校驗位的程序#includeunsigned char sdata=;main()SCON=0 x80; ACC=sdata; TB8=P; SBUF=sdata; while(TI=0); TI=0; 小技巧 由于要發(fā)送奇偶標志位,因此

12、需先把要發(fā)送的數據傳送到累加器A中,以獲得奇偶標志位P的位,否則得不到P的值。 發(fā)送端發(fā)送一個數據字節(jié)及其奇偶校驗位發(fā)送端發(fā)送一個數據字節(jié)及其奇偶校驗位#includeunsigned char sdata=;main() SCON=0 x90; while(RI=0); RI=0;ACC=SBUF; if(P!=RB8) error(); /如果P不等于RB8的值則出錯 else sdata=ACC; 2)用第)用第9位數據作多機通信的聯(lián)絡位位數據作多機通信的聯(lián)絡位 計算機與計算機的通信不僅限于點對點通信,還會出現一機對多機或多機間的通信,構成計算機網。主從式通信,即在多臺計算機中有一臺是主

13、機,其余為從機,從機要服從主機的調度、支配。MCS51單片機的串行口方式2、方式3就適合于這種主從式的通信結構用作多機通信,以構成多機系統(tǒng)。使用中應注意對主、從機的控制字的設定。主機應先發(fā)送與之通信的某從機的地址信息,此時應置TB8為1(地址幀的標志),收到從機應答后,對TB8清0后再發(fā)送數據(TB80作為數據幀標志)。方式2時(SCON)10011000B98H方式3時(SCON)11011000BD8H2)用第)用第9位數據作多機通信的聯(lián)絡位位數據作多機通信的聯(lián)絡位從機在通信開始時處于“監(jiān)聽狀態(tài)”,以接收主機發(fā)出的地址信息,SM2位應置1,當確認是呼叫本機時使SM2清0再向主機應答。然后等

14、待接收主機發(fā)送數據,可根據RB8的狀態(tài)判斷,RB80則是接收的數據,否則為地址。重又轉入監(jiān)聽狀態(tài),同時要置SM2位為1。從機的控制字為:方式2時(SCON)10110000BB0H;方式3時(SCON)11110000BF0H。主、從機的控制字分別在各自的初始編程中進行設置。 6.2.2 串行口的波特率串行口的波特率 固定為fosc/12,即每個機器周期移位一次。2. 方式方式2的波特率是固定的的波特率是固定的 當SMOD=1時,波特率為1/32fosc;當SMOD=0時,波特率為1/64fosc。 oscsf642mod波特率3. 方式方式1、3的波特率的波特率T1溢出率 = T1計數率/產

15、生溢出所需的周期數,指在1秒鐘內溢出的次數。產生溢出所需周期與定時器T1的工作方式、T1的預置值有關。設T1的初值為X,則T1工作于方式0:溢出所需周期數=8192X T1工作于方式1:溢出所需周期數=65536XT1工作于方式2:溢出所需周期數=256X 溢出率定時器波特率T1322mods3. 方式方式1、3的波特率的波特率對定時/計數器來說,T1作為波特率發(fā)生器最典型的用法是使用T1工作在定時方式2狀態(tài),則其波特率為:)256(12322SMODXfosc波特率波特率3842256Xmodsoscf則初值計算公式為:則初值計算公式為: 常用波特率與定時器常用波特率與定時器1的參數關系的參數關系 C/T波特率/b/s(方式1、3)foscSMOD定時器T1工作方式初值62.5K12102FF

溫馨提示

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

評論

0/150

提交評論