




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 單片微型計(jì)算機(jī)與接口技術(shù)單片微型計(jì)算機(jī)與接口技術(shù) ( (第第4 4版版) ) 第第7 7章章 學(xué)習(xí)內(nèi)容學(xué)習(xí)內(nèi)容 寄存器寄存器 現(xiàn)實(shí)生活需要定時(shí)現(xiàn)實(shí)生活需要定時(shí)/ /計(jì)數(shù)計(jì)數(shù) 定時(shí)定時(shí)/ /計(jì)數(shù)有計(jì)數(shù)有3 3種方法種方法: :n軟件定時(shí):軟件定時(shí):讓機(jī)器執(zhí)行一個(gè)程序段,占用讓機(jī)器執(zhí)行一個(gè)程序段,占用CPUCPU執(zhí)行時(shí)間,降執(zhí)行時(shí)間,降低了低了CPUCPU利用率利用率n數(shù)字電路硬件定時(shí):數(shù)字電路硬件定時(shí):采用小規(guī)模集成電路器件,電路簡(jiǎn)單,采用小規(guī)模集成電路器件,電路簡(jiǎn)單,修改定時(shí)不方便修改定時(shí)不方便n可編程定時(shí)可編程定時(shí)/ /計(jì)數(shù)器:計(jì)數(shù)器:硬件定時(shí),可通過(guò)軟件來(lái)確定和改變硬件定時(shí),可通過(guò)軟件來(lái)
2、確定和改變定時(shí),定時(shí),5151單片機(jī)有此部件單片機(jī)有此部件 5151單片機(jī)有單片機(jī)有2 2個(gè)個(gè)1616位定時(shí)位定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器:T0 ,T1T0 ,T1 定時(shí)定時(shí)/ /計(jì)數(shù)器為計(jì)數(shù)器為1616位位加加1 1計(jì)數(shù)器計(jì)數(shù)器 T0T0由由TH0TH0( (8CH8CH) )和和TL0TL0( (8AH8AH) )構(gòu)成構(gòu)成; T1T1由由TH1TH1( (8DH8DH) )和和TL1TL1( (8BH8BH) )構(gòu)成構(gòu)成 都可設(shè)置為都可設(shè)置為定時(shí)定時(shí)/ /計(jì)數(shù)計(jì)數(shù)工作方式工作方式 T0T0和和T1T1受受TMODTMOD和和TCONTCON控制控制外計(jì)數(shù)脈沖輸入外計(jì)數(shù)脈沖輸入定時(shí)計(jì)數(shù)器定時(shí)計(jì)數(shù)器
3、T0T0的內(nèi)部結(jié)構(gòu)和控制信號(hào)的內(nèi)部結(jié)構(gòu)和控制信號(hào)TF0T0TR0GATEINT011&C/T=1振蕩器振蕩器f0f0 0/12C/T=0TL0 TH0高位高位低位低位計(jì)數(shù)器計(jì)數(shù)器定時(shí)定時(shí)計(jì)數(shù)計(jì)數(shù)控制控制 =1=1K K接通接通 SK中斷中斷請(qǐng)求請(qǐng)求MC計(jì)數(shù)計(jì)數(shù)/ /定時(shí)器的實(shí)質(zhì)定時(shí)器的實(shí)質(zhì) 實(shí)質(zhì)是計(jì)數(shù)器,實(shí)質(zhì)是計(jì)數(shù)器,脈沖每一次脈沖每一次下降沿下降沿,計(jì)數(shù)寄存器數(shù)值將加,計(jì)數(shù)寄存器數(shù)值將加1 1定時(shí)器定時(shí)器: :計(jì)數(shù)的脈沖來(lái)源于單片機(jī)的計(jì)數(shù)的脈沖來(lái)源于單片機(jī)的MCMC( (其周期極為準(zhǔn)確其周期極為準(zhǔn)確) )計(jì)數(shù)器計(jì)數(shù)器: :計(jì)數(shù)的脈沖來(lái)源于計(jì)數(shù)的脈沖來(lái)源于T0T0,T1T1引腳引腳(
4、(其周期一般不準(zhǔn)確其周期一般不準(zhǔn)確) )+1+1計(jì)數(shù)器計(jì)數(shù)器溢出溢出中斷中斷脈沖脈沖控制控制開關(guān)開關(guān)1. 1. 定時(shí)方式定時(shí)方式 每經(jīng)過(guò)一個(gè)每經(jīng)過(guò)一個(gè)MC,MC,定時(shí)器定時(shí)器(T0(T0或或T1)T1)的數(shù)值加的數(shù)值加1,1,直至計(jì)數(shù)直至計(jì)數(shù)滿產(chǎn)生溢出。滿產(chǎn)生溢出。 f fmaxmax=f=foscosc/12/12如如: 當(dāng)當(dāng)80518051采用采用12MHz12MHz晶體時(shí),晶體時(shí),MC=1sMC=1s,計(jì),計(jì)5 5個(gè)個(gè)MCMC即為即為5s5s,即定時(shí),即定時(shí)5s5s 2. 2. 計(jì)數(shù)方式計(jì)數(shù)方式 通過(guò)引腳通過(guò)引腳T0(P3.4)T0(P3.4)和和T1(P3.5)T1(P3.5)對(duì)外部脈
5、沖計(jì)數(shù)對(duì)外部脈沖計(jì)數(shù) 當(dāng)輸入脈沖信號(hào)產(chǎn)生下降沿時(shí),定時(shí)器的值加當(dāng)輸入脈沖信號(hào)產(chǎn)生下降沿時(shí),定時(shí)器的值加1 1 由于檢測(cè)一個(gè)由于檢測(cè)一個(gè)1 1至至0 0的跳變需要二個(gè)的跳變需要二個(gè)MCMC 外外f fmaxmax=f=foscosc/24/24 要求電平保持時(shí)間至少一個(gè)要求電平保持時(shí)間至少一個(gè)MCMC寄存器寄存器 ( (兩個(gè)兩個(gè)) )1. 1. 工作方式寄存器工作方式寄存器TMOD(TMOD(89H,89H,不可位操作不可位操作) ) 控制控制T0T0和和T1T1的工作方式。其各位的定義如下:的工作方式。其各位的定義如下: TMOD D7D6D5D4 D3D2D1 D0 (89H)GATEC/T
6、M1M0GATE C/TM1 M0定時(shí)器定時(shí)器T0T0 定時(shí)器定時(shí)器T1T1 GATEGATE:門控信號(hào):門控信號(hào) GATE=0GATE=0,TRxTRx=1=1時(shí)即可啟動(dòng)定時(shí)器工作時(shí)即可啟動(dòng)定時(shí)器工作 ; GATE=1GATE=1,INTx=1, TRxINTx=1, TRx=1=1才可啟動(dòng)定時(shí)器工作才可啟動(dòng)定時(shí)器工作 C/TC/T:定時(shí)器:定時(shí)器/ /計(jì)數(shù)器選擇位計(jì)數(shù)器選擇位 C/T=1C/T=1,為計(jì)數(shù)器方式;,為計(jì)數(shù)器方式; C/T=0C/T=0,為定時(shí)器方式,為定時(shí)器方式 M1 M0 M1 M0 工作方式選擇位工作方式選擇位 M1M0=00 M1M0=00 工作方式工作方式0 0(1
7、313位方式位方式) M1M0=01 M1M0=01 工作方式工作方式1 1(1616位方式位方式) M1M0=10 M1M0=10 工作方式工作方式2 2(8 8位自動(dòng)再裝入方式位自動(dòng)再裝入方式) M1M0=11 M1M0=11 工作方式工作方式3 3(T0T0為為2 2個(gè)個(gè)8 8位方式位方式) TF1 TR1TF0 TR0 IE1IT1 IE0IT0T1 請(qǐng)求請(qǐng)求有有/ /無(wú)無(wú) T1工作工作啟啟/ /停停 T0 請(qǐng)求請(qǐng)求有有/ /無(wú)無(wú) T0 工作工作啟啟/ /停停 INT1 請(qǐng)求請(qǐng)求有有/ /無(wú)無(wú) INT1方式方式下沿下沿/ / 低低電平電平 INT0請(qǐng)求請(qǐng)求有有/ /無(wú)無(wú) INT0方式方
8、式下沿下沿/ /低低電平電平 2. 2. 控制寄存器控制寄存器TCON(TCON(88H,88H,可位操作可位操作, ,定時(shí)控制定時(shí)控制 / /中斷控制中斷控制) ) 其含意如下:其含意如下: TF1TF1:T1T1溢出標(biāo)志位溢出標(biāo)志位, ,可供查詢或中斷請(qǐng)求可供查詢或中斷請(qǐng)求 TF1=1TF1=1,T1T1有溢出有溢出 TF1=0TF1=0,T1T1無(wú)溢出無(wú)溢出 TR1TR1:T1T1運(yùn)行控制位運(yùn)行控制位 ( (需需GATE=0GATE=0) ) TR1=1 TR1=1,啟動(dòng),啟動(dòng)T1T1工作工作 TR1=0TR1=0,停止,停止T1T1工作工作 TF0TF0: T0T0溢出標(biāo)志位溢出標(biāo)志位
9、, ,可供查詢或中斷請(qǐng)求可供查詢或中斷請(qǐng)求 TF0=1TF0=1,T0T0有溢出有溢出 TF0=0TF0=0,T0T0無(wú)溢出無(wú)溢出 TR0TR0:T0T0運(yùn)行控制位運(yùn)行控制位 ( (需需GATE=0GATE=0) ) TR0=1 TR0=1,啟動(dòng),啟動(dòng)T0T0工作工作 TR0=0TR0=0,停止,停止T0T0工作工作* *與定時(shí)與定時(shí)/ /計(jì)數(shù)器有關(guān)中斷控制位見計(jì)數(shù)器有關(guān)中斷控制位見IEIE寄存器寄存器(P102)(P102)7.3 7.3 定時(shí)器的四種工作方式定時(shí)器的四種工作方式 方式方式 T0/T1T0/T1工作于工作于1313位定時(shí)、計(jì)數(shù)方式。位定時(shí)、計(jì)數(shù)方式。最大計(jì)數(shù)值最大計(jì)數(shù)值( (
10、模值模值) )為為 2 213 13 8192(8192(即即2000H2000H) )個(gè)脈沖個(gè)脈沖用于定時(shí)工作時(shí),定時(shí)時(shí)間為:用于定時(shí)工作時(shí),定時(shí)時(shí)間為: t t(2(21313一一T0T0初值初值) ) MCMC 一般不用方式一般不用方式0 0. .M1 M0方方式式功功能能描描述述0 0013位位0 1116位位1 028位位自自動(dòng)動(dòng)重重裝裝1 13T0為為兩兩個(gè)個(gè) 8位位4 4種工作方式種工作方式 ( (TMODTMOD中中) 2 .2 .方式方式1 1 ( (1 1次性,兼容方式次性,兼容方式) )1616位定時(shí)計(jì)數(shù)方式位定時(shí)計(jì)數(shù)方式 寄存器寄存器THTHX X和和TLTLX X是以
11、全是以全1616位參與操作位參與操作 THTHX X提供高提供高8 8位、位、 TLTLX X提供低提供低8 8位計(jì)數(shù)初值位計(jì)數(shù)初值 當(dāng)當(dāng)TLTLX X的低的低8 8位溢出時(shí)向位溢出時(shí)向THTHX X進(jìn)位進(jìn)位, ,而而THTHX X溢出溢出 時(shí)硬件置位時(shí)硬件置位TFTFX X,可供查詢,可供查詢/ /申請(qǐng)中斷申請(qǐng)中斷 ( (此時(shí)此時(shí)TLTLX X=TH=THX X=00H,TF=00H,TFX X=1=1) )計(jì)數(shù)脈沖個(gè)數(shù)計(jì)數(shù)脈沖個(gè)數(shù):1 165536(265536(21616)()(模值模值10000H10000H) )定時(shí)時(shí)間定時(shí)時(shí)間( (晶振晶振12MHz MC=112MHz MC=1
12、s s) ):1 1 s s 65536 65536 s = 65.54mss = 65.54ms非門控方式:非門控方式:當(dāng)當(dāng)GATEGATE0, 0, 控制權(quán)由控制權(quán)由 TRxTRx 決定決定 TRxTRx1 1 計(jì)數(shù)開始計(jì)數(shù)開始 TRxTRx 0 0 計(jì)數(shù)停止計(jì)數(shù)停止門控方式:門控方式:當(dāng)當(dāng)GATEGATE1 1、TRxTRx1 1 控制權(quán)由控制權(quán)由INTxINTx 決定決定 INTxINTx1 1 計(jì)數(shù)開始計(jì)數(shù)開始 INTxINTx0 0 計(jì)數(shù)停止計(jì)數(shù)停止啟動(dòng)計(jì)數(shù)方式:?jiǎn)?dòng)計(jì)數(shù)方式:3. 3. 方式方式2 2 ( (非一次性非一次性) )自動(dòng)恢復(fù)初值自動(dòng)恢復(fù)初值,8,8位定時(shí)位定時(shí)/ /
13、計(jì)數(shù)器計(jì)數(shù)器TLxTLx為為8 8位加位加1 1計(jì)數(shù)器,計(jì)數(shù)器,THxTHx為為8 8位初值暫存器位初值暫存器可省去用戶重裝計(jì)數(shù)初值,可省去用戶重裝計(jì)數(shù)初值,可產(chǎn)生精確的定時(shí)時(shí)間可產(chǎn)生精確的定時(shí)時(shí)間用于需要重復(fù)定時(shí)和計(jì)數(shù)的場(chǎng)合用于需要重復(fù)定時(shí)和計(jì)數(shù)的場(chǎng)合計(jì)數(shù)值:計(jì)數(shù)值:1-256 (21-256 (28 8)()(模值模值100H100H) )定時(shí)時(shí)間定時(shí)時(shí)間( (晶振晶振12MHz12MHz時(shí)時(shí) MC=1MC=1 s s) ):1 1 s - 256s - 256 s s4.4.方式方式3 3 (1(1次性次性, ,只對(duì)只對(duì)T0,T0,且且T1T1為波為波特率發(fā)生器特率發(fā)生器) )T0T0分
14、成分成2 2個(gè)個(gè)8 8位定時(shí)器:位定時(shí)器:TL0TL0定時(shí)定時(shí)/ /計(jì)數(shù)計(jì)數(shù), ,TH0TH0定時(shí)定時(shí)TL0TL0占用占用T0T0控制位:控制位:C/TC/T,TR0TR0,GATE,TF0,T0,INT0GATE,TF0,T0,INT0;TH0TH0占用占用T1T1控制位:控制位:TR1,TF1TR1,TF1。T1T1不能使用方式不能使用方式3 3 (T0(T0方式時(shí)方式時(shí),T1,T1可工作于方式可工作于方式0,1,2,0,1,2,但但不能使用中斷不能使用中斷 方式方式) ) 計(jì)數(shù)值計(jì)數(shù)值=? =? 定時(shí)時(shí)間定時(shí)時(shí)間=? =? 模值模值=?=?7.4 7.4 定時(shí)定時(shí)/ /計(jì)數(shù)器的應(yīng)用程序設(shè)
15、計(jì)計(jì)數(shù)器的應(yīng)用程序設(shè)計(jì)7.4.1 7.4.1 定時(shí)定時(shí)/ /計(jì)數(shù)器的計(jì)數(shù)初值計(jì)數(shù)器的計(jì)數(shù)初值C C的計(jì)算和裝入的計(jì)算和裝入 定時(shí)器定時(shí)器/ /計(jì)數(shù)器不同工作方式的計(jì)數(shù)器不同工作方式的模值不同模值不同,加加1 1計(jì)數(shù)計(jì)數(shù) 計(jì)數(shù)初值(計(jì)數(shù)初值(補(bǔ)數(shù)補(bǔ)數(shù))的求法如下:)的求法如下: 計(jì)數(shù)方式:計(jì)數(shù)方式: 計(jì)數(shù)初值計(jì)數(shù)初值C=C=模模-X=2-X=2n n-X=(X)-X=(X)求補(bǔ)求補(bǔ)(其中(其中X X:計(jì)數(shù)脈沖個(gè)數(shù),計(jì)數(shù)脈沖個(gè)數(shù),實(shí)際需求實(shí)際需求; ;C C: :計(jì)數(shù)初值計(jì)數(shù)初值 ,裝入裝入T0/T1T0/T1) ( (CXCX) ) 定時(shí)方式:定時(shí)方式: 計(jì)數(shù)初值計(jì)數(shù)初值C=t/MCC=t/MC
16、求補(bǔ)求補(bǔ)= =模模t/MCt/MC 其中其中t t為欲定時(shí)時(shí)間,為欲定時(shí)時(shí)間,MC=12/foscMC=12/fosc 方式方式0 0( 1313位方式):位方式): C=C=(64H64H)求補(bǔ)求補(bǔ)= =2000H2000H64H=1F9CH64H=1F9CH 1F9CH 1F9CH0000001 1 11111111 1001001 1 11001100B B 把把1313位中的高八位位中的高八位1111 1100B1111 1100B裝入裝入TH0TH0, 而把而把1313位中的低五位位中的低五位xxx1 1100Bxxx1 1100B裝入裝入TL0TL0。 MOV TH0MOV TH0
17、,#0FCH#0FCH; MOV TL0MOV TL0,#1CH#1CH;(xxx(xxx用用“0”0”填入)填入)方式方式1 (161 (16位方式位方式) ): C=C=(64H64H)求補(bǔ)求補(bǔ)= =10000H10000H-64H=FF9CH-64H=FF9CH 用指令裝入計(jì)數(shù)初值用指令裝入計(jì)數(shù)初值: MOV TH0MOV TH0,#0FFH#0FFH MOV TL0 MOV TL0,#9CH#9CH例例 要計(jì)要計(jì)100個(gè)脈沖的計(jì)數(shù)初值個(gè)脈沖的計(jì)數(shù)初值方式方式2 2(8 8位自動(dòng)再裝入方式)位自動(dòng)再裝入方式) C=C=(64H64H)求補(bǔ)求補(bǔ)= =100H100H64H=9CH64H=9
18、CH 初值既要裝入初值既要裝入TH0TH0,也要裝入,也要裝入TL0TL0: MOV MOV TH0TH0,#9CH#9CH MOV MOV TL0TL0,#9CH#9CH最大定時(shí)時(shí)間:最大定時(shí)時(shí)間:2 2n nC(C(方式不同而異方式不同而異) ) 最大計(jì)數(shù)初值最大計(jì)數(shù)初值:TH:THX X=TL=TLX X=?=? THTHX X=TL=TLX X=00H=00H7.4.2 7.4.2 定時(shí)定時(shí)/ /計(jì)數(shù)器的初始化編程計(jì)數(shù)器的初始化編程 步驟步驟: 先計(jì)算計(jì)數(shù)初值;先計(jì)算計(jì)數(shù)初值;1 1)工作方式控制字送)工作方式控制字送TMODTMOD寄存器;寄存器;2 2)計(jì)數(shù)初值的高八位和低八位送)
19、計(jì)數(shù)初值的高八位和低八位送THTHX X和和TLTLX X3 3)啟動(dòng)定時(shí)(或計(jì)數(shù)),即將)啟動(dòng)定時(shí)(或計(jì)數(shù)),即將TRTRX X置位置位(GAET=0(GAET=0時(shí)時(shí)) )4) 4) 如工作于中斷方式,需置位如工作于中斷方式,需置位EAEA及及ETETX X 再編中斷服務(wù)程序再編中斷服務(wù)程序初始化編程格式初始化編程格式:MOV TMODMOV TMOD,# # 方式字方式字 ;選擇方式選擇方式MOV THxMOV THx,#C#CH H ;裝入裝入TxTx計(jì)數(shù)初值計(jì)數(shù)初值MOV TLxMOV TLx,#C#CL LSETB SETB EAEA ;開開TxTx中斷中斷SETB SETB ET
20、xETxSETB TRxSETB TRx ;啟動(dòng)啟動(dòng)TxTx定時(shí)器定時(shí)器 . . . . ; ;服務(wù)程序服務(wù)程序例例7-17-1 如圖如圖7-27-2所示,所示,P1P1接有八個(gè)發(fā)光二極管,編接有八個(gè)發(fā)光二極管,編程使八個(gè)管程使八個(gè)管輪流輪流點(diǎn)亮,每點(diǎn)亮,每個(gè)管亮個(gè)管亮100ms100ms,設(shè)晶振為,設(shè)晶振為6MHz6MHz。7.4.3 7.4.3 應(yīng)用編程舉例應(yīng)用編程舉例分析分析 利用利用T1T1完成完成100ms100ms的定時(shí),的定時(shí),當(dāng)當(dāng)P1P1口線輸出口線輸出“0 0”時(shí),發(fā)光二時(shí),發(fā)光二極管亮,每隔極管亮,每隔100ms”100ms”0 0”左移左移一次,采用定時(shí)方式一次,采用定時(shí)
21、方式1 1,先計(jì)算,先計(jì)算計(jì)數(shù)初值:計(jì)數(shù)初值:機(jī)器周期機(jī)器周期:MC=2s MC=2s 計(jì)數(shù)個(gè)數(shù)計(jì)數(shù)個(gè)數(shù):100ms/2s 100ms/2s =50000=C350H =50000=C350H 計(jì)數(shù)初值計(jì)數(shù)初值: :( (C350H)C350H)求補(bǔ)求補(bǔ) =10000H-C350H=3CB0H=10000H-C350H=3CB0H1.1.查詢方式查詢方式 ( (人工清零人工清零TF1TF1) ) ORG 0030H ORG 0030H MOV A MOV A,# #0FEH0FEH ; ; 置第一個(gè)置第一個(gè)LEDLED亮亮( (P1.0P1.0) )NEXTNEXT:MOV P1MOV P1,
22、A A MOV TMOD MOV TMOD,#10H #10H ;T1T1工作于定時(shí)工作于定時(shí), ,方式方式1,GAET=01,GAET=0 MOV TH1 MOV TH1,#3CH#3CH MOV TL1 MOV TL1,#0B0H #0B0H ;定時(shí)定時(shí)100100msms( (計(jì)數(shù)初值計(jì)數(shù)初值T1T1) ) SETB TR1 ; SETB TR1 ; 啟動(dòng)啟動(dòng)T1T1工作工作AGAI: JBC TF1,SHI AGAI: JBC TF1,SHI ;100100msms到轉(zhuǎn)到轉(zhuǎn)SHI,SHI,并清并清TF1TF1 SJMP AGAI ; SJMP AGAI ; 未到未到100ms,100m
23、s,再查再查TF1TF1SHISHI: RL A ; RL A ; A A左移一位左移一位, ,下一下一LEDLED SJMP NEXT SJMP NEXTJBCJBC指令對(duì)定時(shí)指令對(duì)定時(shí)/ /計(jì)數(shù)溢出標(biāo)志位進(jìn)行檢測(cè),計(jì)數(shù)溢出標(biāo)志位進(jìn)行檢測(cè),當(dāng)標(biāo)志位為當(dāng)標(biāo)志位為1 1時(shí)跳轉(zhuǎn)并清標(biāo)志時(shí)跳轉(zhuǎn)并清標(biāo)志2.2.中斷方式中斷方式 ( (機(jī)器清零機(jī)器清零TF1TF1) ) ORG 0000HORG 0000H AJMP MAIN ; AJMP MAIN ; 復(fù)位后從復(fù)位后從0000H0000H開始執(zhí)行開始執(zhí)行 ORG 001BH ; ORG 001BH ; T1T1中斷服務(wù)程序入口中斷服務(wù)程序入口 AJM
24、P IV1 AJMP IV1 ;轉(zhuǎn)移到轉(zhuǎn)移到IV1IV1 ORG 0030H ORG 0030H ;主程序主程序MAINMAIN:MOV AMOV A,#0FEH #0FEH MOV P1 MOV P1,A A ;置第一個(gè)置第一個(gè)LEDLED亮亮 MOV TMODMOV TMOD,#10H #10H ;T1T1門控關(guān)門控關(guān), ,定時(shí)定時(shí), ,方式方式1 1 MOV TH1 MOV TH1,#3CH#3CH MOV TL1 MOV TL1,#0B0H #0B0H ;定時(shí)定時(shí)100ms100ms SETB TR1SETB TR1 ;啟動(dòng)啟動(dòng)T1T1工作工作 SETB EASETB EA ; ; 開
25、中斷總開關(guān)開中斷總開關(guān) SETB ET1SETB ET1 ;允許允許T1T1中斷中斷WAITWAIT:SJMP WAIT SJMP WAIT ;等待中斷等待中斷( (TF1=1TF1=1中斷響應(yīng)中斷響應(yīng)) ) IV1IV1:RL A RL A ;中斷服務(wù)程序,;中斷服務(wù)程序,左移一位左移一位 ( (機(jī)器清零機(jī)器清零TF1)TF1) MOV P1 MOV P1,A A ;下一個(gè)發(fā)光二極管亮下一個(gè)發(fā)光二極管亮 MOV TH1MOV TH1,#3CH#3CH MOV TL1 MOV TL1,#0B0H #0B0H ;重裝重裝計(jì)數(shù)初值計(jì)數(shù)初值( (方式方式1 1為一次性為一次性) ) RETI RET
26、I ;中斷返回中斷返回以上程序進(jìn)入循環(huán)執(zhí)行以上程序進(jìn)入循環(huán)執(zhí)行, ,八個(gè)八個(gè)LEDLED一直循環(huán)輪流點(diǎn)亮一直循環(huán)輪流點(diǎn)亮方法方法1:(1:(查詢法查詢法) )采用采用T0T0完成完成100ms100ms定時(shí),再定時(shí),再P1.0P1.0每每100ms100ms取反一次作為取反一次作為T1T1的計(jì)數(shù)脈沖,的計(jì)數(shù)脈沖,T1T1對(duì)下降沿計(jì)數(shù),因此對(duì)下降沿計(jì)數(shù),因此T1T1計(jì)計(jì)5 5個(gè)脈沖正好個(gè)脈沖正好1000ms1000ms。T0T0采用方式采用方式1(1(定時(shí)工作定時(shí)工作) ),X X= 得得X=3CB0HX=3CB0H,T1T1采用方式采用方式2(2(計(jì)數(shù)工作計(jì)數(shù)工作) ),計(jì)數(shù)初值計(jì)數(shù)初值X =
27、X = 5=FBH5=FBH均采用查詢方式,均采用查詢方式,流程圖和程序如下流程圖和程序如下:162162210100382例例7-27-2 在在P1.7P1.7端接一個(gè)發(fā)光二極管端接一個(gè)發(fā)光二極管LEDLED,要求利用定時(shí)控,要求利用定時(shí)控制使制使LEDLED亮一秒滅一秒周而復(fù)始,設(shè)亮一秒滅一秒周而復(fù)始,設(shè)foscfosc=6MHz=6MHz。解解: 16: 16位定時(shí)最大為位定時(shí)最大為 * *22s=131.072mss=131.072ms,顯然不能,顯然不能滿足要求,可用以下兩種方法解決。滿足要求,可用以下兩種方法解決。162 ORG 0100HORG 0100HMAINMAIN:CLR
28、 P1.7 CLR P1.7 ;LEDLED亮亮 SETB P1.0 SETB P1.0 ;輸出置;輸出置1 1 MOV TMOD MOV TMOD,#61H #61H ;T1T1門控關(guān)門控關(guān), ,計(jì)數(shù)計(jì)數(shù), ,方式方式2 2 T0 T0門控關(guān)門控關(guān), ,定時(shí)定時(shí), ,方式方式1 1 MOV TH1 MOV TH1,#0FBH#0FBH MOV TL1 MOV TL1,#0FBH #0FBH ;計(jì)數(shù)初值計(jì)數(shù)初值 T1T1 SETB TR1 SETB TR1 ;開開T1T1計(jì)數(shù)計(jì)數(shù)LOOP1:CPL P1.7 LOOP1:CPL P1.7 ;取反取反(LEDLED滅滅/ /亮)亮) LOOP2L
29、OOP2:MOV TH0MOV TH0,#3CH#3CH MOV TL0 MOV TL0,#0B0H #0B0H ;計(jì)數(shù)初值;計(jì)數(shù)初值 T0T0 SETB TR0 SETB TR0 ;開;開T0T0計(jì)數(shù)計(jì)數(shù) LOOP3:JBC TF0,LOOP4 LOOP3:JBC TF0,LOOP4 ; ; 100ms100ms到到, ,轉(zhuǎn)轉(zhuǎn), ,人工清人工清TF0TF0 SJMP LOOP3 SJMP LOOP3 ;未到;未到, ,再查詢?cè)俨樵?LOOP4LOOP4:CPL P1.0 CPL P1.0 ;每;每100ms100ms到到,P1.0 ,P1.0 取反取反 JBC TF1JBC TF1,LOOP
30、1 LOOP1 ; ;1000ms1000ms到到, ,轉(zhuǎn)轉(zhuǎn), ,人工清人工清TF1TF1 AJMP LOOP2 AJMP LOOP2 ;未到;未到, ,轉(zhuǎn)轉(zhuǎn) ENDEND JBCJBC指令對(duì)定時(shí)指令對(duì)定時(shí)/ /計(jì)數(shù)溢出標(biāo)志位進(jìn)行檢測(cè),計(jì)數(shù)溢出標(biāo)志位進(jìn)行檢測(cè),當(dāng)標(biāo)志位為當(dāng)標(biāo)志位為1 1時(shí)跳轉(zhuǎn)并清標(biāo)志時(shí)跳轉(zhuǎn)并清標(biāo)志方法方法2(2(中斷法中斷法) ):T0T0每隔每隔100ms100ms中斷一次,利用軟件對(duì)中斷一次,利用軟件對(duì)T0T0的中斷次的中斷次數(shù)進(jìn)行計(jì)數(shù),中斷數(shù)進(jìn)行計(jì)數(shù),中斷1010次即實(shí)現(xiàn)了次即實(shí)現(xiàn)了1 1秒的定時(shí)。秒的定時(shí)。 ORG 0000HORG 0000H AJMP MAIN AJ
31、MP MAIN ORG 000BH ORG 000BH ;T0;T0中斷服務(wù)程序入口中斷服務(wù)程序入口 AJMP IP0AJMP IP0 ORG 0030H ORG 0030H ; ;主程序開始主程序開始 MAINMAIN:CLR P1.7 CLR P1.7 ;LED;LED亮亮 MOV TMODMOV TMOD,#01H #01H ;T0;T0門控關(guān)門控關(guān), ,定時(shí)定時(shí), ,方式方式1 1 MOV TH0 MOV TH0,#3CH#3CH MOV TL0 MOV TL0,#0B0H #0B0H ; ;計(jì)數(shù)初值計(jì)數(shù)初值T0T0 SETB ET0 SETB ET0 ; ;允許允許T0T0中斷中斷
32、SETB EA SETB EA ; ;開中斷總開關(guān)開中斷總開關(guān) MOV R4MOV R4,#0AH #0AH ; ;中斷中斷1010次計(jì)數(shù)次計(jì)數(shù)(10(10次次100ms)100ms) SETB TR0 SETB TR0 ; ;開啟開啟T0T0工作工作 ( (定時(shí)定時(shí)) ) SJMP SJMP ; ;等待中斷等待中斷 (TF0=1?)(TF0=1?) IP0IP0:DJNZ R4DJNZ R4,RET0 RET0 ; ;機(jī)器清機(jī)器清TF0TF0,1010次未到次未到, ,再等中斷再等中斷 MOV R4MOV R4,#0AH #0AH ;10;10次到次到, ,賦值賦值R4R4 CPL P1.7
33、 CPL P1.7 ; ;取反取反P1.7 P1.7 ( (滅滅/ /亮亮) )RET0RET0:MOV TH0MOV TH0,#3CH#3CH MOV TL0 MOV TL0,#0B0H ;#0B0H ;再賦值再賦值計(jì)數(shù)初值計(jì)數(shù)初值T0T0 SETB TR0 SETB TR0 ; ;開啟開啟T0T0 RETIRETI 假設(shè)假設(shè)T0,T1T0,T1同時(shí)中斷同時(shí)中斷,CPU,CPU如何響應(yīng)如何響應(yīng)? ? 7.4.4 7.4.4 門控位的應(yīng)用門控位的應(yīng)用 門控位門控位GATEGATE為為1 1時(shí),時(shí),TRxTRx=1=1,INTxINTx=1=1才能啟動(dòng)定時(shí)器。利才能啟動(dòng)定時(shí)器。利用這個(gè)特性可以測(cè)
34、量外部輸入脈沖的寬度。用這個(gè)特性可以測(cè)量外部輸入脈沖的寬度。例例7-47-4 利用利用T0T0門控位測(cè)試門控位測(cè)試 INT0INT0引腳上出現(xiàn)的正脈沖寬度,引腳上出現(xiàn)的正脈沖寬度,已知晶振頻率為已知晶振頻率為12MHz12MHz,將所測(cè)得值最高位存入片內(nèi),將所測(cè)得值最高位存入片內(nèi)71H71H單單元,低位存入元,低位存入70H70H單元。單元。解:設(shè)外部脈沖由解:設(shè)外部脈沖由(P3.2)(P3.2)輸入,輸入,T0T0工作于定時(shí)方式工作于定時(shí)方式1 1 (16 (16位計(jì)數(shù)位計(jì)數(shù)) ),GATEGATE設(shè)為設(shè)為1 1。測(cè)試時(shí),應(yīng)在。測(cè)試時(shí),應(yīng)在INT0 INT0 低電平時(shí),低電平時(shí),設(shè)置設(shè)置TR
35、0TR0為為1 1;當(dāng);當(dāng)INT0 INT0 變?yōu)楦唠娖綍r(shí),就啟動(dòng)計(jì)數(shù);變?yōu)楦唠娖綍r(shí),就啟動(dòng)計(jì)數(shù); 再次再次變低時(shí),停止計(jì)數(shù)。變低時(shí),停止計(jì)數(shù)。此計(jì)數(shù)值與機(jī)器周期的乘積即為被測(cè)此計(jì)數(shù)值與機(jī)器周期的乘積即為被測(cè)正脈沖的寬度。正脈沖的寬度。因因foscfosc=12MHZ=12MHZ,機(jī)器周期為,機(jī)器周期為1us1us,測(cè)試過(guò),測(cè)試過(guò)程如下程如下: :源程序如下:源程序如下: MOV TMODMOV TMOD,#09H #09H ; T0; T0方式方式1 1,定時(shí),定時(shí),GATE=1GATE=1 MOV TL0 MOV TL0,#00H #00H ;設(shè)計(jì)數(shù)初值取最大值;設(shè)計(jì)數(shù)初值取最大值 MOV
36、 TH0MOV TH0,#00H#00H MOV R0 MOV R0,#70H #70H ;存放單元地址存放單元地址 JB P3.2, $ JB P3.2, $ ;等;等P3.2(INT0 )P3.2(INT0 )變低變低 SETB TR0 SETB TR0 ;啟動(dòng);啟動(dòng)T0,T0,準(zhǔn)備工作準(zhǔn)備工作 JNB P3.2, $ JNB P3.2, $ ;等待;等待P3.2(INT0 )P3.2(INT0 )變高變高 JB P3.2, $ JB P3.2, $ ; ; 等待等待P3.2(INT0 )P3.2(INT0 )再變低再變低 CLR TR0CLR TR0 ; ; 停止計(jì)數(shù)停止計(jì)數(shù)( (以便靜
37、態(tài)讀數(shù)以便靜態(tài)讀數(shù)) )T0從從0 0開始計(jì)數(shù)開始計(jì)數(shù)INT0INT0 1 TR0 0 TR0T0停止計(jì)數(shù)停止計(jì)數(shù)09HTMOD MOV R0,TL0 MOV R0,TL0 ; ;存放結(jié)果存放結(jié)果70H70H ( (靜態(tài)讀數(shù)靜態(tài)讀數(shù)) ) INC R0 INC R0 MOV R0,TH0 MOV R0,TH0 ; ;存放結(jié)果存放結(jié)果71H71H ( (靜態(tài)讀數(shù)靜態(tài)讀數(shù)) ) SJMP $ SJMP $* * 1)1)THTHX X,TL,TLX X既是加既是加1 1計(jì)數(shù)器計(jì)數(shù)器, ,又是又是8 8位寄存器位寄存器( (可讀可讀/ /寫寫) ) 2)2)被測(cè)脈沖的寬度最大值被測(cè)脈沖的寬度最大值(
38、 (6553665536* *MC)MC) 3)3)測(cè)量誤差測(cè)量誤差( (與軟件有關(guān)與軟件有關(guān)) ) 4)4)怎樣怎樣動(dòng)態(tài)讀數(shù)動(dòng)態(tài)讀數(shù)動(dòng)態(tài)讀數(shù)動(dòng)態(tài)讀數(shù)( (測(cè)量中讀數(shù)測(cè)量中讀數(shù)) ): :讀讀THTHX XTLTLX X THTHX X ,若兩次,若兩次THxTHx沒變化,則讀到?jīng)]變化,則讀到THxTHx是正確的。若兩次讀到的是正確的。若兩次讀到的THxTHx有變化,則再重復(fù)上述過(guò)程,重復(fù)讀到的內(nèi)有變化,則再重復(fù)上述過(guò)程,重復(fù)讀到的內(nèi)容就應(yīng)該是正確的了。下面是按此思路編寫的程容就應(yīng)該是正確的了。下面是按此思路編寫的程序段,讀到的序段,讀到的TH0 TH0 和和TL0TL0放在放在R1R1和和R0R0內(nèi):內(nèi):RPRP:MOV AMOV A,TH0 TH0 ;讀;讀TH0TH0 MOV R0 MOV R0,TL0 TL0 ;讀;讀TL0TL0 ( (讀完后讀完后TH0=?TH0=?) ) CJNE A CJNE A,TH0TH0,RP RP ;不等重讀;不等重讀 MOV R1MOV R1,A A7 7 6 6 小小 結(jié)結(jié) 定時(shí)計(jì)數(shù)器應(yīng)用非常廣泛,如定時(shí)采樣、定時(shí)計(jì)數(shù)器應(yīng)用非常廣泛,如定時(shí)采樣、時(shí)間測(cè)量、產(chǎn)生音響、作脈沖源、制作日歷時(shí)間測(cè)量、產(chǎn)生
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高速鐵路設(shè)備采購(gòu)合同終止及運(yùn)營(yíng)維護(hù)協(xié)議
- 餐飲業(yè)專用商業(yè)房產(chǎn)租賃協(xié)議書
- 老人兒童護(hù)理課件
- 美術(shù)課件彩虹模板
- 公司獎(jiǎng)勵(lì)規(guī)章制度
- 生產(chǎn)車間10s管理制度
- 企業(yè)金融安全
- 建筑施工vr安全體驗(yàn)館
- 安全防范系統(tǒng)報(bào)告
- 2025年上半年征兵工作總結(jié)
- 2024-2030年中國(guó)新疆電力行業(yè)市場(chǎng)現(xiàn)狀調(diào)查及投資前景研判報(bào)告
- JBT 14714-2024 鋰離子電池X射線檢測(cè)設(shè)備(正式版)
- 【欽州市S區(qū)居民飲用水安全現(xiàn)狀、問(wèn)題及優(yōu)化建議探析8300字(論文)】
- 城市總體規(guī)劃專題研究報(bào)告總結(jié)
- 新課標(biāo)小學(xué)生必背古詩(shī)75首(帶拼音)
- 高中數(shù)學(xué)知識(shí)
- 石家莊城發(fā)投集團(tuán)考試題
- 鉛鋅礦資源的地質(zhì)儲(chǔ)量評(píng)價(jià)與經(jīng)濟(jì)前景分析
- H3C全系列產(chǎn)品visio圖標(biāo)庫(kù)
- 超市開店策劃方案
- 成都市四級(jí)服務(wù)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論