串行接口與定時(shí)計(jì)數(shù)器_第1頁
串行接口與定時(shí)計(jì)數(shù)器_第2頁
串行接口與定時(shí)計(jì)數(shù)器_第3頁
串行接口與定時(shí)計(jì)數(shù)器_第4頁
串行接口與定時(shí)計(jì)數(shù)器_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第四章串行接口與定時(shí)計(jì)數(shù)器1.

串行接口的一般概念單片機(jī)與外界進(jìn)行信息交換稱之為通訊(Communication)。單片機(jī)的通訊方式有兩種:并行通訊:數(shù)據(jù)的各位同時(shí)發(fā)送或接收。串行通訊:數(shù)據(jù)一位一位順序發(fā)送或接收。參看下圖:一、串行接口及應(yīng)用(一).異步通訊以字符為傳送單位用起始位和停止位標(biāo)識(shí)每個(gè)字符的開始和結(jié)束。字符間隔不固定,只需字符傳送時(shí)同步。異步通訊常用格式:一個(gè)字符幀一.串行通訊的基本方式

D0D1D2D3D4D5D6D7停止位起始位異步通訊的雙方需要兩項(xiàng)約定:1.字符格式一幀字符位數(shù)的規(guī)定:數(shù)據(jù)位,校驗(yàn)位,起始位和停止位。2.波特率(位/秒)——對傳送速率的規(guī)定波特率:每秒鐘傳送的位數(shù),記為bps(bit/sec)。例:要求每秒傳送120個(gè)字符,每幀為10位。解:B=120×10=1200波特 每位0.83ms數(shù)據(jù)位傳輸率=120×8=960位/秒(二)同步通訊: 數(shù)據(jù)塊傳遞開始要用同步字符來指示,要求由時(shí)鐘來實(shí)現(xiàn)發(fā)送端與接收端之間的同步,故硬件較復(fù)雜。串行通信的校驗(yàn)方法

目的:保證高效而無差錯(cuò)的傳送數(shù)據(jù)。校驗(yàn)位:可以奇校驗(yàn)、偶校驗(yàn)或沒有校驗(yàn)位。奇偶校驗(yàn):主要用于對一個(gè)字符的傳輸過程進(jìn)行校驗(yàn)。通常把數(shù)據(jù)位和校驗(yàn)位中1的個(gè)數(shù)為奇數(shù)個(gè)稱為奇校驗(yàn)。通常把數(shù)據(jù)位和校驗(yàn)位中1的個(gè)數(shù)為偶數(shù)個(gè)稱為偶校驗(yàn)。異步傳輸信息冗余較大,例如:1+8+1+2中有效位數(shù)只有8位。 串行傳輸中的數(shù)據(jù)傳輸方向 如果在通信過程的任意時(shí)刻,信息只能由一方A傳到另一方B,則稱為單工。(無線電對講機(jī)) 如果在任意時(shí)刻,信息既可由A傳到B,又能由B傳A,但只能由一個(gè)方向上的傳輸存在,稱為半雙工傳輸。 如果在任意時(shí)刻,線路上存在A到B和B到A的雙向信號(hào)傳輸,則稱為全雙工。(電話)1.數(shù)據(jù)緩沖器SBUF發(fā)送SBUF和接收SBUF共用一個(gè)地址99H 。 1)發(fā)送SBUF存放待發(fā)送的8位數(shù)據(jù),寫入SBUF將同時(shí)啟動(dòng)發(fā)送。 發(fā)送指令: MOV SBUF,A2)接收SBUF存放已接收成功的8位數(shù)據(jù),供CPU讀取。 接收指令: MOVA,SBUF一.串行接口控制字2.串行口控制/狀態(tài)寄存器SCON(98H)SM0,SM1:選擇串行口4種工作方式。SM2:多機(jī)控制位,用于多機(jī)通訊。REN:允許接收控制位,REN=1,允許接收;REN=0,禁止接收。TB8發(fā)送的第9位數(shù)據(jù)位,可用作校驗(yàn)位和地址/數(shù)據(jù)標(biāo)識(shí)位RB8:接收的第9位數(shù)據(jù)位或停止位TI:發(fā)送中斷標(biāo)志,發(fā)送一幀結(jié)束,TI=1,必須軟件清零RI:接收中斷標(biāo)志,接收一幀結(jié)束,RI=1,必須軟件清零3.節(jié)電控制寄存器PCONSMOD(PCON.7):波特率加倍控制位。SMOD=1,波特率加倍,SMOD=0,則不加倍。串行口的工作方式

