版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 中斷的基本概念中斷的基本概念 80C5180C51中斷源中斷源 中斷控制寄存器中斷控制寄存器 中斷處理過(guò)程中斷處理過(guò)程 中斷優(yōu)先控制和中斷嵌套中斷優(yōu)先控制和中斷嵌套 中斷系統(tǒng)的應(yīng)用中斷系統(tǒng)的應(yīng)用 80C5180C51定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器 定時(shí)定時(shí)/ /計(jì)數(shù)器控制寄存器計(jì)數(shù)器控制寄存器 定時(shí)定時(shí)/ /計(jì)數(shù)器工作方式計(jì)數(shù)器工作方式 定時(shí)定時(shí)/ /計(jì)數(shù)器的應(yīng)用計(jì)數(shù)器的應(yīng)用第第5 5章章 中斷系統(tǒng)和定時(shí)中斷系統(tǒng)和定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器 本章要點(diǎn):本章要點(diǎn):5-1 80C515-1 80C51中斷系統(tǒng)中斷系統(tǒng)CPUCPU暫時(shí)中止其正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行請(qǐng)求中斷暫時(shí)中止其正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行
2、請(qǐng)求中斷的那個(gè)外設(shè)或事件的服務(wù)程序,等處理完畢后再返回執(zhí)的那個(gè)外設(shè)或事件的服務(wù)程序,等處理完畢后再返回執(zhí)行原來(lái)中止的程序行原來(lái)中止的程序, , 叫做中斷。叫做中斷。 為什么要設(shè)置中斷?為什么要設(shè)置中斷? 提高提高CPUCPU工作效率工作效率 具有實(shí)時(shí)處理功能具有實(shí)時(shí)處理功能 具有故障處理功能具有故障處理功能 實(shí)現(xiàn)分時(shí)操作實(shí)現(xiàn)分時(shí)操作一一. .中斷概述中斷概述 什么叫中斷?什么叫中斷? INT0INT0: :外部中斷外部中斷0 0,中斷請(qǐng)求信號(hào)由,中斷請(qǐng)求信號(hào)由P3.2P3.2輸入。輸入。 INT1INT1: :外部中斷外部中斷1 1,中斷請(qǐng)求信號(hào)由,中斷請(qǐng)求信號(hào)由P3.3P3.3輸入。輸入。
3、T0T0: :定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器0 0溢出中斷溢出中斷,對(duì)外部脈沖計(jì)數(shù)由,對(duì)外部脈沖計(jì)數(shù)由P3.4P3.4輸入。輸入。 T1T1: :定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器1 1溢出中斷溢出中斷,對(duì)外部脈沖計(jì)數(shù)由,對(duì)外部脈沖計(jì)數(shù)由P3.5P3.5輸入。輸入。 串行中斷串行中斷: :包括包括串行接收中斷串行接收中斷RIRI和和串行發(fā)送中斷串行發(fā)送中斷TITI。二二. . 中斷源和中斷控制寄存器中斷源和中斷控制寄存器 中斷源中斷源 中斷源是指能發(fā)出中斷請(qǐng)求,引起中斷的中斷源是指能發(fā)出中斷請(qǐng)求,引起中斷的裝置或事件。裝置或事件。 80C5180C51單片機(jī)的中斷源共有單片機(jī)的中斷源共有5 5個(gè),其中個(gè),
4、其中2 2個(gè)個(gè)為外部中斷源,為外部中斷源,3 3個(gè)為內(nèi)部中斷源:個(gè)為內(nèi)部中斷源: 中斷請(qǐng)求:定時(shí)和外中斷控制寄存器中斷請(qǐng)求:定時(shí)和外中斷控制寄存器TCONTCON; ; 串行控制寄存器串行控制寄存器SCONSCON; ; 中斷允許控制寄存器中斷允許控制寄存器IEIE; ; 中斷優(yōu)先級(jí)控制寄存器中斷優(yōu)先級(jí)控制寄存器IPIP。 中斷控制寄存器中斷控制寄存器 80C5180C51單片機(jī)中涉及中斷控制的有單片機(jī)中涉及中斷控制的有3 3個(gè)方面?zhèn)€方面4 4個(gè)個(gè)特殊功能寄存器特殊功能寄存器:INT0INT0、INT1INT1、T0T0、T1T1中斷請(qǐng)求標(biāo)志放在中斷請(qǐng)求標(biāo)志放在TCONTCON中中串行中斷請(qǐng)求
5、標(biāo)志放在串行中斷請(qǐng)求標(biāo)志放在SCONSCON中。中。 中斷請(qǐng)求控制寄存器中斷請(qǐng)求控制寄存器TCONTCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名稱位名稱TF1TF1TF0TF0IE1IE1IT1IT1IE0IE0IT0IT0位地址位地址8FH8FH8EH8EH8DH8DH8CH8CH8BH8BH8AH8AH89H89H88H88H功能功能 T1T1 中斷中斷標(biāo)志標(biāo)志T0T0中斷中斷標(biāo)志標(biāo)志 中斷中斷標(biāo)志標(biāo)志 觸發(fā)觸發(fā)方式方式 中斷中斷標(biāo)志標(biāo)志觸發(fā)觸發(fā)方式方式TCONTCON的結(jié)構(gòu)、位名稱、位地址和功能如下:的結(jié)構(gòu)、位名稱、位地址和功能如下: TCON TCON位功
6、能位功能: : TF1 TF1 T1T1溢出中斷請(qǐng)求標(biāo)志溢出中斷請(qǐng)求標(biāo)志 T1T1計(jì)數(shù)溢出后,計(jì)數(shù)溢出后,TF1=1TF1=1 TF0TF0 T0T0溢出中斷請(qǐng)求標(biāo)志溢出中斷請(qǐng)求標(biāo)志 T0T0計(jì)數(shù)溢出后,計(jì)數(shù)溢出后,TF0=1TF0=1 IE1IE1 外中斷中斷請(qǐng)求標(biāo)志外中斷中斷請(qǐng)求標(biāo)志 當(dāng)當(dāng)P3.3P3.3引腳信號(hào)有效時(shí),引腳信號(hào)有效時(shí),IE1=1IE1=1 IE0IE0 外中斷中斷請(qǐng)求標(biāo)志外中斷中斷請(qǐng)求標(biāo)志 當(dāng)當(dāng)P3.2P3.2引腳信號(hào)有效時(shí),引腳信號(hào)有效時(shí),IE0=1IE0=1 IT1IT1 外中斷觸發(fā)方式控制位外中斷觸發(fā)方式控制位 IT1=1IT1=1,邊沿觸發(fā)方式;,邊沿觸發(fā)方式;
7、IT1=0IT1=0,電平觸發(fā)方式。,電平觸發(fā)方式。 IT0IT0 外中斷觸發(fā)方式控制位外中斷觸發(fā)方式控制位 其意義和功能與其意義和功能與IT1IT1相似。相似。串行控制寄存器串行控制寄存器SCONSCONTCONTCOND7D7 D6D6 D5D5D4D4 D3D3 D2D2D1D1D0D0位名稱位名稱 TITIRIRI位地址位地址 99H99H98H98H功能功能 串行發(fā)送串行發(fā)送中斷標(biāo)志中斷標(biāo)志串行接收串行接收中斷標(biāo)志中斷標(biāo)志 TITI 串行口發(fā)送中斷請(qǐng)求標(biāo)志串行口發(fā)送中斷請(qǐng)求標(biāo)志 RIRI 串行口接收中斷請(qǐng)求標(biāo)志串行口接收中斷請(qǐng)求標(biāo)志 80C5180C51對(duì)中斷源的開(kāi)放或關(guān)閉由中斷允許
8、控對(duì)中斷源的開(kāi)放或關(guān)閉由中斷允許控制寄存器制寄存器IEIE控制??刂?。 中斷允許控制寄存器中斷允許控制寄存器IEIEIEIE的結(jié)構(gòu)、位名稱和位地址如下:的結(jié)構(gòu)、位名稱和位地址如下:IEIED7D7D6D6 D5D5D4D4D3D3D2D2D1D1D0D0位名稱位名稱EAEA ESESET1ET1EX1EX1ET0ET0EX0EX0位地址位地址AFHAFH ACHACHABHABHAAHAAHA9HA9HA8HA8H中斷源中斷源CPUCPU 串行口串行口T1T1T0T0 EAEA CPUCPU中斷允許控制位中斷允許控制位 EA=1EA=1,CPUCPU開(kāi)中;開(kāi)中; EA=0EA=0,CPUCPU
9、關(guān)中,且屏蔽所有關(guān)中,且屏蔽所有5 5個(gè)中斷源。個(gè)中斷源。 EX0EX0 外中斷外中斷INT0INT0中斷允許控制位中斷允許控制位 EX0=1EX0=1,INT0INT0開(kāi)中;開(kāi)中;EX0=0EX0=0,INT0INT0關(guān)中。關(guān)中。 EX1EX1 外中斷外中斷INT1INT1中斷允許控制位中斷允許控制位 EX1=1EX1=1,INT1INT1開(kāi)中;開(kāi)中;EX1=0EX1=0,INT1INT1關(guān)中。關(guān)中。 ET0ET0 定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0中斷允許控制位中斷允許控制位 ET0=1ET0=1,T0T0開(kāi)中;開(kāi)中;ET0=0ET0=0,T0T0關(guān)中。關(guān)中。 ET1ET1 定時(shí)定時(shí)/ /
10、計(jì)數(shù)器計(jì)數(shù)器T1T1中斷允許控制位中斷允許控制位 ET1=1ET1=1,T1T1開(kāi)中;開(kāi)中;ET1=0ET1=0,T1T1關(guān)中。關(guān)中。 ESES 串行口中斷串行口中斷( (包括串發(fā)、串收包括串發(fā)、串收) )允許控制位允許控制位 ES=1ES=1,串行口開(kāi)中;,串行口開(kāi)中;ES=0ES=0,串行口關(guān)中。,串行口關(guān)中。說(shuō)明說(shuō)明: : 80C51 80C51對(duì)中斷實(shí)行兩級(jí)控制,總控制位是對(duì)中斷實(shí)行兩級(jí)控制,總控制位是EAEA,每一,每一中斷源還有各自的控制位。首先要中斷源還有各自的控制位。首先要EA=1EA=1,其次還要自,其次還要自身的控制位置身的控制位置“1”1”。 PX0PX0 :INT0IN
11、T0中斷優(yōu)先級(jí)控制位。中斷優(yōu)先級(jí)控制位。PX0=1PX0=1,為高優(yōu)先級(jí);,為高優(yōu)先級(jí); PX0=0PX0=0,為低優(yōu)先級(jí);,為低優(yōu)先級(jí); PX1PX1 :INT1INT1中斷優(yōu)先級(jí)控制位??刂品椒ㄍ?。中斷優(yōu)先級(jí)控制位??刂品椒ㄍ稀?PT0PT0 :T0T0中斷優(yōu)先級(jí)控制位??刂品椒ㄍ?。中斷優(yōu)先級(jí)控制位??刂品椒ㄍ稀?PT1PT1 :T1T1中斷優(yōu)先級(jí)控制位??刂品椒ㄍ?。中斷優(yōu)先級(jí)控制位??刂品椒ㄍ稀?PS PS :串行口中斷優(yōu)先級(jí)控制位??刂品椒ㄍ稀#捍锌谥袛鄡?yōu)先級(jí)控制位。控制方法同上。 中斷優(yōu)先級(jí)控制寄存器中斷優(yōu)先級(jí)控制寄存器IP 80C51 80C51有有5 5個(gè)中斷源,
12、劃分為個(gè)中斷源,劃分為2 2個(gè)中斷優(yōu)先級(jí):個(gè)中斷優(yōu)先級(jí):高優(yōu)先級(jí)和低優(yōu)先級(jí)高優(yōu)先級(jí)和低優(yōu)先級(jí)。 IPIP的結(jié)構(gòu)、位名稱和位地址如下:的結(jié)構(gòu)、位名稱和位地址如下:IEIED7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0位名稱位名稱PSPSPT1PT1PX1PX1PT0PT0PX0PX0位地址位地址BCHBCHBBHBBHBAHBAHB9HB9HB8HB8H中斷源中斷源串行口串行口T1T1INT1INT1T0T0INT0INT0三三. 中斷處理過(guò)程中斷處理過(guò)程 中斷處理過(guò)程大致可分為四步:中斷處理過(guò)程大致可分為四步: 中斷請(qǐng)求、中斷響應(yīng)、中斷服務(wù)、中斷返回中斷請(qǐng)求、中斷響應(yīng)、中斷服
13、務(wù)、中斷返回 中斷請(qǐng)求中斷請(qǐng)求 中斷源發(fā)出中斷請(qǐng)求信號(hào),相應(yīng)的中斷請(qǐng)求標(biāo)志位中斷源發(fā)出中斷請(qǐng)求信號(hào),相應(yīng)的中斷請(qǐng)求標(biāo)志位( (在中斷在中斷允許控制寄存器允許控制寄存器IEIE中中) )置置“1”1”。 中斷響應(yīng)中斷響應(yīng) CPUCPU查詢(檢測(cè))到某中斷標(biāo)志為查詢(檢測(cè))到某中斷標(biāo)志為“1”1”,在滿足中斷響應(yīng),在滿足中斷響應(yīng)條件下,響應(yīng)中斷。條件下,響應(yīng)中斷。 中斷響應(yīng)條件中斷響應(yīng)條件: 該中斷已經(jīng)該中斷已經(jīng)“開(kāi)中開(kāi)中”; CPU CPU此時(shí)沒(méi)有響應(yīng)同級(jí)或更高級(jí)的中斷;此時(shí)沒(méi)有響應(yīng)同級(jí)或更高級(jí)的中斷; 當(dāng)前正處于所執(zhí)行指令的最后一個(gè)機(jī)器周期;當(dāng)前正處于所執(zhí)行指令的最后一個(gè)機(jī)器周期; 正在執(zhí)行的
14、指令不是正在執(zhí)行的指令不是RETIRETI或者是訪向或者是訪向IEIE、IPIP的指令,的指令, 否則必須再另外執(zhí)行一條指令后才能響應(yīng)。否則必須再另外執(zhí)行一條指令后才能響應(yīng)。 中斷響應(yīng)操作中斷響應(yīng)操作 CPUCPU響應(yīng)中斷后響應(yīng)中斷后, ,進(jìn)行下列操作:進(jìn)行下列操作: 保護(hù)斷點(diǎn)地址;保護(hù)斷點(diǎn)地址; 撤除該中斷源的中斷請(qǐng)求標(biāo)志;撤除該中斷源的中斷請(qǐng)求標(biāo)志; 關(guān)閉同級(jí)中斷;關(guān)閉同級(jí)中斷; 將相應(yīng)中斷的入口地址送入將相應(yīng)中斷的入口地址送入PCPC; 80C5180C51五個(gè)中斷入口地址五個(gè)中斷入口地址:INT0INT0:0003H0003H; T0T0:000BH000BH;INT1INT1:001
15、3H0013H T1 T1:001BH001BH;串行口:;串行口:0023H0023H 執(zhí)行中斷服務(wù)程序執(zhí)行中斷服務(wù)程序 中斷服務(wù)程序應(yīng)包含以下幾部分:中斷服務(wù)程序應(yīng)包含以下幾部分: 保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng) 執(zhí)行中斷服務(wù)程序主體,完成相應(yīng)操作執(zhí)行中斷服務(wù)程序主體,完成相應(yīng)操作 恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng) 中斷返回中斷返回 在中斷服務(wù)程序最后,必須安排一條中斷返回指令在中斷服務(wù)程序最后,必須安排一條中斷返回指令RETIRETI,當(dāng),當(dāng)CPUCPU執(zhí)行執(zhí)行RETIRETI指令后,自動(dòng)完成下列操作:指令后,自動(dòng)完成下列操作: 恢復(fù)斷點(diǎn)地址?;謴?fù)斷點(diǎn)地址。 開(kāi)放同級(jí)中斷,以便允許同級(jí)中斷源請(qǐng)求中斷。開(kāi)放同級(jí)中斷,以
16、便允許同級(jí)中斷源請(qǐng)求中斷。 四四. . 中斷響應(yīng)等待時(shí)間中斷響應(yīng)等待時(shí)間 若排除若排除CPUCPU正在響應(yīng)同級(jí)或更高級(jí)的中斷情況,中斷響應(yīng)等正在響應(yīng)同級(jí)或更高級(jí)的中斷情況,中斷響應(yīng)等待時(shí)間為待時(shí)間為: : 3 38 8個(gè)機(jī)器周期個(gè)機(jī)器周期五五. . 中斷請(qǐng)求的撤除中斷請(qǐng)求的撤除 中斷源發(fā)出中斷請(qǐng)求,相應(yīng)中斷請(qǐng)求標(biāo)志置中斷源發(fā)出中斷請(qǐng)求,相應(yīng)中斷請(qǐng)求標(biāo)志置“1”1”。 CPUCPU響響應(yīng)中斷后,必須清除中斷請(qǐng)求應(yīng)中斷后,必須清除中斷請(qǐng)求“1”1”標(biāo)志。否則中斷響應(yīng)返回后,標(biāo)志。否則中斷響應(yīng)返回后,將再次進(jìn)入該中斷,引起死循環(huán)出錯(cuò)。將再次進(jìn)入該中斷,引起死循環(huán)出錯(cuò)。 對(duì)定時(shí)對(duì)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器
17、T0T0、T1T1中斷,外中斷邊沿觸發(fā)方式,中斷,外中斷邊沿觸發(fā)方式,CPUCPU響響應(yīng)中斷時(shí)就用硬件自動(dòng)清除了相應(yīng)的中斷請(qǐng)求標(biāo)志。應(yīng)中斷時(shí)就用硬件自動(dòng)清除了相應(yīng)的中斷請(qǐng)求標(biāo)志。 對(duì)外中斷電平觸發(fā)方式,需要采取軟硬結(jié)合的方法消除后對(duì)外中斷電平觸發(fā)方式,需要采取軟硬結(jié)合的方法消除后果。果。 對(duì)串行口中斷,用戶應(yīng)在串行中斷服務(wù)程序中用軟件清除對(duì)串行口中斷,用戶應(yīng)在串行中斷服務(wù)程序中用軟件清除TITI或或RIRI。六六. . 中斷優(yōu)先控制和中斷嵌套中斷優(yōu)先控制和中斷嵌套 中斷優(yōu)先控制中斷優(yōu)先控制 80C5180C51中斷優(yōu)先控制首先根據(jù)中斷優(yōu)先級(jí),此外還規(guī)定了中斷優(yōu)先控制首先根據(jù)中斷優(yōu)先級(jí),此外還規(guī)
18、定了同一中斷優(yōu)先級(jí)之間的中斷優(yōu)先權(quán)。其從高到低的順序?yàn)椋和恢袛鄡?yōu)先級(jí)之間的中斷優(yōu)先權(quán)。其從高到低的順序?yàn)椋?INT0INT0、INT1INT1、T0T0、T1T1、串行口。、串行口。 中斷優(yōu)先級(jí)是可編程的中斷優(yōu)先級(jí)是可編程的,而,而中斷優(yōu)先權(quán)是固定的中斷優(yōu)先權(quán)是固定的,不能設(shè),不能設(shè)置,僅用于同級(jí)中斷源同時(shí)請(qǐng)求中斷時(shí)的優(yōu)先次序。置,僅用于同級(jí)中斷源同時(shí)請(qǐng)求中斷時(shí)的優(yōu)先次序。 80C5180C51中斷優(yōu)先控制的基本原則:中斷優(yōu)先控制的基本原則: 高優(yōu)先級(jí)中斷可以中斷正在響應(yīng)的低優(yōu)先級(jí)中斷,反之高優(yōu)先級(jí)中斷可以中斷正在響應(yīng)的低優(yōu)先級(jí)中斷,反之則不能。則不能。 同優(yōu)先級(jí)中斷不能互相中斷。同優(yōu)先級(jí)中
19、斷不能互相中斷。 同一中斷優(yōu)先級(jí)中,若有多個(gè)中斷源同時(shí)請(qǐng)求中斷,同一中斷優(yōu)先級(jí)中,若有多個(gè)中斷源同時(shí)請(qǐng)求中斷,CPUCPU將先響應(yīng)優(yōu)先權(quán)高的中斷,后響應(yīng)優(yōu)先權(quán)低的中斷。將先響應(yīng)優(yōu)先權(quán)高的中斷,后響應(yīng)優(yōu)先權(quán)低的中斷。 中斷嵌套中斷嵌套 當(dāng)當(dāng)CPUCPU正在執(zhí)行某個(gè)中斷服務(wù)程序時(shí),如果發(fā)生更高一正在執(zhí)行某個(gè)中斷服務(wù)程序時(shí),如果發(fā)生更高一級(jí)的中斷源請(qǐng)求中斷,級(jí)的中斷源請(qǐng)求中斷,CPUCPU可以可以“中斷中斷”正在執(zhí)行的低優(yōu)先正在執(zhí)行的低優(yōu)先級(jí)中斷級(jí)中斷,轉(zhuǎn)而響應(yīng)更高一級(jí)的中斷,這就是中斷嵌套。轉(zhuǎn)而響應(yīng)更高一級(jí)的中斷,這就是中斷嵌套。 中斷嵌套只能高優(yōu)先級(jí)中斷嵌套只能高優(yōu)先級(jí)“中斷中斷”低優(yōu)先級(jí),低優(yōu)
20、先級(jí)不低優(yōu)先級(jí),低優(yōu)先級(jí)不能能“中斷中斷”高優(yōu)先級(jí),同一優(yōu)先級(jí)也不能相互高優(yōu)先級(jí),同一優(yōu)先級(jí)也不能相互“中斷中斷”。 中斷嵌套結(jié)構(gòu)類似與中斷嵌套結(jié)構(gòu)類似與調(diào)用子程序嵌套,調(diào)用子程序嵌套,不同不同的是的是: 子程序嵌套是在程序子程序嵌套是在程序中事先按排好的;中斷中事先按排好的;中斷嵌套是隨機(jī)發(fā)生的。嵌套是隨機(jī)發(fā)生的。 子程序嵌套無(wú)次序限子程序嵌套無(wú)次序限制,中斷嵌套只允許高制,中斷嵌套只允許高優(yōu)先級(jí)優(yōu)先級(jí)“中斷中斷”低優(yōu)先低優(yōu)先級(jí)。級(jí)。七七. . 中斷系統(tǒng)的應(yīng)用中斷系統(tǒng)的應(yīng)用 中斷初始化中斷初始化 設(shè)置堆棧指針設(shè)置堆棧指針SPSP 定義中斷優(yōu)先級(jí)定義中斷優(yōu)先級(jí) 定義外中斷觸發(fā)方式定義外中斷觸發(fā)
21、方式 開(kāi)放中斷開(kāi)放中斷 安排好等待中斷或中斷發(fā)生前主程序應(yīng)完成的操作內(nèi)容。安排好等待中斷或中斷發(fā)生前主程序應(yīng)完成的操作內(nèi)容。 中斷服務(wù)主程序中斷服務(wù)主程序 中斷服務(wù)子程序內(nèi)容要求:中斷服務(wù)子程序內(nèi)容要求: 在中斷服務(wù)入口地址設(shè)置一條跳轉(zhuǎn)指令,轉(zhuǎn)移到中斷服務(wù)在中斷服務(wù)入口地址設(shè)置一條跳轉(zhuǎn)指令,轉(zhuǎn)移到中斷服務(wù)程序的實(shí)際入口處。程序的實(shí)際入口處。 根據(jù)需要保護(hù)現(xiàn)場(chǎng)。根據(jù)需要保護(hù)現(xiàn)場(chǎng)。 中斷源請(qǐng)求中斷服務(wù)要求的操作。中斷源請(qǐng)求中斷服務(wù)要求的操作。 恢復(fù)現(xiàn)場(chǎng)。與保護(hù)現(xiàn)場(chǎng)相對(duì)應(yīng),注意先進(jìn)后出、后進(jìn)先出恢復(fù)現(xiàn)場(chǎng)。與保護(hù)現(xiàn)場(chǎng)相對(duì)應(yīng),注意先進(jìn)后出、后進(jìn)先出操作原則。操作原則。 中斷返回,最后一條指令必須是中斷返
22、回,最后一條指令必須是RETIRETI。【例】【例】 出租車計(jì)價(jià)器計(jì)程方法是車輪每運(yùn)轉(zhuǎn)一出租車計(jì)價(jià)器計(jì)程方法是車輪每運(yùn)轉(zhuǎn)一圈產(chǎn)生一個(gè)負(fù)脈沖,從外中斷(圈產(chǎn)生一個(gè)負(fù)脈沖,從外中斷(P3.2P3.2)引腳)引腳輸入,行駛里程為輪胎周長(zhǎng)輸入,行駛里程為輪胎周長(zhǎng)運(yùn)轉(zhuǎn)圈數(shù),設(shè)運(yùn)轉(zhuǎn)圈數(shù),設(shè)輪胎周長(zhǎng)為輪胎周長(zhǎng)為2m2m,試實(shí)時(shí)計(jì)算出租車行駛里程,試實(shí)時(shí)計(jì)算出租車行駛里程(單位米),數(shù)據(jù)存(單位米),數(shù)據(jù)存32H32H、31H31H、30H30H。 中斷系統(tǒng)應(yīng)用舉例中斷系統(tǒng)應(yīng)用舉例解:編程如下:解:編程如下: ORGORG 0000H 0000H; ;復(fù)位地址復(fù)位地址 LJMPLJMP STAT STAT;
23、;轉(zhuǎn)初始化轉(zhuǎn)初始化 ORGORG 0003H 0003H; ;中斷入口地址中斷入口地址 LJMPLJMP INT INT; ;轉(zhuǎn)中斷服務(wù)程序轉(zhuǎn)中斷服務(wù)程序 ORG 0100H ORG 0100H; ;初始化程序首地址初始化程序首地址STAT: MOV SP,#60HSTAT: MOV SP,#60H; ;置堆棧指針置堆棧指針 SETB ITOSETB ITO; ;置邊沿觸發(fā)方式置邊沿觸發(fā)方式 MOV IP,#01HMOV IP,#01H; ;置高優(yōu)先級(jí)置高優(yōu)先級(jí) MOV IE,#81HMOV IE,#81H; ;開(kāi)中開(kāi)中 MOV 30H,#0MOV 30H,#0; ;里程計(jì)數(shù)器清里程計(jì)數(shù)器清0
24、 0 MOV 31H,#0 MOV 31H,#0; ; MOV 32H,#0 MOV 32H,#0; ; LJMP MAIN LJMP MAIN; ;轉(zhuǎn)主程序轉(zhuǎn)主程序, ,并等待中斷并等待中斷 ORG 0200HORG 0200H; ;中斷服務(wù)子程序首地址中斷服務(wù)子程序首地址INT: PUSH AccINT: PUSH Acc; ;保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng) PUSH PSWPUSH PSW; ; MOV A,30H MOV A,30H; ;讀低讀低8 8位計(jì)數(shù)器位計(jì)數(shù)器 ADD A,#2ADD A,#2; ;低低8 8位計(jì)數(shù)器加位計(jì)數(shù)器加2m2m MOV 30H,A MOV 30H,A; ;回存回存
25、CLR ACLR A; ; ADDC A,31H ADDC A,31H; ;中中8 8位計(jì)數(shù)器加進(jìn)位位計(jì)數(shù)器加進(jìn)位 MOV 31H,AMOV 31H,A; ;回存回存 CLR ACLR A; ; ADDC A,32H ADDC A,32H; ;高高8 8位計(jì)數(shù)器加進(jìn)位位計(jì)數(shù)器加進(jìn)位 MOV 32H,AMOV 32H,A; ;回存回存 PUSH PSWPUSH PSW; ;恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng) PUSH Acc PUSH Acc ; ; RETI RETI; ;中斷返回中斷返回【例】現(xiàn)有【例】現(xiàn)有5 5個(gè)外中斷源個(gè)外中斷源EX1EX1、EX20EX20、EX21EX21、EX22EX22和和EX23
26、EX23,高電平時(shí)表示請(qǐng)求中斷,要求執(zhí)行相應(yīng)中斷,高電平時(shí)表示請(qǐng)求中斷,要求執(zhí)行相應(yīng)中斷服務(wù)程序,試編制程序。服務(wù)程序,試編制程序。 解:解:ORGORG0000H0000H; ;復(fù)位地址復(fù)位地址LJMPLJMP MAINMAIN ; ;轉(zhuǎn)主程序轉(zhuǎn)主程序ORGORG0003H0003H; ;中斷入口地址中斷入口地址LJMPLJMP PINT0PINT0; ;轉(zhuǎn)中斷服務(wù)程序轉(zhuǎn)中斷服務(wù)程序ORGORG0013H0013H; ;中斷入口地址中斷入口地址LJMPLJMP PINT1PINT1; ;轉(zhuǎn)中斷服務(wù)程序轉(zhuǎn)中斷服務(wù)程序 ORGORG0100H0100H ; ;主程序首地址主程序首地址MAIN:
27、MOVMAIN: MOVSP,#60HSP,#60H; ;置堆棧指針置堆棧指針 ORLORLTCON,#05HTCON,#05H; ;置置INT0INT0、INT1INT1為邊沿觸發(fā)方式為邊沿觸發(fā)方式 SETBSETB PX0 PX0 ; ;置為高優(yōu)先級(jí)置為高優(yōu)先級(jí) MOVMOVIE,#0FFHIE,#0FFH; ;全部開(kāi)中全部開(kāi)中 ; ;主程序內(nèi)容主程序內(nèi)容 ORG 1000HORG 1000H; ;中斷服務(wù)程序首地址中斷服務(wù)程序首地址 PINT0: PUSHPINT0: PUSH AccAcc; ;中斷中斷, ,保護(hù)現(xiàn)場(chǎng)保護(hù)現(xiàn)場(chǎng) LCALL WORK1LCALL WORK1; ;調(diào)用調(diào)用E
28、X1EX1服務(wù)子程序服務(wù)子程序 POPPOPAccAcc; ;恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng) RETIRETI; ;中斷返回中斷返回 ORGORG 2000H 2000H ; ;中斷服務(wù)程序首地址中斷服務(wù)程序首地址PINT1: CLRPINT1: CLR EA EA ;CPU;CPU禁中禁中 PUSHPUSH Acc Acc ; ;中斷保護(hù)現(xiàn)場(chǎng)中斷保護(hù)現(xiàn)場(chǎng) PUSHPUSH DPH DPH ; ; PUSH PUSH DPL DPL ; ; SETB SETB EA EA ;CPU;CPU開(kāi)中開(kāi)中 JB P1.0, JB P1.0,LWK20LWK20;P1.0=1,EX20;P1.0=1,EX20請(qǐng)求中斷
29、請(qǐng)求中斷 JB P1.1,JB P1.1,LWK21LWK21;P1.1=1,EX21;P1.1=1,EX21請(qǐng)求中斷請(qǐng)求中斷 JB P1.2,JB P1.2,LWK22LWK22;P1.2=1,EX22;P1.2=1,EX22請(qǐng)求中斷請(qǐng)求中斷 LCALL WORK23 LCALL WORK23 ;P1.3=1,;P1.3=1,調(diào)用調(diào)用EX23EX23服務(wù)子服務(wù)子LRET:LRET: CLR CLR EA EA;CPU;CPU禁中禁中 POPPOP DPL DPL; ;恢復(fù)現(xiàn)場(chǎng)恢復(fù)現(xiàn)場(chǎng) POPPOP DPH DPH; ; POP POP Acc Acc; ; SETB SETB EA EA;C
30、PU;CPU開(kāi)中開(kāi)中 RETIRETI; ;中斷返回中斷返回LWK20LWK20: LCALL WORK20: LCALL WORK20;P1.0 = 1,;P1.0 = 1,調(diào)用調(diào)用EX20EX20服務(wù)子程序服務(wù)子程序 SJMP LRET SJMP LRET ; ;轉(zhuǎn)中斷返回轉(zhuǎn)中斷返回LWK21LWK21: LCALL WORK21 : LCALL WORK21 ;P1.1 = 1,;P1.1 = 1,調(diào)用調(diào)用EX21EX21服務(wù)子程序服務(wù)子程序 SJMP LRETSJMP LRET; ;轉(zhuǎn)中斷返回轉(zhuǎn)中斷返回LWK22LWK22: LCALL WORK22 : LCALL WORK22 ;P
31、1.2 = 1,;P1.2 = 1,調(diào)用調(diào)用EX22EX22服務(wù)子程序服務(wù)子程序 SJMP LRETSJMP LRET; ;轉(zhuǎn)中斷返回轉(zhuǎn)中斷返回 定時(shí)定時(shí)/ /計(jì)數(shù)器是單片機(jī)系統(tǒng)一個(gè)重要的部計(jì)數(shù)器是單片機(jī)系統(tǒng)一個(gè)重要的部件,其工作方式靈活、編程簡(jiǎn)單、使用方便,件,其工作方式靈活、編程簡(jiǎn)單、使用方便,可用來(lái)實(shí)現(xiàn)可用來(lái)實(shí)現(xiàn)定時(shí)控制定時(shí)控制、延時(shí)延時(shí)、頻率測(cè)量頻率測(cè)量、脈寬脈寬測(cè)量測(cè)量、信號(hào)發(fā)生信號(hào)發(fā)生、信號(hào)檢測(cè)信號(hào)檢測(cè)等。此外,定時(shí)等。此外,定時(shí)/ /計(jì)數(shù)器還可作為串行通信中波特率發(fā)生器。計(jì)數(shù)器還可作為串行通信中波特率發(fā)生器。5-25-2 80C5180C51定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器 80C51
32、80C51單片機(jī)內(nèi)部有兩個(gè)定時(shí)單片機(jī)內(nèi)部有兩個(gè)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0和和T1T1,其,其核心是計(jì)數(shù)器,基本功能是加核心是計(jì)數(shù)器,基本功能是加1 1。 對(duì)外部事件脈沖(下降沿)計(jì)數(shù),是計(jì)數(shù)器;對(duì)對(duì)外部事件脈沖(下降沿)計(jì)數(shù),是計(jì)數(shù)器;對(duì)片內(nèi)機(jī)周脈沖計(jì)數(shù),是定時(shí)器。片內(nèi)機(jī)周脈沖計(jì)數(shù),是定時(shí)器。 計(jì)數(shù)器由二個(gè)計(jì)數(shù)器由二個(gè)8 8位計(jì)數(shù)器組成。位計(jì)數(shù)器組成。 定時(shí)時(shí)間和計(jì)數(shù)值可以編程設(shè)定,其方法是在計(jì)定時(shí)時(shí)間和計(jì)數(shù)值可以編程設(shè)定,其方法是在計(jì)數(shù)器內(nèi)設(shè)置一個(gè)初值,然后加數(shù)器內(nèi)設(shè)置一個(gè)初值,然后加1 1計(jì)滿后溢出。調(diào)整計(jì)滿后溢出。調(diào)整計(jì)數(shù)器初值,可調(diào)整從初值到計(jì)滿溢出的數(shù)值,計(jì)數(shù)器初值,可調(diào)整從初值
33、到計(jì)滿溢出的數(shù)值,即調(diào)整了定時(shí)時(shí)間和計(jì)數(shù)值。即調(diào)整了定時(shí)時(shí)間和計(jì)數(shù)值。 定時(shí)定時(shí)/ /計(jì)數(shù)器作為計(jì)數(shù)器時(shí),外部事件脈沖必須從計(jì)數(shù)器作為計(jì)數(shù)器時(shí),外部事件脈沖必須從規(guī)定的引腳輸入。且外部脈沖的最高頻率不能超規(guī)定的引腳輸入。且外部脈沖的最高頻率不能超過(guò)時(shí)鐘頻率的過(guò)時(shí)鐘頻率的1/241/24。一一. . 定時(shí)定時(shí)/ /計(jì)數(shù)器概述計(jì)數(shù)器概述TCONTCON低低4 4位與外中斷位與外中斷 、 有關(guān),已在有關(guān),已在中斷中敘述。中斷中敘述。 高高4 4位與定時(shí)位與定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0、T1T1有關(guān)。有關(guān)。 TF1: TF1:定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T1T1溢出標(biāo)志。溢出標(biāo)志。 TF0: TF0:
34、定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0溢出標(biāo)志。溢出標(biāo)志。 TR1: TR1:定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T1T1運(yùn)行控制位。運(yùn)行控制位。TR1=1,T1TR1=1,T1運(yùn)行運(yùn)行;TR1=0,T1;TR1=0,T1停。停。 TR0: TR0:定時(shí)定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0運(yùn)行控制位。運(yùn)行控制位。TR0=1,T0TR0=1,T0運(yùn)行運(yùn)行;TR0=0,T0;TR0=0,T0停。停。TCONTCON的字節(jié)地址為的字節(jié)地址為88H88H,每一位有位地址,均可位操作。,每一位有位地址,均可位操作。 定時(shí)定時(shí)/ /計(jì)數(shù)器控制寄存器計(jì)數(shù)器控制寄存器TCONTCON二二. . 定時(shí)定時(shí)/ /計(jì)數(shù)器的控制寄存器計(jì)
35、數(shù)器的控制寄存器TCONTCONT1T1中斷中斷標(biāo)志標(biāo)志T1T1運(yùn)行運(yùn)行標(biāo)志標(biāo)志T0T0中斷中斷標(biāo)志標(biāo)志T0T0運(yùn)行運(yùn)行標(biāo)志標(biāo)志INT1INT1中斷中斷標(biāo)志標(biāo)志INT1INT1觸發(fā)觸發(fā)方式方式INT0INT0中斷中斷標(biāo)志標(biāo)志INT0INT0觸發(fā)觸發(fā)方式方式位名稱位名稱TF1TF1TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0位地址位地址8FH8FH8EH8EH8DH8DH8CH8CH8BH8BH8AH8AH89H89H88H88HINT0INT1高高4 4位控制位控制T1T1低低4 4位控制位控制T0T0門控門控位位計(jì)數(shù)計(jì)數(shù)/ /定時(shí)定時(shí)方式選擇方式選擇工
36、作方式工作方式選擇選擇門控門控位位計(jì)數(shù)計(jì)數(shù)/ /定時(shí)定時(shí)方式選擇方式選擇工作方式工作方式選擇選擇G GC / TC / TM1M1M0M0G GC / TC / TM1M1M0M0TMODTMOD用于設(shè)定定時(shí)用于設(shè)定定時(shí)/ /計(jì)數(shù)器的工作方式計(jì)數(shù)器的工作方式低低4 4位用于控制位用于控制T0T0,高高4 4位用于控制位用于控制T1T1。 定時(shí)定時(shí)/ /計(jì)數(shù)器工作方式控制寄存器計(jì)數(shù)器工作方式控制寄存器TMODTMOD M1M0 M1M0 工作方式選擇位工作方式選擇位M1M0M1M0工作方式工作方式功能功能0000方式方式0 01313位計(jì)數(shù)器位計(jì)數(shù)器0101方式方式1 11616位計(jì)數(shù)器位計(jì)數(shù)器
37、1010方式方式2 2兩個(gè)兩個(gè)8 8位計(jì)數(shù)器,初值自動(dòng)裝入位計(jì)數(shù)器,初值自動(dòng)裝入1111方式方式3 3兩個(gè)兩個(gè)8 8位計(jì)數(shù)器,僅適用位計(jì)數(shù)器,僅適用T0T0 C/T C/T 計(jì)數(shù)計(jì)數(shù)/ /定時(shí)方式選擇位定時(shí)方式選擇位 C/T=1,C/T=1,計(jì)數(shù)工作方式計(jì)數(shù)工作方式, ,對(duì)外部事件脈沖計(jì)數(shù)對(duì)外部事件脈沖計(jì)數(shù), ,用作計(jì)數(shù)器。用作計(jì)數(shù)器。 C/T=0,C/T=0,定時(shí)工作方式定時(shí)工作方式, ,對(duì)片內(nèi)機(jī)周脈沖計(jì)數(shù)對(duì)片內(nèi)機(jī)周脈沖計(jì)數(shù), ,用作定時(shí)器。用作定時(shí)器。 GATE GATE 門控位門控位 GATE=0GATE=0,運(yùn)行只受,運(yùn)行只受TCONTCON中運(yùn)行控制位中運(yùn)行控制位TR0/TR1TR0
38、/TR1的控制。的控制。 GATE=1GATE=1,運(yùn)行同時(shí)受,運(yùn)行同時(shí)受TR0/TR1TR0/TR1和外中斷輸入信號(hào)和外中斷輸入信號(hào)的雙重控制。的雙重控制。 只有當(dāng)只有當(dāng)INT0/INT1=1INT0/INT1=1且且TR0/TR1=1,T0/T1TR0/TR1=1,T0/T1才能運(yùn)行。才能運(yùn)行。 TMODTMOD字節(jié)地址字節(jié)地址89H,89H,不能位操作不能位操作, ,設(shè)置設(shè)置TMODTMOD須用字節(jié)操作指令。須用字節(jié)操作指令。三三. . 定時(shí)定時(shí)/ /計(jì)數(shù)器工作方式計(jì)數(shù)器工作方式 工作方式工作方式0 0 1313位位計(jì)數(shù)器,由計(jì)數(shù)器,由TL0TL0低低5 5位和位和TH0 8TH0 8位
39、組成,位組成,TL0TL0低低5 5位計(jì)數(shù)滿時(shí)不向位計(jì)數(shù)滿時(shí)不向TL0TL0第第6 6位位進(jìn)位,而是向進(jìn)位,而是向TH0TH0進(jìn)位,進(jìn)位,1313位計(jì)滿溢出,位計(jì)滿溢出,TF0TF0置置“1”1”。最大計(jì)數(shù)值最大計(jì)數(shù)值2 21313 = 8192 = 8192。 工作方式工作方式1 1 1616位位計(jì)數(shù)器,計(jì)數(shù)器,最大計(jì)數(shù)值為最大計(jì)數(shù)值為2 21616 = 65536 = 65536。 工作方式工作方式2 2 8 8位位計(jì)數(shù)器,僅用計(jì)數(shù)器,僅用TL0TL0計(jì)數(shù),計(jì)數(shù),最大計(jì)數(shù)值為最大計(jì)數(shù)值為2 28 8= 256= 256,計(jì)滿溢出后,一方面進(jìn),計(jì)滿溢出后,一方面進(jìn)位位TF0TF0,使溢出標(biāo)志
40、,使溢出標(biāo)志TF0 = 1TF0 = 1;另一方面,使原來(lái)裝在;另一方面,使原來(lái)裝在TH0TH0中的初值裝入中的初值裝入TL0TL0。 優(yōu)點(diǎn):定時(shí)初值可自動(dòng)恢復(fù)優(yōu)點(diǎn):定時(shí)初值可自動(dòng)恢復(fù); ;缺點(diǎn):計(jì)數(shù)范圍小。缺點(diǎn):計(jì)數(shù)范圍小。 適用于需要重復(fù)定時(shí),而定時(shí)范圍不大的應(yīng)用場(chǎng)合。適用于需要重復(fù)定時(shí),而定時(shí)范圍不大的應(yīng)用場(chǎng)合。 工作方式工作方式3 3 方式方式3 3僅適用于僅適用于T0T0,T1T1無(wú)方式無(wú)方式3 3。 T0T0方式方式3 3 在方式在方式3 3情況下情況下, ,T0T0被拆成二個(gè)獨(dú)立的被拆成二個(gè)獨(dú)立的8 8位計(jì)數(shù)器位計(jì)數(shù)器TH0TH0、TL0TL0。 TL0 TL0使用使用T0T0原
41、有的控制寄存器資源原有的控制寄存器資源:TF0,TR0,GATE,C/T,INT0,:TF0,TR0,GATE,C/T,INT0,組成一個(gè)組成一個(gè)8 8位的定時(shí)位的定時(shí)/ /計(jì)數(shù)器;計(jì)數(shù)器; TH0 TH0借用借用T1T1的中斷溢出標(biāo)志的中斷溢出標(biāo)志TF1,TF1,運(yùn)行控制開(kāi)關(guān)運(yùn)行控制開(kāi)關(guān)TR1,TR1,只能對(duì)片內(nèi)機(jī)周脈沖只能對(duì)片內(nèi)機(jī)周脈沖計(jì)數(shù)計(jì)數(shù), ,組成另一個(gè)組成另一個(gè)8 8位定時(shí)器位定時(shí)器( (不能用作計(jì)數(shù)器不能用作計(jì)數(shù)器) )。 T0T0方式方式3 3情況下的情況下的T1T1 T1 T1由于其由于其TF1TF1、TR1TR1被被T0T0的的TH0TH0占用,計(jì)數(shù)器溢出時(shí),只能將輸出信號(hào)
42、送至占用,計(jì)數(shù)器溢出時(shí),只能將輸出信號(hào)送至串行口,即串行口,即用作串行口波特率發(fā)生器用作串行口波特率發(fā)生器。其中其中: N: N與工作方式有關(guān)與工作方式有關(guān): : 方式方式0 0時(shí)時(shí), ,N=N=1313; 方式方式1 1時(shí)時(shí), ,N=N=1616; 方式方式2 2、3 3時(shí)時(shí), ,N=N=8 8。 機(jī)周時(shí)間與主振頻率有關(guān)機(jī)周時(shí)間與主振頻率有關(guān): :機(jī)周時(shí)間機(jī)周時(shí)間=12/fosc=12/fosc fosc=fosc=12MHZ12MHZ時(shí)時(shí),1 1機(jī)周機(jī)周= =1 1 S S; fosc=fosc=6MHZ6MHZ 時(shí)時(shí),1 1機(jī)周機(jī)周= =2 2 S S。 四四. . 定時(shí)定時(shí)/ /計(jì)數(shù)器
43、的應(yīng)用計(jì)數(shù)器的應(yīng)用 計(jì)算定時(shí)計(jì)算定時(shí)/ /計(jì)數(shù)初值計(jì)數(shù)初值80C5180C51定時(shí)定時(shí)/ /計(jì)數(shù)初值計(jì)算公式:計(jì)數(shù)初值計(jì)算公式:解:解:工作方式工作方式0 0: 2 21313500500 S/2S/2 S=8192-250=7942=1F06HS=8192-250=7942=1F06H 1F06H 1F06H化成二進(jìn)制:化成二進(jìn)制: 1F06H=0001 1111 0000 0110B1F06H=0001 1111 0000 0110B =000 =000 1111100011111000 0011000110 B B其中:其中:低低5 5位位0011000110前添加前添加3 3位位000
44、000送入送入TL0TL0 TL0=000 TL0=000 0011000110B=06HB=06H; 高高8 8位位11111000B11111000B送入送入TH0TH0 TH0= TH0=1111100011111000B=F8HB=F8H?!纠俊纠?已知晶振已知晶振6MHz6MHz,要求定時(shí),要求定時(shí)0.5mS0.5mS,試分別,試分別求出求出T0T0工作于方式工作于方式0 0、方式、方式1 1、方式、方式2 2、方式、方式3 3時(shí)的時(shí)的定時(shí)初值。定時(shí)初值。 工作方式工作方式1 1: T0T0初值初值 =2=21616-500-500 s s/2/2 s s=65536250=65
45、286=FF06H=65536250=65286=FF06H TH0=FFH TH0=FFH;TL0=06HTL0=06H。 工作方式工作方式2 2: T0T0初值初值 =2=28 8-500-500 s s/2/2 s s=256-250=6=256-250=6 TH0=06H TH0=06H;TL0=06HTL0=06H。 工作方式工作方式3 3: T0T0方式方式3 3時(shí),被拆成兩個(gè)時(shí),被拆成兩個(gè)8 8位定時(shí)器,定時(shí)初值可分別計(jì)位定時(shí)器,定時(shí)初值可分別計(jì)算,計(jì)算方法同方式算,計(jì)算方法同方式2 2。兩個(gè)定時(shí)初值一個(gè)裝入。兩個(gè)定時(shí)初值一個(gè)裝入TL0TL0,另一個(gè),另一個(gè)裝入裝入TH0TH0。
46、因此:。因此: TH0=06HTH0=06H;TL0=06HTL0=06H。 從上例中看到,方式從上例中看到,方式0 0時(shí)計(jì)算定時(shí)初值比較麻煩,根據(jù)時(shí)計(jì)算定時(shí)初值比較麻煩,根據(jù)公式計(jì)算出數(shù)值后,還要變換一下,容易出錯(cuò),不如直接用公式計(jì)算出數(shù)值后,還要變換一下,容易出錯(cuò),不如直接用方式方式1 1,且方式,且方式0 0計(jì)數(shù)范圍比方式計(jì)數(shù)范圍比方式1 1小,小,方式方式0 0完全可以用方式完全可以用方式1 1代替,方式代替,方式0 0與方式與方式1 1相比,無(wú)任何優(yōu)點(diǎn)相比,無(wú)任何優(yōu)點(diǎn)。 定時(shí)定時(shí)/ /計(jì)數(shù)器應(yīng)用步驟計(jì)數(shù)器應(yīng)用步驟 合理選擇定時(shí)合理選擇定時(shí)/ /計(jì)數(shù)器工作方式計(jì)數(shù)器工作方式 計(jì)算定時(shí)計(jì)
47、算定時(shí)/ /計(jì)數(shù)器定時(shí)初值計(jì)數(shù)器定時(shí)初值( (按上述公式計(jì)算按上述公式計(jì)算) ) 編制應(yīng)用程序編制應(yīng)用程序 定時(shí)定時(shí)/ /計(jì)數(shù)器的初始化計(jì)數(shù)器的初始化 包括定義包括定義TMODTMOD、寫入定時(shí)初值、設(shè)置中斷系統(tǒng)、啟動(dòng)、寫入定時(shí)初值、設(shè)置中斷系統(tǒng)、啟動(dòng)定時(shí)定時(shí)/ /計(jì)數(shù)器運(yùn)行等。計(jì)數(shù)器運(yùn)行等。 正確編制定時(shí)正確編制定時(shí)/ /計(jì)數(shù)器中斷服務(wù)程序計(jì)數(shù)器中斷服務(wù)程序 注意是否需要重裝定時(shí)初值,若需要連續(xù)反復(fù)使用原注意是否需要重裝定時(shí)初值,若需要連續(xù)反復(fù)使用原定時(shí)時(shí)間,且未工作在方式定時(shí)時(shí)間,且未工作在方式2 2,則應(yīng)在中斷服務(wù)程序中重裝,則應(yīng)在中斷服務(wù)程序中重裝定時(shí)初值。定時(shí)初值?!纠吭囉谩纠吭?/p>
48、用T1T1方式方式2 2編制程序,在編制程序,在P1.0P1.0引腳輸出周引腳輸出周期為期為400400 S S的脈沖方波,已知的脈沖方波,已知fosc=12MHZfosc=12MHZ。解:解: 計(jì)算定時(shí)初值計(jì)算定時(shí)初值 T1T1初值初值=2=28 8-200-200 s s/1/1 s s=256200=56=38H=256200=56=38H TH1=38H TH1=38H;TL1=38HTL1=38H 設(shè)置設(shè)置TMODTMOD: 0 0 0 0 1010 00000000 B=20H B=20H T0 T0控制位,與控制位,與T1T1無(wú)關(guān)無(wú)關(guān) T1T1方式方式2 2 T1 T1定時(shí)器定時(shí)
49、器 T1T1啟動(dòng)與啟動(dòng)與 無(wú)關(guān)無(wú)關(guān)INT1 編制程序編制程序如下:如下: ORGORG0000H0000H ; ;復(fù)位地址復(fù)位地址LJMPLJMPMAINMAIN ; ;轉(zhuǎn)主程序轉(zhuǎn)主程序ORGORG001BH001BH ;T1;T1中斷入口地址中斷入口地址LJMPLJMPIT1IT1 ; ;轉(zhuǎn)轉(zhuǎn)T1T1中斷服務(wù)程序中斷服務(wù)程序 ORGORG0100H0100H ; ;主程序首地址主程序首地址MAIN:MAIN: MOVMOVTMOD,#20HTMOD,#20H ; ;置置T1T1定時(shí)器方式定時(shí)器方式2 2MOVMOVTL1,#38HTL1,#38H ; ;置定時(shí)初值置定時(shí)初值MOVMOVTH1
50、,#38HTH1,#38H ; ;置定時(shí)初值備份置定時(shí)初值備份MOVMOVIP,#00001000BIP,#00001000B; ;置置T1T1高優(yōu)先級(jí)高優(yōu)先級(jí)MOVMOVIE,#0FFHIE,#0FFH ; ;全部開(kāi)中全部開(kāi)中SETBSETBTR1TR1 ;T1;T1運(yùn)行運(yùn)行SJMPSJMP$ $ ; ;等待等待T1T1中斷中斷 ORG 0200H ORG 0200H ;T1;T1中斷服務(wù)程序首地址中斷服務(wù)程序首地址IT1:IT1: CPL P1.0 CPL P1.0 ; ;輸出波形取反首地址輸出波形取反首地址RETI RETI ; ;中斷返回中斷返回【課堂練習(xí)題】【課堂練習(xí)題】 參照以上例
51、題工作方式參照以上例題工作方式2 2,按下列要求分別,按下列要求分別修改程序:修改程序: 脈沖方波從脈沖方波從P3.0P3.0輸出;輸出; fosc=6MHz fosc=6MHz; 脈沖方波脈寬為脈沖方波脈寬為100100 s s; 用定時(shí)用定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器T0T0;【例】已知晶振【例】已知晶振12MHZ12MHZ,參閱圖,參閱圖5-15,5-15,要求利用定時(shí)器要求利用定時(shí)器 T0T0使圖中發(fā)光二極管使圖中發(fā)光二極管D D進(jìn)行秒閃爍。進(jìn)行秒閃爍。 解:發(fā)光二極管進(jìn)行秒解:發(fā)光二極管進(jìn)行秒閃爍。即一秒鐘一亮一閃爍。即一秒鐘一亮一暗,亮暗,亮500ms500ms,暗,暗500 500 ms
52、ms。晶振。晶振12MHz12MHz,每機(jī),每機(jī)周周1 1 s s,T0T0方式方式1 1最大定最大定時(shí)只能時(shí)只能65ms65ms余。余。 取取T0T0定時(shí)定時(shí)50ms50ms,計(jì),計(jì)數(shù)數(shù)1010次,即可實(shí)現(xiàn)次,即可實(shí)現(xiàn)500ms500ms定時(shí)。定時(shí)。 計(jì)算定時(shí)初值計(jì)算定時(shí)初值 T0T0初值初值 =216-50000=216-50000 s s/1/1 s s =6553650000=15536=3CB0H =6553650000=15536=3CB0H TH0=3CH TH0=3CH;TL0=B0HTL0=B0H。 設(shè)置設(shè)置TMODTMOD: 00000000 0 0 0 0 0101 B
53、= 01H B = 01H T0 T0方式方式1 1 T0T0 與與 無(wú)關(guān)無(wú)關(guān) T1T1控制位控制位INT0 編制程序編制程序如下:如下: ORGORG 0000H 0000H ; ;復(fù)位地址復(fù)位地址LJMPLJMP MAIN MAIN ; ;轉(zhuǎn)主程序轉(zhuǎn)主程序ORGORG 000BH 000BH ;T0;T0中斷入口地址中斷入口地址LJMPLJMP IT0 IT0 ; ;轉(zhuǎn)轉(zhuǎn)T0T0中斷服務(wù)程序中斷服務(wù)程序ORGORG 0100H 0100H ; ;主程序首地址主程序首地址MAIN:MOV MAIN:MOV TMOD,#01H TMOD,#01H ; ;置置T0T0定時(shí)器方式定時(shí)器方式1 1M
54、OVMOV TH0,#3CH TH0,#3CH ; ;置置T0T0初值初值50mS50mSMOVMOV TL0,#0B0H TL0,#0B0H ; ;MOVMOV IE,#10000010B IE,#10000010B;T0;T0開(kāi)中開(kāi)中 MOVMOV R7,#0AH R7,#0AH ; ;置置50mS50mS計(jì)數(shù)器初值計(jì)數(shù)器初值 SETBSETB TR0 TR0 ;T0;T0運(yùn)行運(yùn)行SJMPSJMP $ $ ; ;等待中斷等待中斷 【例】已知【例】已知fosc=6MHzfosc=6MHz,試編寫,試編寫2424小時(shí)模擬電子鐘程序,秒分時(shí)數(shù)分別存在小時(shí)模擬電子鐘程序,秒分時(shí)數(shù)分別存在R1R1、
55、R2R2、R3R3中,可直接調(diào)用顯示程序中,可直接調(diào)用顯示程序DIRDIR。解:解: ORG 0000H ORG 0000H ; ;復(fù)位地址復(fù)位地址 LJMP IT0 LJMP IT0 ; ;轉(zhuǎn)轉(zhuǎn)主程序主程序 ORG 000BH ORG 000BH ;T0;T0中斷入口地址中斷入口地址 LJMP IT0 LJMP IT0 ;T0;T0中斷中斷, ,轉(zhuǎn)轉(zhuǎn)T0T0中斷服務(wù)子程序中斷服務(wù)子程序IT0IT0 ORG 1000H ORG 1000H ; ;主程序首地址主程序首地址START:MOV R1,#0 START:MOV R1,#0 ; ;秒計(jì)數(shù)器清秒計(jì)數(shù)器清0 0 MOV R2,#0 MOV
56、R2,#0 ; ;分計(jì)數(shù)器清分計(jì)數(shù)器清0 0 MOV R3,#0 MOV R3,#0 ; ;時(shí)計(jì)數(shù)器清時(shí)計(jì)數(shù)器清0 0 MOV R4,#0 MOV R4,#0 ;500;500 S S計(jì)數(shù)器清計(jì)數(shù)器清0 0 MOV R5,#0 MOV R5,#0 ;100ms;100ms計(jì)數(shù)器清計(jì)數(shù)器清0 0 MOV TMOD,#02H MOV TMOD,#02H; ;置置T0T0定時(shí)器方式定時(shí)器方式2 2 MOV TL0,#06H MOV TL0,#06H ; ;置置T0T0定時(shí)初值定時(shí)初值500500 S S MOV TH0,#06H MOV TH0,#06H ; ;用于自動(dòng)恢復(fù)定時(shí)初值用于自動(dòng)恢復(fù)定時(shí)初
57、值 SETB TR0 SETB TR0 ; ;啟動(dòng)啟動(dòng)T0T0WAIT: LCALL DIR WAIT: LCALL DIR ; ;顯示時(shí)鐘時(shí)分秒并等待中斷顯示時(shí)鐘時(shí)分秒并等待中斷 SJMP WAIT SJMP WAIT ; ;循環(huán)顯示循環(huán)顯示 ORG 0200HORG 0200H ;T0 ;T0中斷服務(wù)程序首地址中斷服務(wù)程序首地址IT0:IT0: MOV TH0,#3CH MOV TH0,#3CH ; ;重置重置T0T0初值初值50mS50mS MOV TL0,#0B0H MOV TL0,#0B0H; ; DJNZ R7,GORET DJNZ R7,GORET ; ;判判500mS500mS到否?到否? CPL P1.7 CPL P1.7 ;500mS ;500mS 到到, ,輸出取反輸出取反 MOV R7,#0AH MOV R7,#0AH ; ;恢復(fù)恢復(fù)50mS50mS計(jì)
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年健康服務(wù)項(xiàng)目合作醫(yī)療器械采購(gòu)合同
- 2025年體育教育讀物合作協(xié)議
- 2025年國(guó)內(nèi)空運(yùn)貨物責(zé)任協(xié)議
- 2025年借殼上市一般合同協(xié)議
- 院感知識(shí)醫(yī)廢培訓(xùn)課件
- 2025年會(huì)員服務(wù)分成協(xié)議
- 2025年歷史故事版權(quán)轉(zhuǎn)讓合同
- 二零二五年海南二手房買賣合同附帶家居設(shè)備贈(zèng)送條款3篇
- 二零二五版醫(yī)療機(jī)構(gòu)藥品自行采購(gòu)合同3篇
- 2025年機(jī)場(chǎng)宣傳欄設(shè)計(jì)與制作及廣告服務(wù)合同3篇
- 房地產(chǎn)營(yíng)銷策劃 -佛山龍灣壹號(hào)學(xué)區(qū)房項(xiàng)目推廣策略提案方案
- 產(chǎn)品共同研發(fā)合作協(xié)議范本5篇
- 風(fēng)水學(xué)的基礎(chǔ)知識(shí)培訓(xùn)
- 2024年6月高考地理真題完全解讀(安徽省)
- 吸入療法在呼吸康復(fù)應(yīng)用中的中國(guó)專家共識(shí)2022版
- 1-35kV電纜技術(shù)參數(shù)表
- 信息科技課程標(biāo)準(zhǔn)測(cè)(2022版)考試題庫(kù)及答案
- 施工組織設(shè)計(jì)方案針對(duì)性、完整性
- 2002版干部履歷表(貴州省)
- DL∕T 1909-2018 -48V電力通信直流電源系統(tǒng)技術(shù)規(guī)范
- 2024年服裝制版師(高級(jí))職業(yè)鑒定考試復(fù)習(xí)題庫(kù)(含答案)
評(píng)論
0/150
提交評(píng)論