MCS-51與中斷有關(guān)的寄存器、中斷入口地址及編號(hào)
1、中斷入口地址及編號(hào)
MCS-51在每一個(gè)機(jī)器周期順序檢查每一個(gè)中斷源,在機(jī)器周期的S6按優(yōu)先級(jí)處理所有被激活的中斷請(qǐng)求,此時(shí),如果CPU沒(méi)有正在處理更高或相同優(yōu)先級(jí)的中斷,或者現(xiàn)在的機(jī)器周期不是所執(zhí)行指令的最后一個(gè)機(jī)器周期,或者CPU不是正在執(zhí)行RETI指令或訪問(wèn)IE和IP的指令(因?yàn)榘碝CS-51中斷系統(tǒng)的特性規(guī)定,在執(zhí)行完這些指令之后,還要在繼續(xù)執(zhí)行一條指令,才會(huì)響應(yīng)中斷),CPU在下一個(gè)機(jī)器周期響應(yīng)激活了的最高級(jí)中斷請(qǐng)求。
中斷響應(yīng)的主要內(nèi)容就是由硬件自動(dòng)生成一條長(zhǎng)調(diào)用LCALL addr16指令,這里的addr16就是程序存儲(chǔ)器中相應(yīng)的中斷區(qū)入口地址,這些中斷源的服務(wù)程序入口地址如下:
表1 5個(gè)中斷源的服務(wù)程序入口地址 | ||||||||||
中斷源 | 入口地址 | 中斷號(hào) |
|
|
|
|
|
|
|
|
外中斷0 | 0003H | 0 |
|
|
|
|
|
|
|
|
定時(shí)/計(jì)數(shù)器0 | 000BH | 1 |
|
|
|
|
|
|
|
|
外中斷1 | 0013H | 2 |
|
|
|
|
|
|
|
|
定時(shí)/計(jì)數(shù)器1 | 001BH | 3 |
|
|
|
|
|
|
|
|
串行口中斷 | 0023H | 4 |
|
|
|
|
|
|
|
|
定時(shí)/計(jì)數(shù)器T2 | 002BH | 5 |
|
|
|
|
|
|
|
|
|
生成LCALL指令后,CPU緊跟著便執(zhí)行之.首先將PC(程序計(jì)數(shù)器)的內(nèi)容壓入堆棧保護(hù)斷點(diǎn),然后把中斷入口地址賦予PC,CPU便按新的PC地址(即中斷服務(wù)程序入口地址)執(zhí)行程序。
值得一提的是,各中斷區(qū)只有8個(gè)單元,一般情況下(除非中斷程序非常簡(jiǎn)單),都不可能安裝下一個(gè)完整的中斷服務(wù)程序。因此,通常是在這些入口地址區(qū)放置一條無(wú)條件轉(zhuǎn)移指令,使程序按轉(zhuǎn)移的實(shí)際地址去執(zhí)行真正的中斷服務(wù)程序。
對(duì)于匯編,中斷函數(shù)的一般形式為:
1. ORG 中斷入口地址
2.
3. AJMP 中斷服務(wù)程序地址
4.
5. 中斷服務(wù)程序地址:
6.
7. ......
對(duì)于C語(yǔ)言,中斷函數(shù)的一般形式為:
1. void FunctionName(void) interrupt 中斷號(hào) //其中“中斷號(hào)”可查表1
2.
3. {
4.
5. .........
6.
7. }
2、與中斷有關(guān)的寄存器
(1) 定時(shí)器控制寄存器TCON
表2 TCON寄存器結(jié)構(gòu) | ||||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
|
TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
|
|
IE1:外部邊沿觸發(fā)中斷1請(qǐng)求標(biāo)志,其功能和操作類似于TF0。
IT1:外部中斷1類型控制位,通過(guò)軟件設(shè)置或清除,用于控制外中斷的觸發(fā)信號(hào)類型。IT1=1,邊沿觸發(fā)。IT=0是電平觸發(fā)。
IE0:外部邊沿觸發(fā)中斷0請(qǐng)求標(biāo)志,其功能和操作類似于IE1。
IT0:外部中斷0類型控制位,通過(guò)軟件設(shè)置或清除,用于控制外中斷的觸發(fā)信號(hào)類型。其功能和操作類似于IE1。
(2) 中斷允許寄存器IE
|
表3 IE寄存器結(jié)構(gòu) | ||||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
|
EA | - | - | ES | ET1 | EX1 | ET0 | EX0 |
|
|
EA:中斷總控制位,EA=1,CPU開(kāi)放中斷。EA=0,CPU禁止所有中斷。
ES:串行口中斷控制位,ES=1允許串行口中斷,ES=0,屏蔽串行口中斷。
ET1:定時(shí)/計(jì)數(shù)器T1中斷控制位。ET1=1,允許T1中斷,ET1=0,禁止T1中斷。
EX1:外中斷1中斷控制位,EX1=1,允許外中斷1中斷,EX1=0,禁止外中斷1中斷。
ET0:定時(shí)/計(jì)數(shù)器T0中斷控制位。ET1=1,允許T0中斷,ET1=0,禁止T0中斷。
EX0:外中斷0中斷控制位,EX1=1,允許外中斷0中斷,EX1=0,禁止外中斷0中斷。
(3) 中斷優(yōu)選級(jí)控制寄存器IP
|
表4 IP中斷優(yōu)先級(jí)控制寄存器結(jié)構(gòu) | ||||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
|
- | - | - | PS | PT1 | Px1 | PT0 | PX0 |
|
|
PS:串行口中斷口優(yōu)先級(jí)控制位,PS=1,串行口中斷聲明為高優(yōu)先級(jí)中斷,PS=0,串行口定義為低優(yōu)先級(jí)中斷。
PT1:定時(shí)器1優(yōu)先級(jí)控制位。PT1=1,聲明定時(shí)器1為高優(yōu)先級(jí)中斷,PT1=0定義定時(shí)器1為低優(yōu)先級(jí)中斷。
PX1:外中斷1優(yōu)先級(jí)控制位。PT1=1,聲明外中斷1為高優(yōu)先級(jí)中斷,PX1=0定義外中斷1為低優(yōu)先級(jí)中斷。
PT0:定時(shí)器0優(yōu)先級(jí)控制位。PT1=1,聲明定時(shí)器0為高優(yōu)先級(jí)中斷,PT1=0定義定時(shí)器0為低優(yōu)先級(jí)中斷。
PX0:外中斷0優(yōu)先級(jí)控制位。PT1=1,聲明外中斷0為高優(yōu)先級(jí)中斷,PX1=0定義外中斷0為低優(yōu)先級(jí)中斷。
(4)串行通信控制寄存器SCON
它是一個(gè)可尋址的專用寄存器,用于串行數(shù)據(jù)的通信控制,單元地址是98H,其結(jié)構(gòu)格式如下:
|
表5串行通信控制寄存器SCON | ||||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
|
SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
|
TI:發(fā)送中斷標(biāo)志位。
方式0時(shí),發(fā)送完第8位數(shù)據(jù)后,由硬件置位,其它方式下,在發(fā)送或停止位之前由硬件置位,因此,TI=1表示幀發(fā)送結(jié)束,TI可由軟件清“0”。
RI:接收中斷標(biāo)志位。
接收完第8位數(shù)據(jù)后,該位由硬件置位,在其他工作方式下,該位由硬件置位,RI=1表示幀接收完成。
(5)T2狀態(tài)控制寄存器T2CON
表6 T2定時(shí)器控制寄存器T2CON | |||||||
B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
TF2 | EXF2 | RCLK | TCLK | EXEN2 | TR2 | C/T2 | CP/RL2 |
TF2:T2溢出中斷標(biāo)志。TF2必須由用戶程序清“0”。當(dāng)T2作為串口波特率發(fā)生器時(shí),TF2不會(huì)被置“1”。
EXF2:定時(shí)器T2外部中斷標(biāo)志。EXEN2為1時(shí),當(dāng)T2EX(P1.1)發(fā)生負(fù)跳變時(shí)置1中斷標(biāo)志DXF2,EXF2必須由用戶程序清“0”。
EXEN2:T2的外部中斷充許標(biāo)志
編輯:admin 最后修改時(shí)間:2018-05-18