方式0:同步方式(移位寄存器方式) 要想移位寄存器工作,需要向其時(shí)鐘輸入端CLK送去移位脈沖,接收一個(gè)脈沖便移動(dòng)一位。該脈沖由TXD提供(移位脈沖),參與發(fā)送或接收的數(shù)據(jù)均出入于RXD端??捎糜跀U(kuò)展8位并行輸入輸出口

輸出:將8位數(shù)據(jù)以fos/12的固定波特率從RXD輸出,低位在前,高位在后。發(fā)送完一幀數(shù)據(jù)后,發(fā)送中斷標(biāo)志TI由硬件置位。

輸入:

置位允許接收控制位REN=1。當(dāng)(RI)=0和(REN)=1同時(shí)滿足時(shí),開始接收。當(dāng)接收到第8位數(shù)據(jù)時(shí),將數(shù)據(jù)移入接收寄存器,并由硬件置位RI。

方式1:波特率可變的10位異步通訊接口發(fā)送或接收一幀信息,包括1個(gè)起始位0,8個(gè)數(shù)據(jù)位和1個(gè)停止位1。輸出:串行數(shù)據(jù)從TXD引腳輸出,發(fā)送完一幀數(shù)據(jù)后,就由硬件置位TI。

輸入:在(REN)=1時(shí),串行口采樣RXD引腳,當(dāng)采樣到1至0的跳變時(shí),確認(rèn)是開始位0,就開始接收一幀數(shù)據(jù)。只有當(dāng)(RI)=0且停止位為1或者(SM2)=0時(shí),停止位才進(jìn)入RB8,8位數(shù)據(jù)才能進(jìn)入接收寄存器,并由硬件置位中斷標(biāo)志RI;否則信息丟失。所以在方式1接收時(shí),應(yīng)先用軟件清零RI和SM2標(biāo)志。

方式2:固定波特率的11位UART方式 它比方式1增加了一位可程控為1或0的第9位數(shù)據(jù)。

輸出:它可作為多機(jī)通訊中地址/數(shù)據(jù)信息的標(biāo)志位,也可以作為數(shù)據(jù)的奇偶校驗(yàn)位。

輸入:

在接收到附加的第9位數(shù)據(jù)后,當(dāng)(RI)=0或者(SM2)=0時(shí),第9位數(shù)據(jù)才進(jìn)入RB8,8位數(shù)據(jù)才能進(jìn)入接收寄存器,并由硬件置位中斷標(biāo)志RI;否則信息丟失。且不置位RI。

再過一位時(shí)間后,不管上述條件時(shí)否滿足,接收電路即行復(fù)位,并重新檢測RXD上從1到0的跳變。

(4)方式3:異步第9位方式

方式3為波特率可變的11位UART方式。除波特率外,其余與方式2相同。當(dāng)時(shí)鐘頻率選用11.0592MHZ時(shí),取易獲得標(biāo)準(zhǔn)的波特率,所以很多單片機(jī)系統(tǒng)選用這個(gè)看起來“怪”的晶振就是這個(gè)道理。右表列出了定時(shí)器T1工作于方式2常用波特率及初值。常用波特率Fosc(MHZ)SMODTH1初值1920011.05921FDH960011.05920FDH480011.05920FAH240011.05920F4h120011.05920E8h串口的電平轉(zhuǎn)換電路RS232使EIA(ElectronicsIndustriesAssociation)組織推薦的、目前最常用的一種串行通訊接口標(biāo)準(zhǔn)。采用25芯連接器或9芯連接器。常用電平為-12V~+12V邏輯“1”為-3V~-25V,邏輯“0”為+3V~+25VTTL與EIA之間需要用接口電路進(jìn)行轉(zhuǎn)換為什么需要電平轉(zhuǎn)換電路

