蓝桥杯单片机基础学习00_2
三、功能模塊
4、中斷系統(tǒng)
中斷系統(tǒng)
1)中斷的概念:這是大家需要在腦子里有的一個(gè)印象,我們大致可以將中斷描述成CPU在處理某一事件A時(shí),發(fā)生了另一事件B請(qǐng)求CPU迅速去處理(中斷發(fā)生);CPU暫時(shí)中斷當(dāng)前的工作,轉(zhuǎn)去處理事件B(中斷響應(yīng)和中斷服務(wù));待CPU將事件B處理完畢后,再回到原來事件A被中斷的地方繼續(xù)處理事件A(中斷返回),這一過程我們稱為中斷。
2)中斷源:我們將引起CPU中斷的根源或原因,稱為中斷源。中斷源向CPU提出的處理請(qǐng)求,稱為中斷請(qǐng)求或中斷申請(qǐng)。(傳統(tǒng)的51單片機(jī)有5個(gè)中斷源,而我們使用的IAP15有14個(gè)中斷源)
3)使用中斷我們一定要知道中斷優(yōu)先級(jí)和中斷嵌套這兩個(gè)概念。
①中斷優(yōu)先級(jí):當(dāng)有幾個(gè)中斷源同時(shí)申請(qǐng)中斷時(shí),那么就存在CPU先響應(yīng)哪個(gè)中斷請(qǐng)求的問題?為此,CPU要對(duì)各中斷源確定一個(gè)優(yōu)先等級(jí),稱為中斷優(yōu)先級(jí)。中斷優(yōu)先級(jí)高的中斷請(qǐng)求優(yōu)先響應(yīng)。
②中斷嵌套:中斷優(yōu)先級(jí)高的中斷請(qǐng)求可以中斷CPU正在處理的優(yōu)先級(jí)更低的中斷服務(wù)程序,待完成了中斷優(yōu)先權(quán)高的中斷服務(wù)程序之后,再繼續(xù)執(zhí)行被打斷的優(yōu)先級(jí)低的中斷服務(wù)程序,這就是中斷嵌套。
我們使用的IAP15F2K61S2單片機(jī)的中斷系統(tǒng)有14個(gè)中斷源,2個(gè)優(yōu)先級(jí),可實(shí)現(xiàn)二級(jí)中斷服務(wù)嵌套。由片內(nèi)特殊功能寄存器中的中斷允許寄存器IE、IE2、INT_CLKO控制CPU是否響應(yīng)中斷請(qǐng)求;由中斷優(yōu)先級(jí)寄存器IP、IIP2安排各中斷源的優(yōu)先級(jí);同一優(yōu)先級(jí)內(nèi)2個(gè)以上中斷同時(shí)提出中斷請(qǐng)求時(shí),由內(nèi)部的查詢邏輯確定其響應(yīng)次序。
中斷請(qǐng)求標(biāo)志:AP15F2K61S2單片機(jī)的10個(gè)中斷源的中斷請(qǐng)求標(biāo)志分別寄存在TCON、SCON、PCON、S2CON、ADC_CONTR、SPSTAT、CCON中,其中,外部中斷2(/INT2)、外部中斷3(/INT3)和外部中斷4(/INT4)的中斷請(qǐng)求標(biāo)志位被隱藏起來了,對(duì)用戶是不可見的。當(dāng)相應(yīng)的中斷被響應(yīng)后或(EXn)=0(n=2、3、4),這些中斷請(qǐng)求標(biāo)志位會(huì)自動(dòng)被清0;定時(shí)器T2的中斷請(qǐng)求標(biāo)志位也被隱藏起來了,對(duì)用戶是不可見的,當(dāng)T2的中斷被響應(yīng)后或(ET2)=0,這些中斷請(qǐng)求標(biāo)志位會(huì)自動(dòng)被清0。
IAP15F2K61S2單片機(jī)的中斷請(qǐng)求
中斷允許的控制:計(jì)算機(jī)中斷系統(tǒng)有兩種不同類型的中斷:一類稱為非屏蔽中斷,另一類稱為可屏蔽中斷。IAP15F2K61S2單片機(jī)的14個(gè)中斷源都是可屏蔽中斷,其中斷系統(tǒng)內(nèi)部設(shè)有3個(gè)專用寄存器(IE、IE2、INT_CLKO)用于控制CPU對(duì)各中斷源的開放或屏蔽。
中斷優(yōu)先的控制:IAP15F2K61S2單片機(jī)除外部中斷2(/INT2)、外部中斷3(/INT3)、定時(shí)器T2中斷和外部中斷4(/INT4)為固定最低優(yōu)先級(jí)中斷外,其他中斷都具有2個(gè)中斷優(yōu)先級(jí),可實(shí)現(xiàn)二級(jí)中斷服務(wù)嵌套。IP、IP2為中斷優(yōu)先級(jí)寄存器,鎖存各中斷源優(yōu)先級(jí)控制位。
中斷源自然優(yōu)先級(jí)從高到低排序
中斷源
外部中斷0
定時(shí)器T0
中斷
外部中斷1
定時(shí)器T1中斷
串行口中斷
A/D轉(zhuǎn)換中斷
LVD中斷
PCA中斷
串行口2中斷
SPI中斷
外部中斷2
外部中斷3
定時(shí)器T2中斷
外部中斷4
IAP15F2K61S2單片機(jī)中斷響應(yīng)
中斷響應(yīng):是CPU對(duì)中斷源中斷請(qǐng)求的響應(yīng),包括保護(hù)斷點(diǎn)和將程序轉(zhuǎn)向中斷服務(wù)程序的入口地址(通常稱矢量地址)。CPU并非任何時(shí)刻都響應(yīng)中斷請(qǐng)求,而是在中斷響應(yīng)條件滿足之后才會(huì)響應(yīng)。
中斷服務(wù)與中斷返回:中斷服務(wù)與中斷返回就是通過執(zhí)行中斷服務(wù)程序完成的。中斷服務(wù)程序從中斷入口地址開始執(zhí)行,到返回指令“RETI”為止,一般包括四部分內(nèi)容,其結(jié)構(gòu)是:保護(hù)現(xiàn)場(chǎng),中斷服務(wù),恢復(fù)現(xiàn)場(chǎng)、中斷返回。
保護(hù)現(xiàn)場(chǎng):用入棧操作指令將需保護(hù)寄存器的內(nèi)容壓入堆棧。
中斷服務(wù):中斷服務(wù)程序的核心部分,是中斷源中斷請(qǐng)求之所在。
恢復(fù)現(xiàn)場(chǎng):在中斷服務(wù)結(jié)束之后,中斷返回之前,用出棧操作指令將保護(hù)現(xiàn)場(chǎng)中壓入堆棧的內(nèi)容彈回到相應(yīng)的寄存器中,注意彈出順序必須與壓入順序相反。
中斷返回:中斷返回是指中斷服務(wù)完成后,計(jì)算機(jī)返回原來斷開的位置(即斷點(diǎn)),繼續(xù)執(zhí)行原來的程序。中斷返回由中斷返回指令RETI來實(shí)現(xiàn)。
5、定時(shí)器/計(jì)數(shù)器(Timer0/1)
定時(shí)器(Timer0/1)
首先我們需要知道定時(shí)器Timer需要使用的寄存器有哪些:
我們先來簡(jiǎn)單的說一下TMOD、 TCON兩個(gè)寄存器的功能和區(qū)別:
1)TMOD:就是運(yùn)行模式配置寄存器,也就是配置定時(shí)器是工作在定時(shí)器狀態(tài)還是計(jì)數(shù)器狀態(tài),以及定時(shí)器的工作模式是13位定時(shí)器,16位定時(shí)器,雙8位定時(shí)器自動(dòng)重裝,還是雙8位定時(shí)器等等。
2)TCON:就是定時(shí)/計(jì)數(shù)器的控制寄存器,包括控制定時(shí)器的的啟動(dòng)與停止,是否允許外部的中斷請(qǐng)求判斷定時(shí)器是否已經(jīng)溢出等等。
簡(jiǎn)而言之,一句話2個(gè)寄存器 一個(gè)是配置模式功能 一個(gè)是控制功能,具體的運(yùn)用理解還需要大家多看多用。
定時(shí)器/計(jì)數(shù)器0/1控制寄存器TCON
TCON為定時(shí)器/計(jì)數(shù)器T0、T1的控制寄存器,同時(shí)也鎖存T0、T1溢出中斷源和外部請(qǐng)求中斷源等,TCON格式如下:
TCON為定時(shí)器/計(jì)數(shù)器中斷控制寄存器(可位尋址)
各寄存器功能
定時(shí)器/計(jì)數(shù)器0/1工作模式寄存器TMOD
定時(shí)和計(jì)數(shù)功能由特殊功能寄存器TMOD的控制位C/T進(jìn)行選擇,TMOD寄存器的各位信息。
可以看出,2個(gè)定時(shí)/計(jì)數(shù)器有4鐘操作模式,通過TMOD的M1和M0選擇。2個(gè)定時(shí)/計(jì)數(shù)器模式0、1和2都相同,模式3不同,各模式下的功能請(qǐng)參見datasheet P593。
定時(shí)器0/1的中斷控制寄存器:IE和IP
IE:中斷允許寄存器(可位尋址)
EA:CPU的總中斷允許控制位,EA = 1,CPU開放中斷,EA = 0,CPU屏蔽所有的中斷申請(qǐng)。
ET1:定時(shí)/計(jì)數(shù)器T1的溢出中斷允許位,ET1 = 1,允許T1中斷,ET1 = 0禁止T1中斷。
ET0:同上。
IP:中斷優(yōu)先級(jí)控制寄存器(可位尋址)
PT1: 定時(shí)器1中斷優(yōu)先級(jí)控制位。
當(dāng)PT1 = 0時(shí),定時(shí)器1中斷為最低優(yōu)先級(jí)中斷(優(yōu)先級(jí)0)
當(dāng)PT1 = 1時(shí),定時(shí)器1中斷為最高優(yōu)先級(jí)中斷(優(yōu)先級(jí)1)
PT0: 定時(shí)器1中斷優(yōu)先級(jí)控制位。
當(dāng)PT0 = 0時(shí),定時(shí)器0中斷為最低優(yōu)先級(jí)中斷(優(yōu)先級(jí)0)
當(dāng)PT0 = 1時(shí),定時(shí)器0中斷為最高優(yōu)先級(jí)中斷(優(yōu)先級(jí)1)
注意事項(xiàng)
輔助寄存器AUXR
普通8051單片機(jī)是12T的機(jī)器周期,STC15的是1T的這個(gè)輔助寄存器的功能就是用來選擇STC15工作在1T還是12T的模式下。
定時(shí)器/計(jì)數(shù)器0工作模式
通過對(duì)寄存器TMOD中的M1(TMOD.1)、(TMOD.0)的設(shè)置,定時(shí)器/計(jì)數(shù)器0有4種不同的工作模式。
模式0(16位自動(dòng)重裝載模式)(只介紹該模式,其余三種模式見datasheet)
定時(shí)器/計(jì)數(shù)器0工作模式0(16位自動(dòng)重裝載模式)
M1和M0:方式選擇控制位
C/ T:功能選擇位。
1:計(jì)數(shù)器功能(對(duì)T0或T1引腳的負(fù)跳變進(jìn)行計(jì)數(shù))。
0:定時(shí)器功能(對(duì)時(shí)鐘周期進(jìn)行計(jì)數(shù))。
GATE:門控位。GATE用于選通控制。
1:INTX為高電平且TRX置位時(shí),啟動(dòng)定時(shí)器工作。
0:每當(dāng)TRX置位時(shí),就啟動(dòng)定時(shí)器工作。
注意:TMOD寄存器不能進(jìn)行位尋址,設(shè)置時(shí)只 能對(duì)整個(gè)寄存器賦值。
IAP15F2K61S2的定時(shí)器有兩種計(jì)數(shù)速率:一種是12T模式,每12個(gè)時(shí)鐘加1;另一種是1T模式,每個(gè)時(shí)鐘加1。
T0和T1的速率分別由特殊功能寄存器AUXR中的T0x12和T1x12決定。
T0x12=0,T0工作在12T模式;
T0x12=1,T0工作在1T模式。
T1x12=0,T1工作在12T模式;
T1x12=1,T1則工作在1T模式。
定時(shí)器0和定時(shí)器1分別有2個(gè)隱藏的寄存器RL_THx和RL_TLx。RL_THx與THx共有同一個(gè)地址,RL_TLx與TLx共有同一個(gè)地址。當(dāng)TRx=0即定時(shí)器/計(jì)數(shù)器被禁止工作時(shí),對(duì)TLx、THx寫入的內(nèi)容會(huì)同時(shí)寫入RL_TLx、RL_THx。 當(dāng)TRx=1即定時(shí)器/計(jì)數(shù)器工作時(shí),對(duì)TLx 、THx寫入的內(nèi)容不會(huì)寫入RL_TLx 、RL_THx。
當(dāng)定時(shí)器工作在模式0時(shí),[TLx,THx]的溢出 不僅置位TFx,而且會(huì)自動(dòng)將[RL_TLx,RL_THx] 的內(nèi)容重新裝入[TLx,THx]。
當(dāng)T0CLKO=1時(shí),T1/P3.5引腳配置為定時(shí)器0的時(shí)鐘輸出CLKOUT0。
當(dāng)T1CLKO=1時(shí),T0/P3.4引腳配置為定時(shí)器1的時(shí)鐘輸出CLKOUT1。
詳細(xì)介紹
定時(shí)器的最大定時(shí)能力
當(dāng)工作于定時(shí)狀態(tài)時(shí),定時(shí)/計(jì)數(shù)器是對(duì)時(shí)鐘周期進(jìn)行計(jì)數(shù),若對(duì)時(shí)鐘進(jìn)行12分頻,則對(duì)每12個(gè)時(shí)鐘周期計(jì)數(shù)一次。
當(dāng)晶振頻率為6MHz,采用12分頻時(shí),計(jì)數(shù)的單位時(shí)間為:
單位時(shí)間為:
定時(shí)時(shí)間為: TC=XTu。
其中,Tu為單位時(shí)間,TC為定時(shí)時(shí)間,X為所需計(jì)數(shù)次數(shù)。
STC15F2K60S2單片機(jī)的定時(shí)/計(jì)數(shù)器是加1計(jì)數(shù)器。因此,不能直接將實(shí)際的計(jì)數(shù)值作為計(jì)數(shù)初值送入計(jì)數(shù)寄存器THX、TLX中,而必須將實(shí)際計(jì)數(shù)值以28、216為模求補(bǔ),以補(bǔ)碼作為計(jì)數(shù)初值設(shè)置THX和TLX。
即應(yīng)裝入計(jì)數(shù)/定時(shí)器的初值為:,其中,n=8或16。
例如:已知Tu=2μs,要求定時(shí)TC=1ms,則
對(duì)方式0和方式1,時(shí)間常數(shù)為:216-500=65036=FE0CH (THX裝入FEH,TLX裝入0CH)。
設(shè)系統(tǒng)時(shí)鐘頻率為6MHz,12分頻時(shí),
8位定時(shí)器的最大定時(shí)能力為:T=(28 -0)×2μs=512μs
16位定時(shí)器的最大定時(shí)能力為:T=(216 -0)×2μs=131072μs=131.072ms
最后補(bǔ)充一下,初學(xué)階段對(duì)定時(shí)器的使用可以直接使用我第一章中所講的方法直接自動(dòng)生成所需定時(shí)器,用以程序使用,但是還是希望大家理解最重要。
以上是定時(shí)器的原理,接下來我們簡(jiǎn)單運(yùn)用定時(shí)器來寫個(gè)控制LED量滅的程序:
6、靜態(tài)數(shù)碼管和動(dòng)態(tài)數(shù)碼管
共陰/共陽(yáng)數(shù)碼管
使用的是兩個(gè)4位八段共陽(yáng)數(shù)碼管。
八段數(shù)碼管:八個(gè)發(fā)光二極管組成的如上圖的結(jié)構(gòu)形態(tài),
共陰數(shù)碼管:八個(gè)LED陰極相連組成公共端接GND,
共陽(yáng)數(shù)碼管:八個(gè)LED陽(yáng)極相連組成公共端接VCC。
4位八段數(shù)碼驅(qū)動(dòng)原理:其中八個(gè)管腳作為(A,B,C,D,E,F,G,DP)的驅(qū)動(dòng)端口,選擇哪一段數(shù)碼管亮或不亮,我們稱之為數(shù)碼管段選,還有4個(gè)管腳作為選擇四位數(shù)碼管中的哪一位亮或不亮的驅(qū)動(dòng)端口,也就是四個(gè)公共端,我們稱之為數(shù)碼管位選。
驅(qū)動(dòng)原理
圖中a1、b1……dp1就是數(shù)碼管的段選端口,com1、com2……com8就是數(shù)碼管的位選端口,我們可以看到,藍(lán)橋杯開發(fā)板的數(shù)碼管段選和位選都是通過單片機(jī)的P0寄存器來驅(qū)動(dòng)的,但是因?yàn)镻0不能同一時(shí)刻既做段選又做位選,所以這里就要在一個(gè)很短的時(shí)間內(nèi)在段選和位選之間切換選擇操作。
靜態(tài)數(shù)碼管數(shù)碼管所有公共端接GND或VCC,在該開發(fā)板上不是接GND和VCC而是接在兩個(gè)573三態(tài)鎖存器上,全亮全滅不單獨(dú)選擇端口操作。優(yōu)點(diǎn):不閃爍,亮度高。缺點(diǎn):占用端口多。
示例程序:
動(dòng)態(tài)數(shù)碼管
數(shù)碼管公共端依次掃描接通。優(yōu)點(diǎn):占用端口少。缺點(diǎn):攝像,拍照時(shí)閃爍,在同樣電壓下與靜態(tài)相比,亮度較低。示例程序:
定時(shí)器中斷實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘程序
使用單片機(jī)定時(shí)器制作一個(gè)以00-00-00模式顯示,可以通過四個(gè)獨(dú)立按鍵進(jìn)行時(shí)間修改的24小時(shí)制時(shí)鐘。
定時(shí)器、中斷、數(shù)碼管、按鍵等功能
習(xí)題:使用單片機(jī)定時(shí)器制作一個(gè)以00-00-00為初始可以通過四個(gè)獨(dú)立按鍵進(jìn)行時(shí)間修改的24小時(shí)制時(shí)鐘。
總結(jié)
以上是生活随笔為你收集整理的蓝桥杯单片机基础学习00_2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓现代战争3免验证安卓包(安卓现代战争
- 下一篇: 通信原理速识1:绪论