版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
鄭州大學3.3MCS-51單片機的定時器/計數(shù)器
3.3.1定時器/計數(shù)器
1.基本概念(1)計數(shù):計數(shù)是指對外部事件的個數(shù)進行計量。其實質(zhì)就是對外部輸入脈沖的個數(shù)進行計量。實現(xiàn)計數(shù)功能的器件稱為計數(shù)器。(2)定時:8051單片機中的定時器和計數(shù)器是一個部件,只不過計數(shù)器記錄的是外界發(fā)生的事件,而定時器則是由單片機內(nèi)部提供一個非常穩(wěn)定的計數(shù)源進行定時的。這個計數(shù)源是由單片機的晶振經(jīng)過12分頻后獲得的一個脈沖源。所以定時器計數(shù)脈沖的時間間隔與晶振有關(guān)。docin/sundae_meng鄭州大學3.3MCS-51單片機的定時器/計數(shù)器3.31鄭州大學(3)定時的種類
軟件定時:利用執(zhí)行一個循環(huán)程序進行時間延遲。其特點是定時時間精確,不需外加硬件電路,但占用CPU時間。因此軟件定時的時間不宜過長。
硬件定時:利用硬件電路實現(xiàn)定時。其特點是不占用CPU時間,通過改變電路元器件參數(shù)來調(diào)節(jié)定時,但使用不夠靈活方便。對于時間較長的定時,常用硬件電路來實現(xiàn)。
可編程定時器:通過專用的定時器/計數(shù)器芯片實現(xiàn)。其特點是通過對系統(tǒng)時鐘脈沖進行計數(shù)實現(xiàn)定時,定時時間可通過程序設(shè)定的方法改變,使用靈活方便。也可實現(xiàn)對外部脈沖的計數(shù)功能。docin/sundae_meng鄭州大學(3)定時的種類docin/sundae_meng2鄭州大學
MCS-51單片機內(nèi)部有兩個16位可編程的定時器/計數(shù)器,簡稱為T0和T1,均可作定時器用也可計數(shù)器,它們均是二進制加法計數(shù)器,當計數(shù)器計滿回零時能自動產(chǎn)生溢出中斷請求,表示定時時間已到或計數(shù)已終止。適用于定時控制、延時、外部計數(shù)和檢測等。計數(shù)器:對引腳T0(P3.4)和T1(P3.5.)輸入的外部脈沖信號計數(shù),當輸入脈沖信號從1到0的負跳變時,計數(shù)器就自動加1。計數(shù)的最高頻率一般為振蕩頻率的1/24。定時器:對系統(tǒng)晶振振蕩脈沖的12分頻輸出進行計數(shù)。(1)定時器/計數(shù)器的結(jié)構(gòu)組成:16位加法計數(shù)器、工作方式寄存器TMOD和控制寄存器TCON。
T0:TL0(低8位)和TH0(高8位)
T1:TL1(低8位)和TH1(高8位)2.MCS-51內(nèi)部定時器/計數(shù)器
docin/sundae_meng鄭州大學MCS-51單片機內(nèi)部有兩個16位可編程的定3鄭州大學
8051單片機內(nèi)部的定時器/計數(shù)器的結(jié)構(gòu)如下圖所示。docin/sundae_meng鄭州大學8051單片機內(nèi)部的定時器/計數(shù)4鄭州大學(2)控制寄存器TCON(88H)
TF1TR1TF0TR0IE1IT1IE0IT0TF0/TF1:T0/1計數(shù)溢出標志位??捎糜谏暾堉袛嗷蚬〤PU查詢。在進入中斷服務(wù)程序時會自動清零;但在查詢方式時必須軟件清零。
=1:計數(shù)溢出;
=0:計數(shù)未滿。TR0/TR1:T0/1啟??刂莆?。
=1:啟動計數(shù);
=0:停止計數(shù)。IE0/IE1和IT0/IT1:用于管理外部中斷(前面已介紹過)。docin/sundae_meng鄭州大學(2)控制寄存器TCON(88H)TF15鄭州大學
M1,M0:工作方式選擇位。
=00:13位定時器/計數(shù)器;
=01:16位定時器/計數(shù)器(常用);
=10:可自動重裝的8位定時器/計數(shù)器(常用);
=11:T0分為2個8位定時器/計數(shù)器;僅適用于T0。
C/T
:定時方式/計數(shù)方式選擇位。
=1:選擇計數(shù)器工作方式,對T0/T1引腳輸入的外部事件的負脈沖計數(shù);
=0:選擇定時器工作方式,對機器周期脈沖計數(shù)定時。如下頁圖所示。(3)工作方式寄存器TMOD
GATEC/TM1M0GATEC/TM1M0T1T2docin/sundae_meng鄭州大學M1,M0:工作方式選擇位。(3)工作方式寄存6鄭州大學GATE:門控位,定時器/計數(shù)器的啟/??捎绍浖c硬件兩者控制
=0:軟件控制,只由TCON中的啟/停控制位TR0/TR1控制定時器/計數(shù)器的啟/停。
=1:硬件控制,由外部中斷請求信號/和TCON中的啟/??刂莆籘R0/TR1組合狀態(tài)控制定時器/計數(shù)器的啟/停。其控制邏輯如下圖所示。docin/sundae_meng鄭州大學GATE:門控位,定時器/計數(shù)器的啟/??捎绍浖c硬7鄭州大學3.3.2定時器/計數(shù)器的工作方式
8051單片機的定時器/計數(shù)器共有四種工作模式,現(xiàn)以T0為例加以介紹,T1與T0的工作原理相同,但方式3下T1停止計數(shù)。方式(如F0)和用戶定義名稱等幾種方式。1.工作方式0(M1M0=00,13位定時器/計數(shù)器)
由TH0的全部8位和TL0的低5位(TL0的高3位未用)構(gòu)成13位加1計數(shù)器,當TL0低5位計數(shù)滿時直接向TH0進位,并當全部13位計數(shù)滿溢出時,溢出標志位TF0置“1”。2.工作方式1(M1M0=01,16位定時器/計數(shù)器)
由TH0和TL0構(gòu)成16位加1計數(shù)器,其他特性與工作方式0相同。3.工作方式2(M1M0=10,自動重裝計數(shù)初值的8位定時器/計數(shù)器)
16位定時器/計數(shù)器被拆成兩個8位寄存器TH0和TL0,CPU在對它們初始化時必須裝入相同的定時器/計數(shù)器初值。以TL0作計數(shù)器,而TH0作為預(yù)置寄存器。當計數(shù)滿溢出時,TF0置“1”,同時TH0將計數(shù)初值以硬件方法自動裝入TL0。這種工作方式很適合于那些重復(fù)計數(shù)的應(yīng)用場合(如串行數(shù)據(jù)通信的波特率發(fā)生器)。docin/sundae_meng鄭州大學3.3.2定時器/計數(shù)器的工作方式8鄭州大學4.工作方式3(M1M0=11,2個8位定時器/計數(shù)器,僅適用于T0)TL0:8位定時器/計數(shù)器,使用T0原有控制資源TR0和TF0,其功能和操作與方式0或方式1完全相同。TH0:只能作為8位定時器,借用T1的控制位TR1和TF1,只能對片內(nèi)機器周期脈沖計數(shù)。在方式3模式下,定時器/計數(shù)器0可以構(gòu)成兩個定時器或者一個定時器和一個計數(shù)器。
T0方式3下的T1方式2,因定時初值能自動恢復(fù),用作波特率發(fā)生器更為合適。docin/sundae_meng鄭州大學4.工作方式3(M1M0=11,2個8位定時9鄭州大學
定時器/計數(shù)器可按片內(nèi)機器周期定時,也可對由T0/T1引腳輸入一個負脈沖進行加法計數(shù)。在應(yīng)用時,其工作方式和工作過程均可通過程序設(shè)定和控制,因此,定時器/計數(shù)器在工作前必須先對其進行初始化,計算和設(shè)置初值。
1.定時器T0/T1中斷申請過程(1)在已經(jīng)開放T0/T1中斷允許且已被啟動的前提下,T0/T1加1計滿溢出時TF0/TF1標志位自動置“1”;(2)CPU檢測到TCON中TF0/TF1變“1”后,將產(chǎn)生指令:LCALL000BH/LCALL001BH執(zhí)行中斷服務(wù)程序;(3)TF0/TF1標志位由硬件自動清“0”,以備下次中斷申請。3.3.3定時器/計數(shù)器的應(yīng)用
docin/sundae_meng鄭州大學定時器/計數(shù)器可按片內(nèi)機器周期定時,也10鄭州大學2.定時器/計數(shù)器初始化的步驟
(1)寫TMOD,設(shè)置定時器/計數(shù)器的工作方式;
(2)計算定時器/計數(shù)器的初值,寫入TH0/TH1、TL0/TL1。
(3)設(shè)置IE、IP,以開放相應(yīng)的中斷和設(shè)定中斷優(yōu)先級。
3.定時器/計數(shù)器的定時器/計數(shù)器范圍(1)工作方式0:13位定時器/計數(shù)器方式最大計數(shù)值=213=8192
(2)工作方式1:16位定時器/計數(shù)器方式最大計數(shù)值=216=65536
(3)工作方式2和工作方式3:8位的定時器/計數(shù)器方式因此,最大計數(shù)值=28=256docin/sundae_meng鄭州大學2.定時器/計數(shù)器初始化的步驟(1)寫TM11鄭州大學3.計數(shù)器初值的計算
方法:用最大計數(shù)量減去需要的計數(shù)次數(shù)。即:
TC=MC
其中:TC——計數(shù)器需要預(yù)置的初值;
M——計數(shù)器的模值(最大計數(shù)值);方式0時,M=213;方式1時,M=216;方式2,3時,M=28;
C——計數(shù)器計滿回0所需的計數(shù)值,即設(shè)計任務(wù)要求的計數(shù)值。例如:流水線上一個包裝是12盒,要求每到12盒就產(chǎn)生一個動作,用單片機的工作方式0來控制,則應(yīng)當預(yù)置的初值為:
TC=MC=213
12=8180docin/sundae_meng鄭州大學3.計數(shù)器初值的計算方法:用最大計數(shù)量減去需要的12鄭州大學4.定時器初值的計算
定時時間的計算公式為:
T=(MTC)×T0(或TC=MT/T0)其中:T——定時器的定時時間,即設(shè)計任務(wù)要求的定時時間;
T0——計數(shù)器計數(shù)脈沖的周期,即單片機系統(tǒng)主頻周期的12倍;
M——計數(shù)器的模值;
TC——定時器需要預(yù)置的初值。若設(shè)初值TC=0,則定時器定時時間為最大。若設(shè)單片機系統(tǒng)主頻為12MHz,則各種工作方式定時器的最大定時時間為:工作方式0:Tmax=213×1s=8.192ms工作方式1:Tmax=216×1s=65.536ms工作方式2和3:Tmax=28×1s=0.256msdocin/sundae_meng鄭州大學4.定時器初值的計算定時時間的計算公式為:doc13鄭州大學[例]設(shè)外部有一個脈沖源。編制程序,對外部脈沖源進行計數(shù)并顯示。解:將外部計數(shù)源連到引腳T1上,可用LED將計數(shù)的值顯示出來,我們用P1口連接的8個LED來顯示計到的數(shù)據(jù)。程序如下:
ORG0000H AJMPSTART ;轉(zhuǎn)入主程序
ORG0030H START:MOVSP,#60H ;設(shè)置堆棧指針
MOVTMOD,#60H ;定時器/計數(shù)器1作計數(shù)用01100000B
MOVTL1,#00HMOVTH1,#00H
SETBTR1 ;啟動計數(shù)器1開始運行
LOOP:MOVA,TL1 ;讀計數(shù)器1的計數(shù)值送A MOVP1,A ;將計數(shù)值輸出到P1口,驅(qū)動LED顯示
AJMPLOOP ;轉(zhuǎn)回LOOP END 5.定時器/計數(shù)器應(yīng)用舉例docin/sundae_meng鄭州大學[例]設(shè)外部有一個脈沖源。編制程序,對外部脈沖源進行14鄭州大學
P126例3.6
設(shè)一只發(fā)光二極管LED和8051的P1.0腳相連。當P1.0腳是高電平時,LED不亮;當P1.0腳是低電平時,LED亮。編制程序用定時器來實現(xiàn)發(fā)光二極管LED的閃爍功能。已知單片機系統(tǒng)主頻為12MHz。解:設(shè)置LED每60ms閃爍1次。選擇定時器/計數(shù)器0工作在方式1。此時定時器對系統(tǒng)主頻的12分頻脈沖計數(shù)。T0=1微秒,TC=M-T/T0=5536=15A0Hdocin/sundae_meng鄭州大學P126例3.6設(shè)一只發(fā)光二極管LED和8015鄭州大學方法1:用查詢方式
ORG0000HMOVTH0,#15HAJMPSTARTMOVTL0,#0A0HORG0030HSETBTR0START:MOVSP,#60HAJMPLOOPMOVP1,#0FFHENDMOVTMOD,#01H;00000001MOVTH0,#15HMOVTL0,#0A0HSETBTR0LOOP:JBCTF0,NEXTAJMPLOOPNEXT:CPLP1.0docin/sundae_meng鄭州大學方法1:用查詢方式ORG0016鄭州大學方法2:用中斷方式實現(xiàn)
ORG0000HTIME0:PUSHACCAJMPSTARTPUSHPSWORG000BHCPLP1.0AJMPTIME0MOVTH0,#15HORG0030HMOVTL0,#0A0HSTART:MOVSP,#60HSETBTR0
MOVP1,#0FFHPOPPSWMOVTMOD,#01HPOPACCMOVTH0,#15HRETIMOVTL0,#0A0HENDSETBEASETBET0SETBTR0LOOP:AJMPLOOPdocin/sundae_meng鄭州大學方法2:用中斷方式實現(xiàn)ORG017鄭州大學[例]設(shè)置LED每1s閃爍一次。已知單片機系統(tǒng)主頻為12MHz。解:定時器/計數(shù)器的最長的定時是65.536ms,無法實現(xiàn)1s的定時??梢圆捎密浖嫈?shù)器來進行設(shè)計。docin/sundae_meng鄭州大學[例]設(shè)置LED每1s閃爍一次。已知單片機系統(tǒng)主頻18鄭州大學設(shè)計思想:定義一個軟件計數(shù)器單元30H,先用定時器/計數(shù)器0做一個50ms的定時器,定時時間到了以后將軟件計數(shù)器中的值加1,如果軟件計數(shù)器計到了20,取反P1.0,并清掉軟件計數(shù)器中的值,否則直接返回。則完成了20次定時中斷才取反一次P1.0,因此定時時間就為20×50=1000ms=1s。定時器/計數(shù)器0采用工作方式1,其初值為:
21650ms/1s=6553650000=15536=3CB0H電路圖如下:docin/sundae_meng鄭州大學設(shè)計思想:定義一個軟件計數(shù)器單元30H,先用定時器/19鄭州大學程序如下:
ORG0000H AJMPSTART;轉(zhuǎn)入主程序
ORG000BH ;定時器/計數(shù)器0的中斷服務(wù)程序入口地址
AJMPTIME0;跳轉(zhuǎn)到真正的定時器中斷服務(wù)程序處
ORG0030H START:MOVSP,#60H;設(shè)置堆棧指針
MOVP1,#0FFH;關(guān)發(fā)光二極管LED(使其滅)
MOV30H,#00H;軟件計數(shù)器預(yù)清0 MOVTMOD,#01H;定時器/計數(shù)器0工作于方式1 MOVTH0,#3CH;設(shè)置定時器/計數(shù)器的初值
MOVTL0,#0B0H SETBEA ;開總中斷允許
SETBET0 ;開定時器/計數(shù)器0中斷允許
SETBTR0 ;啟動定時器/計數(shù)器0LOOP:AJMPLOOP ;循環(huán)等待(真正工作時,這里可寫任意其他程序) docin/sundae_meng鄭州大學程序如下:docin/sundae_meng20鄭州大學定時器/計數(shù)器0的中斷服務(wù)程序如下:
TIME0:PUSHACC ;將PSW和ACC推入堆棧保護
PUSHPSW INC30H ;軟件計數(shù)器加1 MOVA,30H CJNEA,#20,T_LP2 ;軟件計數(shù)器單元中的值到了20了嗎?到了,繼續(xù)執(zhí)行;否則,轉(zhuǎn)入T_LP2T_LP1:CPLP1.0 ;到了,P1.0取反
MOV30H,#00H ;清軟件計數(shù)器
T_LP2:MOVTH0,#3CH ;重置定時器/計數(shù)器的初值
MOVTL0,#0B0H POPPSW ;恢復(fù)PSW和ACC POPACC RETI ;中斷返回
END docin/sundae_meng鄭州大學定時器/計數(shù)器0的中斷服務(wù)程序如下:docin/su21鄭州大學3.4MCS-51單片機的串行通信
3.4.1概述1.通信
通信:單片機與外界進行信息交換統(tǒng)稱為通信。8051單片機的通信方式有兩種:并行通信:數(shù)據(jù)的各位同時發(fā)送或接收。特點是傳送速度快、效率高,但成本高。適用于短距離傳送數(shù)據(jù)。計算機內(nèi)部的數(shù)據(jù)傳送一般均采用并行方式。串行通信:數(shù)據(jù)一位一位順序發(fā)送或接收。特點是傳送速度慢,但成本低。適用于較長距離傳送數(shù)據(jù)。計算機與外界的數(shù)據(jù)傳送一般均采用串行方式。
docin/sundae_meng鄭州大學3.4MCS-51單片機的串行通信3.4.122鄭州大學2.數(shù)據(jù)通信的制式單工方式:數(shù)據(jù)僅按一個固定方向傳送;半雙工方式:數(shù)據(jù)可實現(xiàn)雙向傳送,但不能同時進行;全雙工方式:允許雙方同時進行數(shù)據(jù)雙向傳送;多工方式:在同一線路上實現(xiàn)資源共享。3.串行通信的分類
串行數(shù)據(jù)通信按數(shù)據(jù)傳送方式可分為異步通信和同步通信兩種形式:同步方式:以數(shù)據(jù)塊為單位進行數(shù)據(jù)傳送,包括同步字符、數(shù)據(jù)塊和校驗字符CRC。優(yōu)點是數(shù)據(jù)傳輸速率較高,缺點是要求發(fā)送時鐘和接收時鐘保持嚴格同步。數(shù)據(jù)格式如下圖所示。docin/sundae_meng鄭州大學2.數(shù)據(jù)通信的制式docin/sundae_men23鄭州大學異步方式:以字符為單位進行數(shù)據(jù)傳送,每一個字符均按固定的字符格式傳送,又被稱為幀。優(yōu)點是不需要傳送同步脈沖,可靠性高,所需設(shè)備簡單;缺點是字符幀中因包含有起始位和停止位而降低了有效數(shù)據(jù)的傳輸速率。數(shù)據(jù)格式如下圖所示:docin/sundae_meng鄭州大學異步方式:以字符為單位進行數(shù)據(jù)傳送,每一個字符均按固24鄭州大學4.串行數(shù)據(jù)通信的波特率
波特率是指每秒鐘傳送信號的數(shù)量,單位為波特(Baud)。而每秒鐘傳送二進制數(shù)的信號數(shù)(即二進制數(shù)的位數(shù))定義為比特率,單位是bps(bitpersecond)或?qū)懗蒪/s(位/秒)。在單片機串行通信中,傳送的信號是二進制信號,波特率與比特率數(shù)值上相等。單位采用bps。例如,異步串行通信的數(shù)據(jù)傳送的速率是120字符/秒,而每個字符規(guī)定包含10位數(shù)字,則傳輸波特率為:
120字符/秒×10位/字符=1200位/秒=1200bpsdocin/sundae_meng鄭州大學4.串行數(shù)據(jù)通信的波特率波特率是指每秒鐘傳25鄭州大學3.4.2MCS-51的串行口
MCS-51單片機內(nèi)部有一個全雙工的串行通信口(P3.0、P3.1),既可作UART(通用異步接收/發(fā)送器)用,也可作同步移位寄存器使用,還可用于網(wǎng)絡(luò)通信,其幀格式可有8位、10位和11位,并能設(shè)置各種波特率。1.串行口寄存器結(jié)構(gòu)
(1)兩個物理上獨立的同名的接收/發(fā)送緩沖寄存器SBUF
指令MOVSBUF,A啟動一次數(shù)據(jù)發(fā)送,指令MOVA,SBUF完成一次數(shù)據(jù)接收,即向發(fā)送緩沖器SBUF寫入數(shù)據(jù)即可發(fā)送數(shù)據(jù),從接收緩沖器SBUF讀出數(shù)據(jù)即可接收數(shù)據(jù)。
(2)輸入和輸出移位寄存器和控制器等組成。(3)2個SFR寄存器SCON和PCON,用于串行口的初始化編程。(4)接收/發(fā)送數(shù)據(jù),無論是否采用中斷方式工作,每接收/發(fā)送一個數(shù)據(jù)都必須用指令對RI/TI清0,以備下一次收/發(fā)。docin/sundae_meng鄭州大學3.4.2MCS-51的串行口MCS-26鄭州大學
SBUF(發(fā))SBUF(收)發(fā)送控制器TI接收控制器RI移位寄存器波特率發(fā)生器T11A累加器(門)移位寄存器RxD(P3.0)TxD(P3.1)去申請中斷引腳引腳CPU內(nèi)部
MCS-51串行口的結(jié)構(gòu)如下圖所示:docin/sundae_meng鄭州大學SBUF(發(fā))SBUF(收)發(fā)送控制器TI接27鄭州大學2.串行通信控制寄存器SCON
(98H)SM0SM1SM2RENTB8RB8TIR1SM0,SM1:串行口4種工作方式控制位。
=00:方式0,8位同步移位寄存器,其波特率為fosc/12;
=01:方式1,10位UART,其波特率為可變,由定時器控制;
=10:方式2,11位UART,其波特率為fosc/64或fosc/32;
=11:方式3,11位UART,其波特率為可變,由定時器控制。其中:fosc為系統(tǒng)晶振頻率。RI,TI:串行口收/發(fā)數(shù)據(jù)申請中斷標志位=1申請中斷;=0不申請中斷。docin/sundae_meng鄭州大學2.串行通信控制寄存器SCON(98H)SM028鄭州大學RB8:在方式2、3中,用于存放收到的第9位數(shù)據(jù);在雙機通信中,作為奇偶校驗;在多機通信中,用作區(qū)別地址幀/數(shù)據(jù)幀的標志。TB8:方式2、3中,是要發(fā)送的第9位數(shù)據(jù);在雙機通信中,用于對接收到的數(shù)據(jù)進行奇偶校驗;在多機通信中,用作判斷地址幀/數(shù)據(jù)幀,TB8=0表示發(fā)送的是數(shù)據(jù),TB8=1表示發(fā)送的是地址。REN:串行口接收允許控制位
=1:表示允許接收;
=0:禁止接收。SM2:串行口多機通信控制位,作為方式2、方式3的附加控制位。docin/sundae_meng鄭州大學RB8:在方式2、3中,用于存放收到的第9位數(shù)據(jù);在29鄭州大學3.中斷允許寄存器IE(0A8H)
中斷允許寄存器IE在3.2.2節(jié)中已介紹。其中對串行口有影響的位ES。ES為串行中斷允許控制位。
ES=1:允許串行中斷;
ES=0:禁止串行中斷。4.電源管理寄存器PCON(87H)不可位尋址。PCON主要用于實現(xiàn)電源控制而設(shè)置的專用寄存器,已在1.3.3節(jié)中介紹過。其格式如下圖所示。SMODGF1GF0PD1DLSMOD:串行口波特率倍增位
=1:串行口波特率加倍。
=0:串行口波特率不變,系統(tǒng)復(fù)位時默認SMOD=0。docin/sundae_meng鄭州大學3.中斷允許寄存器IE(0A8H)SMOD30鄭州大學3.4.3串行口的工作方式
1.工作方式0(8位移位寄存器I/O方式)發(fā)送/接收過程:SBUF中的串行數(shù)據(jù)由RxD逐位移出/移入(低位在先,高位在后);TxD輸出移位時鐘,頻率=fosc1/12;每送出/接收8位數(shù)據(jù)TI/RI自動置1;需要用軟件清零TI/RI。注意:串行口在方式0下的工作并非是一種同步通信方式,經(jīng)常配合“串入并出”“并入串出”移位寄存器一起使用,以達到擴展一個并行口的目的。擴展電路如下圖所示。docin/sundae_meng鄭州大學3.4.3串行口的工作方式1.工作方式0(31鄭州大學如要發(fā)送數(shù)據(jù),查詢方式的程序如下:
MOVSCON,#00H;串行口方式0MOVSBUF,A;將數(shù)據(jù)送出
JNBTI,$;等待數(shù)據(jù)發(fā)送完畢
CLRTI;為下次發(fā)送作準備注意:復(fù)位時,SCON已經(jīng)被清零,缺省值為方式0。發(fā)送條件:TI=0。接收條件:TI=0,置位REN=1(允許接收數(shù)據(jù))。2.方式1
(波特率可變的10位異步通信方式)發(fā)送/接收數(shù)據(jù)的格式:一幀信息包括1個起始位0,8個數(shù)據(jù)位和1個停止位1。發(fā)送/接收過程:SBUF中的串行數(shù)據(jù)由RXD逐位移出/移入;TXD輸出移位時鐘,頻率=(2SMOD/32)T1的溢出率,波特率可變。每送出/接收8位數(shù)據(jù)TI/RI自動置1;需要用軟件清零TI/RI。工作時,發(fā)送端自動添加一個起始位和一個停止位;接收端自動去掉一個起始位和一個停止位。發(fā)送/接收條件:同方式0。docin/sundae_meng鄭州大學如要發(fā)送數(shù)據(jù),查詢方式的程序如下:docin/sun32鄭州大學3.方式2(固定波特率的11位異步接收/發(fā)送方式)發(fā)送/接收過程:方式2的接收/發(fā)送過程類似于方式1,所不同的是它比方式1增加了一位“第9位”數(shù)據(jù)(TB8/RB8),用于“奇偶校驗”。方式2常用于單片機間通信。波特率=fosc2SMOD/64。發(fā)送/接收條件:同方式0。4.方式3(可變波特率的11位異步接收/發(fā)送方式)
方式3和方式2唯一的區(qū)別是波特率機制不同,方式3的波特率=(2SMOD/32)T1的溢出率。docin/sundae_meng鄭州大學3.方式2(固定波特率的11位異步接收/發(fā)送方式)33鄭州大學奇偶校驗:奇偶校驗是檢驗串行通信雙方傳輸?shù)臄?shù)據(jù)正確與否的一個措施,并不能保證通信數(shù)據(jù)的傳輸一定正確。即如果奇偶校驗發(fā)生錯誤,表明數(shù)據(jù)傳輸一定出錯了;如果奇偶校驗沒有出錯,絕不等于數(shù)據(jù)傳輸完全正確。奇校驗規(guī)定:8位有效數(shù)據(jù)連同1位附加位中,二進制“1”的個數(shù)為奇數(shù)。偶校驗規(guī)定:8位有效數(shù)據(jù)連同1位附加位中,二進制“1”的個數(shù)為偶數(shù)。約定發(fā)送采用奇校驗:若發(fā)送的8位有效數(shù)據(jù)中“1”的個數(shù)為偶數(shù),則要人為在附加位中添加一個“1”一起發(fā)送;若發(fā)送的8位有效數(shù)據(jù)中“1”的個數(shù)為奇數(shù),則要人為在附加位中添加一個“0”一起發(fā)送。約定接收采用奇校驗:若接收到的9位數(shù)據(jù)中“1”的個數(shù)為奇數(shù),則表明接收正確,取出8位有效數(shù)據(jù)即可;若接收到的9位數(shù)據(jù)中“1”的個數(shù)為偶數(shù),則表明接收出錯!應(yīng)當進行出錯處理。
采用偶校驗時,處理方法與奇校驗類似。docin/sundae_meng鄭州大學奇偶校驗:奇偶校驗是檢驗串行通信雙方傳輸?shù)臄?shù)據(jù)正確與34鄭州大學3.4.4串行口的通信波特率
串行口的通信波特率恰到好處地反映了串行傳輸數(shù)據(jù)的速率。在MCS-51串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時器T1的溢出率(T1溢出信號的頻率)控制。各種方式的通信波特率如下:方式0:波特率固定為fosc/12。其中:fosc——系統(tǒng)主機晶振頻率方式2:波特率由PCON中的選擇位SMOD來決定,可由下式表示:波特率=(2SMOD/64)×fosc
方式1和方式3:波特率是可變的,由定時器T1的溢出率控制。波特率為:波特率=(2SMOD/32)×定時器T1溢出率
T1溢出率=T1計數(shù)率/產(chǎn)生溢出所需的周期
=(fosc/12)/(2KTC)其中:K——定時器T1的位數(shù),定時器T1用作波特率發(fā)生器時,通常工作在方式2,所以T1的溢出所需的周期數(shù)=28TC。
TC——定時器T1的預(yù)置初值。docin/sundae_meng鄭州大學3.4.4串行口的通信波特率串行口的通信35鄭州大學
下表列出了定時器T1工作于方式2的常用波特率及初值。docin/sundae_meng鄭州大學下表列出了定時器T1工作于方式2的常36鄭州大學3.4.5串行口的應(yīng)用
1.串口方式0應(yīng)用編程
[例題6]用8051串行口外接CD4094擴展8位并行輸出口,8位并行口的各位都接一個發(fā)光二極管,要求發(fā)光二極管呈流水燈狀態(tài)(輪流點亮)。
解:硬件連接電路如下圖所示。docin/sundae_meng鄭州大學3.4.5串行口的應(yīng)用1.串口方式0應(yīng)用編程37鄭州大學
在開始通信之前,應(yīng)先對控制寄存器SCON進行初始化。將00H送SCON即設(shè)置方式0。數(shù)據(jù)傳送采用查詢方式,通過查詢TI的狀態(tài),來決定是否發(fā)送下一幀數(shù)據(jù)。在串行接收時,通過對RI查詢來確定何時接收下一幀數(shù)據(jù)。程序如下:
ORG1000H START:MOVSCON,#00H ;置串行口工作方式0 MOVA,#80H ;最高位燈先亮
CLRP1.0 ;關(guān)閉并行輸出
OUT0:MOVSBUF,A ;開始串行輸出
OUT1:JNBTI,OUT1 ;輸出完否?未完,等待;完了,繼續(xù)執(zhí)行
CLRTI ;完了,清TI標志,以備下次發(fā)送docin/sundae_meng鄭州大學在開始通信之前,應(yīng)先對控制寄存器SCON進行38鄭州大學
SETBP1.0 ;打開并行口輸出
ACALLDELAY ;延時一段時間
RRA ;循環(huán)右移
CLRP1.0 ;關(guān)閉并行輸出
SJMPOUT0 ;循環(huán)DELAY:MOVR7,#250 ;延時子程序
D1:MOVR6,#250 D2:DJNZR6,D2 DJNZR7,D1 RET END docin/sundae_meng鄭州大學SETBP1.0 39鄭州大學2.雙機通信
雙機通信的硬件連接圖如下圖所示。
docin/sundae_meng鄭州大學2.雙機通信docin/sundae_meng40鄭州大學通信協(xié)議如下:
設(shè)1號機是發(fā)送方,2號機是接收方。采用串行口方式1進行通信,一幀信息為10位,其中有1個起始位、8個數(shù)據(jù)位和1個停止位;波特率為2400bps,T1工作在定時器方式2,單片機時鐘振蕩頻率選用11.0592MHz,查表3.4.3可得TH1=TL1=0F4H,PCON寄存器的SMOD位為0。當1號機發(fā)送時,先發(fā)送一個“E1”聯(lián)絡(luò)信號,2號機收到后回答一個“E2”應(yīng)答信號,表示同意接收。當1號機收到應(yīng)答信號“E2”后,開始發(fā)送數(shù)據(jù),每發(fā)送一個字節(jié)數(shù)據(jù)都要計算“校驗和”,假定數(shù)據(jù)塊長度為16個字節(jié),起始地址為40H,一個數(shù)據(jù)塊發(fā)送完畢后立即發(fā)送“校驗和”。2號機接收數(shù)據(jù)并轉(zhuǎn)存到數(shù)據(jù)緩沖區(qū),起始地址也為40H,每接收到一個字節(jié)數(shù)據(jù)便計算一次“校驗和”,當收到一個數(shù)據(jù)塊后,再接收1號機發(fā)來的“校驗和”,并將它與2號機求出的校驗和進行比較。若兩者相等,說明接收正確,2號機回答00H;若兩者不相等,說明接收不正確,2號機回答0FFH,請求重發(fā)。1號機接到00H后結(jié)束發(fā)送。若收到的答復(fù)非零,則重新發(fā)送數(shù)據(jù)一次。程序框圖如下頁圖所示。docin/sundae_meng鄭州大學通信協(xié)議如下:docin/sundae_meng41鄭州大學docin/sundae_meng鄭州大學docin/sundae_meng42鄭州大學
發(fā)送程序如下:
ORG1000H ASTART:CLREA MOVTMOD,#20H ;定時器1置為方式2 MOVTH1,#0F4H ;裝載定時器初值,波特率2400 MOVTL1,#0F4H MOVPCON,#00H SETBTR1 ;啟動定時器
MOVSCON,#50H ;設(shè)定串口方式1,且準備接收應(yīng)答信號
ALOOP1:MOVSBUF,#0E1H ;發(fā)聯(lián)絡(luò)信號
JNBTI,$ ;等待一幀發(fā)送完畢
CLRTI ;允許再發(fā)送
JNBRI,$ ;等待2號機的應(yīng)答信號
CLRRI ;允許再接收
MOVA,SBUF ;2號機應(yīng)答后,讀至A XRLA,#0E2H ;判斷2號機是否準備完畢
JNZALOOP1 ;2號機未準備好,繼續(xù)聯(lián)絡(luò)docin/sundae_meng鄭州大學發(fā)送程序如下:docin/sundae_meng43鄭州大學
ALOOP2:MOVR0,#40H ;2號機準備好,設(shè)定數(shù)據(jù)塊地址指針初值
MOVR7,#10H ;設(shè)定數(shù)據(jù)塊長度初值
MOVR6,#00H ;清校驗和單元
ALOOP3:MOVSBUF,R0 ;發(fā)送一個數(shù)據(jù)字節(jié)
MOVA,R6 ADDA,R0 ;求校驗和
MOVR6,A ;保存校驗和
INCR0 JNBTI,$ CLRTI DJNZR7,ALOOP3 ;整個數(shù)據(jù)塊是否發(fā)送完畢
MOVSBUF,R6 ;發(fā)送校驗和
JNBTI,$ CLRTI JNBRI,$ ;等待2號機的應(yīng)答信號
CLRRI MOVA,SBUF ;2號機應(yīng)答,讀至A JNZALOOP2 ;2號機應(yīng)答“錯誤”,轉(zhuǎn)重新發(fā)送
RET ;2號機應(yīng)答“正確”,返回
END docin/sundae_meng鄭州大學ALOOP2:MOVR0,#40H 44鄭州大學接收程序如下:
ORG1000H BSTART:CLREA MOVTMOD,#20H MOVTH1,#0F4H MOVTL1,#0F4H MOVPCON,#00H SETBTR1 MOVSCON,#50H ;設(shè)定串口方式1,且準備接收
BLOOP1:JNBRI,$ ;等待1號機的聯(lián)絡(luò)信號
CLRRI MOVA,SBUF ;收到1號機信號
XRLA,#0E1H ;判斷是否為1號機聯(lián)絡(luò)信號
JNZBLOOP1 ;不是1號機聯(lián)絡(luò)信號,再等待
MOVSBUF,#0E2H ;是1號機聯(lián)絡(luò)信號,發(fā)應(yīng)答信號
JNBTI,$ CLRTI MOVR0,#40H ;設(shè)定數(shù)據(jù)塊地址指針初值
MOVR7,#10H ;設(shè)定數(shù)據(jù)塊長度初值
MOVR6,#00H ;清校驗和單元docin/sundae_meng鄭州大學接收程序如下: docin/sundae_meng45鄭州大學
BLOOP2:JNBRI,$ CLRRI MOVA,SBUF MOVR0,A ;接收數(shù)據(jù)轉(zhuǎn)儲
INCR0 ADDA,R6 ;求校驗和
MOVR6,A DJNZR7,BLOOP2 ;判斷數(shù)據(jù)塊是否接收完畢
JNBRI,$ ;完畢,接收1號機發(fā)來的校驗和
CLRRI MOVA,SBUF XRLA,R6 ;比較校驗和
JZEND1 ;校驗和相等,跳至發(fā)正確標志
MOVSBUF,#0FFH ;校驗和不相等,發(fā)錯誤標志
JNBTI,$ ;轉(zhuǎn)重新接收
CLRTI END1:MOVSBUF,#00H RET END docin/sundae_meng鄭州大學BLOOP2:JNBRI,$ do46鄭州大學3.多機通信(1)硬件連接
單片機構(gòu)成的多機系統(tǒng)常使串行口工作在方式2和方式3,采用總線型主從式結(jié)構(gòu)(一個是主機,其余的是從機,從機要服從主機的調(diào)度、支配)。有時還要對信號進行光電隔離、電平轉(zhuǎn)換等。在實際的多機應(yīng)用系統(tǒng)中,常采用RS-485串行標準總線進行數(shù)據(jù)傳輸。簡單的硬件連接如下圖所示(圖中沒有畫出RS-485接口)。docin/sundae_meng鄭州大學3.多機通信docin/sundae_meng47鄭州大學(2)通信協(xié)議主機置SM2位0,所有從機的SM2位置1,處于接收地址幀狀態(tài)。主機發(fā)送一地址幀,其中,8位是地址,第9位為1表示該幀為地址幀。所有從機收到地址幀后,都將接收的地址與本機的地址比較。對于地址相符的從機,使自己的SM2位置0(以接收主機隨后發(fā)來的數(shù)據(jù)幀),并把本站地址發(fā)回主機作為應(yīng)答;對于地址不符的從機,仍保持SM2=1,對主機隨后發(fā)來的數(shù)據(jù)幀不予理睬。從機發(fā)送數(shù)據(jù)結(jié)束后,要發(fā)送一幀校驗和,并置第9位(TB8)為1,作為從機數(shù)據(jù)傳送結(jié)束的標志。主機接收數(shù)據(jù)時先判斷數(shù)據(jù)接收標志(RB8),若接收幀的RB8=0,則存儲數(shù)據(jù)到緩沖區(qū),并準備接收下幀信息。若RB8=1,表示數(shù)據(jù)傳送結(jié)束,并比較此幀校驗和,若正確則回送正確信號00H,此信號命令該從機復(fù)位(即重新等待地址幀);若校驗和出錯,則發(fā)送0FFH,命令該從機重發(fā)數(shù)據(jù)。
發(fā)送數(shù)據(jù)。docin/sundae_meng鄭州大學(2)通信協(xié)議docin/sundae_meng48鄭州大學主機收到從機應(yīng)答地址后,確認地址是否相符,如果地址不符,發(fā)復(fù)位信號(數(shù)據(jù)幀中TB8=1);如果地址相符,則清TB8,開始發(fā)送數(shù)據(jù)。從機收到復(fù)位命令后回到監(jiān)聽地址狀態(tài)(SM2=1)。否則開始接收數(shù)據(jù)和命令。(3)應(yīng)用程序設(shè)計設(shè)主機發(fā)送的地址聯(lián)絡(luò)信號為:00H,01H,02H,……(即從機設(shè)備地址),地址FFH為命令各從機復(fù)位,即恢復(fù)SM2=1。主機命令編碼為:01H,主機命令從機接收數(shù)據(jù);02H,主機命令從機發(fā)送數(shù)據(jù)。其他都按02H對待。程序分為主機程序和從機程序。約定一次傳遞數(shù)據(jù)為16個字節(jié)。程序清單見教材(略)。
docin/sundae_meng鄭州大學主機收到從機應(yīng)答地址后,確認地址是否相符,如果地址不49鄭州大學4.單片機與PC的通信
1臺PC既可以與1個8051單片機應(yīng)用系統(tǒng)通信,也可以與多個8051單片機應(yīng)用系統(tǒng)通信;可以近距離也可以遠距離。單片機與PC機通信時,其硬件接口技術(shù)主要是電平轉(zhuǎn)換、控制接口設(shè)計和通信距離不同的接口等處理技術(shù)。其硬件連接電路如下圖所示。在Windows的環(huán)境下,可使用VB通信控件(MSComm)卻可以很容易實現(xiàn)PC機與單片機之間的通信。
docin/sundae_meng鄭州大學4.單片機與PC的通信1臺PC既可50鄭州大學單片機程序:
ORG3000H MAIN:MOVTMOD,#20H;在11.0592MHz下,串行口波特率
MOVTH1,#0FDH ;9600bps,方式3 MOVTL1,#0FDH MOVPCON,#00H SETBTR1 MOVSCON,#0D8H LOOP:JBCRI,RECEIVE;接收到數(shù)據(jù)后立即發(fā)出去
SJMPLOOP RECEIVE:MOVA,SBUF MOVSBUF,A SEND:JBCTI,SENDEND SJMPSEND SENDEND:SJMPLOOP END docin/sundae_meng鄭州大學單片機程序:docin/sun51鄭州大學PC程序如下:(VB語言)
SubForm_Load()
MSComm1.CommPort=2 MSComm1.PortOpen=TURE MSComm1.Settings="9600,N,8,1"EndSub Subcommand1_Click()
Instringasstring MSComm1.InBufferCount=0 MSComm1.Output="A" Do Dummy=DoEvents()
LoopUntil(MSComm1.InBufferCount>2)
Instring=MSComm1.Input EndSub Subcommand2_Click()
MSComm1.PortOpen=FALSE UnLoadMe EndSub docin/sundae_meng鄭州大學PC程序如下:(VB語言)docin/sundae_52鄭州大學作業(yè)與練習:1---18,20---34,35---50docin/sundae_meng鄭州大學作業(yè)與練習:1---18,20---34,35-53鄭州大學3.3MCS-51單片機的定時器/計數(shù)器
3.3.1定時器/計數(shù)器
1.基本概念(1)計數(shù):計數(shù)是指對外部事件的個數(shù)進行計量。其實質(zhì)就是對外部輸入脈沖的個數(shù)進行計量。實現(xiàn)計數(shù)功能的器件稱為計數(shù)器。(2)定時:8051單片機中的定時器和計數(shù)器是一個部件,只不過計數(shù)器記錄的是外界發(fā)生的事件,而定時器則是由單片機內(nèi)部提供一個非常穩(wěn)定的計數(shù)源進行定時的。這個計數(shù)源是由單片機的晶振經(jīng)過12分頻后獲得的一個脈沖源。所以定時器計數(shù)脈沖的時間間隔與晶振有關(guān)。docin/sundae_meng鄭州大學3.3MCS-51單片機的定時器/計數(shù)器3.354鄭州大學(3)定時的種類
軟件定時:利用執(zhí)行一個循環(huán)程序進行時間延遲。其特點是定時時間精確,不需外加硬件電路,但占用CPU時間。因此軟件定時的時間不宜過長。
硬件定時:利用硬件電路實現(xiàn)定時。其特點是不占用CPU時間,通過改變電路元器件參數(shù)來調(diào)節(jié)定時,但使用不夠靈活方便。對于時間較長的定時,常用硬件電路來實現(xiàn)。
可編程定時器:通過專用的定時器/計數(shù)器芯片實現(xiàn)。其特點是通過對系統(tǒng)時鐘脈沖進行計數(shù)實現(xiàn)定時,定時時間可通過程序設(shè)定的方法改變,使用靈活方便。也可實現(xiàn)對外部脈沖的計數(shù)功能。docin/sundae_meng鄭州大學(3)定時的種類docin/sundae_meng55鄭州大學
MCS-51單片機內(nèi)部有兩個16位可編程的定時器/計數(shù)器,簡稱為T0和T1,均可作定時器用也可計數(shù)器,它們均是二進制加法計數(shù)器,當計數(shù)器計滿回零時能自動產(chǎn)生溢出中斷請求,表示定時時間已到或計數(shù)已終止。適用于定時控制、延時、外部計數(shù)和檢測等。計數(shù)器:對引腳T0(P3.4)和T1(P3.5.)輸入的外部脈沖信號計數(shù),當輸入脈沖信號從1到0的負跳變時,計數(shù)器就自動加1。計數(shù)的最高頻率一般為振蕩頻率的1/24。定時器:對系統(tǒng)晶振振蕩脈沖的12分頻輸出進行計數(shù)。(1)定時器/計數(shù)器的結(jié)構(gòu)組成:16位加法計數(shù)器、工作方式寄存器TMOD和控制寄存器TCON。
T0:TL0(低8位)和TH0(高8位)
T1:TL1(低8位)和TH1(高8位)2.MCS-51內(nèi)部定時器/計數(shù)器
docin/sundae_meng鄭州大學MCS-51單片機內(nèi)部有兩個16位可編程的定56鄭州大學
8051單片機內(nèi)部的定時器/計數(shù)器的結(jié)構(gòu)如下圖所示。docin/sundae_meng鄭州大學8051單片機內(nèi)部的定時器/計數(shù)57鄭州大學(2)控制寄存器TCON(88H)
TF1TR1TF0TR0IE1IT1IE0IT0TF0/TF1:T0/1計數(shù)溢出標志位??捎糜谏暾堉袛嗷蚬〤PU查詢。在進入中斷服務(wù)程序時會自動清零;但在查詢方式時必須軟件清零。
=1:計數(shù)溢出;
=0:計數(shù)未滿。TR0/TR1:T0/1啟??刂莆?。
=1:啟動計數(shù);
=0:停止計數(shù)。IE0/IE1和IT0/IT1:用于管理外部中斷(前面已介紹過)。docin/sundae_meng鄭州大學(2)控制寄存器TCON(88H)TF158鄭州大學
M1,M0:工作方式選擇位。
=00:13位定時器/計數(shù)器;
=01:16位定時器/計數(shù)器(常用);
=10:可自動重裝的8位定時器/計數(shù)器(常用);
=11:T0分為2個8位定時器/計數(shù)器;僅適用于T0。
C/T
:定時方式/計數(shù)方式選擇位。
=1:選擇計數(shù)器工作方式,對T0/T1引腳輸入的外部事件的負脈沖計數(shù);
=0:選擇定時器工作方式,對機器周期脈沖計數(shù)定時。如下頁圖所示。(3)工作方式寄存器TMOD
GATEC/TM1M0GATEC/TM1M0T1T2docin/sundae_meng鄭州大學M1,M0:工作方式選擇位。(3)工作方式寄存59鄭州大學GATE:門控位,定時器/計數(shù)器的啟/??捎绍浖c硬件兩者控制
=0:軟件控制,只由TCON中的啟/??刂莆籘R0/TR1控制定時器/計數(shù)器的啟/停。
=1:硬件控制,由外部中斷請求信號/和TCON中的啟/??刂莆籘R0/TR1組合狀態(tài)控制定時器/計數(shù)器的啟/停。其控制邏輯如下圖所示。docin/sundae_meng鄭州大學GATE:門控位,定時器/計數(shù)器的啟/??捎绍浖c硬60鄭州大學3.3.2定時器/計數(shù)器的工作方式
8051單片機的定時器/計數(shù)器共有四種工作模式,現(xiàn)以T0為例加以介紹,T1與T0的工作原理相同,但方式3下T1停止計數(shù)。方式(如F0)和用戶定義名稱等幾種方式。1.工作方式0(M1M0=00,13位定時器/計數(shù)器)
由TH0的全部8位和TL0的低5位(TL0的高3位未用)構(gòu)成13位加1計數(shù)器,當TL0低5位計數(shù)滿時直接向TH0進位,并當全部13位計數(shù)滿溢出時,溢出標志位TF0置“1”。2.工作方式1(M1M0=01,16位定時器/計數(shù)器)
由TH0和TL0構(gòu)成16位加1計數(shù)器,其他特性與工作方式0相同。3.工作方式2(M1M0=10,自動重裝計數(shù)初值的8位定時器/計數(shù)器)
16位定時器/計數(shù)器被拆成兩個8位寄存器TH0和TL0,CPU在對它們初始化時必須裝入相同的定時器/計數(shù)器初值。以TL0作計數(shù)器,而TH0作為預(yù)置寄存器。當計數(shù)滿溢出時,TF0置“1”,同時TH0將計數(shù)初值以硬件方法自動裝入TL0。這種工作方式很適合于那些重復(fù)計數(shù)的應(yīng)用場合(如串行數(shù)據(jù)通信的波特率發(fā)生器)。docin/sundae_meng鄭州大學3.3.2定時器/計數(shù)器的工作方式61鄭州大學4.工作方式3(M1M0=11,2個8位定時器/計數(shù)器,僅適用于T0)TL0:8位定時器/計數(shù)器,使用T0原有控制資源TR0和TF0,其功能和操作與方式0或方式1完全相同。TH0:只能作為8位定時器,借用T1的控制位TR1和TF1,只能對片內(nèi)機器周期脈沖計數(shù)。在方式3模式下,定時器/計數(shù)器0可以構(gòu)成兩個定時器或者一個定時器和一個計數(shù)器。
T0方式3下的T1方式2,因定時初值能自動恢復(fù),用作波特率發(fā)生器更為合適。docin/sundae_meng鄭州大學4.工作方式3(M1M0=11,2個8位定時62鄭州大學
定時器/計數(shù)器可按片內(nèi)機器周期定時,也可對由T0/T1引腳輸入一個負脈沖進行加法計數(shù)。在應(yīng)用時,其工作方式和工作過程均可通過程序設(shè)定和控制,因此,定時器/計數(shù)器在工作前必須先對其進行初始化,計算和設(shè)置初值。
1.定時器T0/T1中斷申請過程(1)在已經(jīng)開放T0/T1中斷允許且已被啟動的前提下,T0/T1加1計滿溢出時TF0/TF1標志位自動置“1”;(2)CPU檢測到TCON中TF0/TF1變“1”后,將產(chǎn)生指令:LCALL000BH/LCALL001BH執(zhí)行中斷服務(wù)程序;(3)TF0/TF1標志位由硬件自動清“0”,以備下次中斷申請。3.3.3定時器/計數(shù)器的應(yīng)用
docin/sundae_meng鄭州大學定時器/計數(shù)器可按片內(nèi)機器周期定時,也63鄭州大學2.定時器/計數(shù)器初始化的步驟
(1)寫TMOD,設(shè)置定時器/計數(shù)器的工作方式;
(2)計算定時器/計數(shù)器的初值,寫入TH0/TH1、TL0/TL1。
(3)設(shè)置IE、IP,以開放相應(yīng)的中斷和設(shè)定中斷優(yōu)先級。
3.定時器/計數(shù)器的定時器/計數(shù)器范圍(1)工作方式0:13位定時器/計數(shù)器方式最大計數(shù)值=213=8192
(2)工作方式1:16位定時器/計數(shù)器方式最大計數(shù)值=216=65536
(3)工作方式2和工作方式3:8位的定時器/計數(shù)器方式因此,最大計數(shù)值=28=256docin/sundae_meng鄭州大學2.定時器/計數(shù)器初始化的步驟(1)寫TM64鄭州大學3.計數(shù)器初值的計算
方法:用最大計數(shù)量減去需要的計數(shù)次數(shù)。即:
TC=MC
其中:TC——計數(shù)器需要預(yù)置的初值;
M——計數(shù)器的模值(最大計數(shù)值);方式0時,M=213;方式1時,M=216;方式2,3時,M=28;
C——計數(shù)器計滿回0所需的計數(shù)值,即設(shè)計任務(wù)要求的計數(shù)值。例如:流水線上一個包裝是12盒,要求每到12盒就產(chǎn)生一個動作,用單片機的工作方式0來控制,則應(yīng)當預(yù)置的初值為:
TC=MC=213
12=8180docin/sundae_meng鄭州大學3.計數(shù)器初值的計算方法:用最大計數(shù)量減去需要的65鄭州大學4.定時器初值的計算
定時時間的計算公式為:
T=(MTC)×T0(或TC=MT/T0)其中:T——定時器的定時時間,即設(shè)計任務(wù)要求的定時時間;
T0——計數(shù)器計數(shù)脈沖的周期,即單片機系統(tǒng)主頻周期的12倍;
M——計數(shù)器的模值;
TC——定時器需要預(yù)置的初值。若設(shè)初值TC=0,則定時器定時時間為最大。若設(shè)單片機系統(tǒng)主頻為12MHz,則各種工作方式定時器的最大定時時間為:工作方式0:Tmax=213×1s=8.192ms工作方式1:Tmax=216×1s=65.536ms工作方式2和3:Tmax=28×1s=0.256msdocin/sundae_meng鄭州大學4.定時器初值的計算定時時間的計算公式為:doc66鄭州大學[例]設(shè)外部有一個脈沖源。編制程序,對外部脈沖源進行計數(shù)并顯示。解:將外部計數(shù)源連到引腳T1上,可用LED將計數(shù)的值顯示出來,我們用P1口連接的8個LED來顯示計到的數(shù)據(jù)。程序如下:
ORG0000H AJMPSTART ;轉(zhuǎn)入主程序
ORG0030H START:MOVSP,#60H ;設(shè)置堆棧指針
MOVTMOD,#60H ;定時器/計數(shù)器1作計數(shù)用01100000B
MOVTL1,#00HMOVTH1,#00H
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公務(wù)員崗位培訓制度
- 建立培訓對象選拔制度
- 部門培訓制度管理制度
- 承諾踐諾制度規(guī)范
- 培訓新政府會計制度
- 培訓基地學生章制度
- 2025貴州雍福產(chǎn)業(yè)發(fā)展投資(集團)有限公司人才引進暨員工招聘27人筆試歷年參考題庫附帶答案詳解
- 易燃易爆運輸培訓制度
- 月度培訓考核制度流程
- 2025福建龍巖國信物業(yè)有限公司招聘5人筆試參考題庫附帶答案詳解(3卷)
- 《新綱要云南省實驗教材 信息技術(shù) 四年級第3冊(第2版)》教案(全)
- 塑料注塑流長比與型腔壓力數(shù)據(jù)表
- 單體澆鑄尼龍
- 法人變更轉(zhuǎn)讓協(xié)議書范本
- ISTA-3A(中文版)運輸-試驗標準
- 面粉廠企業(yè)安全生產(chǎn)風險分級管控和隱患排查治理雙體系方案資料(2022-2023版)
- 市政排水管道工程監(jiān)理細則
- 垃圾分類 科普課件(共35張PPT)
- GB/T 20853-2007金屬和合金的腐蝕人造大氣中的腐蝕暴露于間歇噴灑鹽溶液和潮濕循環(huán)受控條件下的加速腐蝕試驗
- GA 802-2019道路交通管理機動車類型
- FZ/T 80002-2016服裝標志、包裝、運輸和貯存
評論
0/150
提交評論