單片機(jī)使用的是TTL電平,單片機(jī)的串口輸出信號(hào)也是如此,串行通信中一般使用的是RS232通信協(xié)議需要外接接口進(jìn)行電平匹配MAX232和單片機(jī)串口連接的典型電路單片機(jī)和單片機(jī)之間的串行通信也需要電平轉(zhuǎn)換芯片嗎?對于兩個(gè)單片機(jī)而言,二者都是TTL電平,所以不需要電平轉(zhuǎn)換芯片。定時(shí)/計(jì)數(shù)器中的核心部件為可預(yù)置初值計(jì)數(shù)器。預(yù)置初值后開始計(jì)數(shù),直至計(jì)數(shù)值歸0或產(chǎn)生溢出,可申請中斷。K1K2可預(yù)置初值計(jì)數(shù)器中斷請求功能選擇啟動(dòng)控制內(nèi)部時(shí)鐘脈沖(定時(shí))外部輸入脈沖(計(jì)數(shù))溢出信號(hào)計(jì)數(shù)脈沖計(jì)數(shù)初值二.定時(shí)/計(jì)數(shù)器的工作原理

例:設(shè)CTC中為8位加1計(jì)數(shù)器。按要求選擇功能和初值。1.要求檢測到100個(gè)脈沖,發(fā)中斷請求,通知CPU。選計(jì)數(shù)功能,計(jì)數(shù)初值為156。2.要求定時(shí)每隔100s時(shí)間,發(fā)一次中斷請求。設(shè)內(nèi)部時(shí)鐘周期1s選定時(shí)功能,計(jì)數(shù)初值為156。一.定時(shí)/計(jì)數(shù)器的應(yīng)用1.計(jì)數(shù)功能:生產(chǎn)線上產(chǎn)品計(jì)數(shù)。每個(gè)產(chǎn)品通過得到一個(gè)脈沖信號(hào),計(jì)數(shù)器記錄脈沖個(gè)數(shù),當(dāng)計(jì)數(shù)值與設(shè)定值相等,啟動(dòng)包裝機(jī)器。檢測轉(zhuǎn)速。電機(jī)轉(zhuǎn)動(dòng)一圈發(fā)出一個(gè)脈沖,計(jì)數(shù)器記錄一秒時(shí)間內(nèi)脈沖個(gè)數(shù),顯示轉(zhuǎn)速。2.定時(shí)功能:用于實(shí)時(shí)控制,定時(shí)采樣、定時(shí)啟動(dòng)等。當(dāng)定時(shí)時(shí)間與設(shè)定值相等,執(zhí)行規(guī)定操作。3 定時(shí)/計(jì)數(shù)器電路CTC3-2-1 MCS-51定時(shí)/計(jì)數(shù)器2個(gè)可獨(dú)立控制的16位定時(shí)器/計(jì)數(shù)器:T0、T1定時(shí)器初始化編程:1.功能選擇(定時(shí)/計(jì)數(shù)) 2.位數(shù)選擇(8/13/16位)3.啟動(dòng)方式選擇(內(nèi)部啟動(dòng)/外部啟動(dòng))4.啟動(dòng)控制(啟動(dòng)/停止)5.恢復(fù)初值方式(自動(dòng)重裝/軟件重裝)1)功能選擇位C/T:=0,定時(shí)功能,計(jì)數(shù)內(nèi)部機(jī)器周期脈沖;=1,計(jì)數(shù)功能,計(jì)數(shù)引腳T0(T1)輸入的負(fù)脈沖。1.TMOD定時(shí)器方式寄存器(89H)T1T0一.定時(shí)器控制、狀態(tài)寄存器2)方式選擇位M1、M0:4種工作方式:13/16/8位3)門控方式選擇位GATE:=0,非門控方式(內(nèi)部啟動(dòng)):

