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