TRx=1,啟動(dòng)定時(shí)器工作;

TRx=0,停止定時(shí)器工作。=1,門控方式(外部啟動(dòng)):TRx=1且引腳INTx=1才啟動(dòng)。確定定時(shí)器工作方式指令:MOVTMOD,#方式字例:設(shè)T0用方式2非門控定時(shí),T1用方式1門控計(jì)數(shù)。 MOV TMOD,#2.TCON定時(shí)器控制/狀態(tài)寄存器1)啟動(dòng)控制位TR0、TR1=0,停止定時(shí)器工作=1,啟動(dòng)定時(shí)器工作例:啟動(dòng)T0: SETB TR02)溢出中斷標(biāo)志位TF0、TF1定時(shí)器溢出使TFx=1,引起中斷請求,CPU響應(yīng)Tx中斷后,自動(dòng)清0TFx。可用軟件檢測TFx,必須軟件清0。

WAIT:JBCTF0,NEXT;檢測T0是否溢出

SJMP WAIT ;未溢出,繼續(xù)檢測

NEXT:… ;溢出,TF0清0,處理溢出3.可預(yù)置初值的16位加1計(jì)數(shù)器TH0、TL0、TH1、TL1預(yù)置T0初值指令: MOV TH0,#XH

MOV TL0,#XL二.

定時(shí)器工作方式

由方式選擇位M1、M0設(shè)定1.方式013位定時(shí)/計(jì)數(shù)器。THx8位和TLx低5位組成13位加1計(jì)數(shù)器計(jì)數(shù)外部脈沖個(gè)數(shù):1~8192(213)定時(shí)時(shí)間(T=1s):1s~8.19ms2.方式116位定時(shí)/計(jì)數(shù)器。THx8位和TLx8位組成16位加1計(jì)數(shù)器計(jì)數(shù)外部脈沖個(gè)數(shù):1~65536(216)定時(shí)時(shí)間(T=1s):1s~65536×T=65.54ms3.

方式2自動(dòng)恢復(fù)初值8位定時(shí)/計(jì)數(shù)器。TLx為8位加1計(jì)數(shù)器,THx為8位初值暫存器。用于需要重復(fù)定時(shí)和計(jì)數(shù)的場合。最大計(jì)數(shù)值:256(28)最大定時(shí)時(shí)間(T=1s):256s4.方式3T0分成2個(gè)8位定時(shí)器:TL0定時(shí)/計(jì)數(shù)器和TH0定時(shí)器TL0占用T0控制位:C/T,TR0,GATE;TH0占用T1控制位:TR1,TF1。T1不能使用方式3工作5.計(jì)算時(shí)間常數(shù)X(計(jì)算初值)計(jì)數(shù)功能:X=2n-計(jì)數(shù)值 n:8/13/16定時(shí)功能:X=2n-t/T t:定時(shí)時(shí)間、T:機(jī)器周期定時(shí)器初始化編程:使用定時(shí)器工作之前,先寫入控制寄存器,確定好定時(shí)器工作方式1.按實(shí)際需要選擇定時(shí)/計(jì)數(shù)功能2.按時(shí)間或計(jì)數(shù)長度選擇方式3.計(jì)算時(shí)間常數(shù)初始化編程格式:MOVTMOD,#方式字;選擇方式MOVTHx,#XH ;裝入Tx時(shí)間常數(shù)MOVTLx,#XL(SETBEA ) ;開Tx中斷(SETBETx )SETBTRx ;啟動(dòng)Tx定時(shí)器

三.MCS-51定時(shí)器的應(yīng)用4.溢出處理編程格式:1)查詢方式:先查詢定時(shí)器溢出標(biāo)志,再進(jìn)行溢出處理。 … ;定時(shí)器初始化

WAIT:JBC TFx,PT;檢測溢出標(biāo)志

SJMP WAIT PT: MOV THx,#XH;重裝時(shí)間常數(shù)

MOV TLx,#XL

… ;溢出處理

SJMP WAIT2)中斷方式:初始化后執(zhí)行其他任務(wù),中斷服務(wù)程序處理溢出。

ORG 0000H LJMP MAIN ORG 000BH(001BH);Tx中斷入口

LJMP PTS MAIN: … ;初始化后執(zhí)行其他程序

PTS: … ;溢出中斷服務(wù)程序

MOV THx,#XH ;重裝時(shí)間常數(shù)

MOV TLx,#XL RETI四.舉例由P1.0輸出方波信號(hào),周期為2ms,

設(shè)fosc=12MHz。2ms解:每隔1ms改變一次P1.0的輸出狀態(tài)。用T0非門控方式1定時(shí)。計(jì)算時(shí)間常數(shù):X=216-t/T=216-1000/1=FC18H(1)查詢方式:

ORG0000h

JMPSTART ORG 1000H START: MOV TMOD,#01H MOV TL0,#18H MOV TH0,#0FCH SETB TR0 LOOP: JBC TF0,PTF0 SJMP LOOP PTF0: CPL P1.0 MOV TL0,#18H MOV TH0,#0FCH SJMP LOOPEND(2)中斷方式

ORG 0000H AJMP MAIN ORG 000BH AJMP PT0INT ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#01H MOV TL0,#18H MOV TH0,#0FCH SETB EA SETB ET0 SETB TR0 HERE: SJMP HERE PT0INT:CPL P1.0 MOV TL0,#18H MOV TH0,#0FCH RETIEND長定時(shí)方法:增加一個(gè)軟件計(jì)數(shù)器或一個(gè)硬件計(jì)數(shù)器。硬件方式:T0定時(shí),T1計(jì)數(shù)T0的定時(shí)跳變信號(hào)P1.0的負(fù)跳變次數(shù),計(jì)滿5個(gè)跳變?yōu)?秒。P1.0P1.7編制程序使P1.7驅(qū)動(dòng)LED亮1秒滅1秒地閃爍。設(shè)時(shí)鐘頻率為6MHzT0方式1定時(shí),T1方式2計(jì)數(shù)T1計(jì)數(shù)值為5,初值為#0FBH;設(shè)置T0的定時(shí)值為100ms,初值為#3CH;T0溢出后(每100ms),P1.0反轉(zhuǎn)一次同時(shí)P1.0每下跳變一次(反轉(zhuǎn)兩次),T1計(jì)數(shù)一次累計(jì)5次,P1.7反轉(zhuǎn)一次START: MOVTMOD,#61H;T0方式1定時(shí),T1方式2計(jì)數(shù)

MOVTL1,#0FBH;差5個(gè)負(fù)跳變就溢出,同時(shí)自動(dòng)重裝

MOVTH1,#0FBH;T1計(jì)數(shù)值為5

CLRP1.0 SETBTR1;T1開始計(jì)數(shù)LOOP1: CPLP1.7LOOP2: MOVTL0,#3CH;設(shè)置T0的定時(shí)值為100ms, MOVTH0,#0B0H;每100ms作一次反相跳變

SETB TR0;T0開始計(jì)數(shù)LOOP3: JBC TF0,LOOP4;T0溢出后(每100ms),P1.0反轉(zhuǎn)一次

SJMP LOOP3;同時(shí)P1.0每下跳變一次(反轉(zhuǎn)兩次),LOOP4: CPL P1.0;T1計(jì)數(shù)一次

JBC TF1,LOOP1;累計(jì)5次,P1.7反轉(zhuǎn)一次

SJMP LOOP2例定時(shí)器外部引腳T0(T1)用作外部中斷信號(hào)輸入端。外部負(fù)脈沖引起中斷請求,選計(jì)數(shù)方式,時(shí)間常數(shù)為FFH。例:門控方式測量正脈沖寬度解:INT1引腳輸入被檢測信號(hào),記錄在正脈沖的時(shí)間內(nèi)包含機(jī)器脈沖個(gè)數(shù)。TR1=1 T1啟動(dòng)

溫馨提示

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

評論

0/150

提交評論