8051中斷結構
在本節中,我們將瞭解Intel 8051微控制器的中斷結構。
中斷基本上是暫時掛起主程式、將控制權傳遞給外部源並執行其任務的事件。然後,它將控制權傳遞迴主程式中斷處。
8051有五個中斷。這些中斷是INT0,INT1,TO,T1,TI/RI。所有中斷都可以使用IE(中斷允許)暫存器啟用或停用。
這些中斷的中斷地址如下所示:
中斷 | 地址 |
---|---|
INT0 | 0003H |
INT1 | 000BH |
T0 | 0013H |
T1 | 001BH |
TI/RI | 0023H |
中斷允許(IE)暫存器
此暫存器可用於以程式設計方式啟用或停用中斷。此暫存器是特殊功能暫存器(SFR)。地址為A8H。此位元組是按位定址的。因此,使用者可以對其進行程式設計。此暫存器中的位具有不同的含義。暫存器結構如下所示:
位地址 | AF | AE | AD | AC | AB | AA | A9 | A8 |
---|---|---|---|---|---|---|---|---|
位詳細資訊 | EA | X | X | ES | ET1 | EX1 | ET0 | EX0 |
現在,讓我們看看位詳細資訊以及值低(0)和高(1)時的不同操作。
位詳細資訊 | 高值(1) | 低值(0) |
---|---|---|
EA | 最低有效5位可以決定這五個中斷的啟用或停用。 | 停用所有五個中斷。它只是忽略其餘五個位。 |
ES | 啟用序列埠中斷 | 停用序列埠中斷 |
ET1 | 啟用定時器1中斷 | 停用定時器1中斷 |
EX1 | 啟用外部中斷1 (INT1) | 停用外部中斷1 (INT1) |
ET0 | 啟用定時器0中斷 | 停用定時器0中斷 |
EX0 | 啟用外部中斷0 (INT0) | 停用外部中斷0 (INT0) |
中斷優先順序(IP)暫存器
所有這五個中斷都可以處於一到兩個中斷級別。優先順序為1級和0級。1級表示較高優先順序,0級表示較低優先順序。此IP暫存器可用於儲存每個中斷的優先順序。這也是一個按位定址的SFR。其地址為B8H。
位地址 | BF | BE | BD | BC | BB | BA | B9 | B8 |
---|---|---|---|---|---|---|---|---|
位詳細資訊 | X | X | X | PS | PT1 | PX1 | PT0 | PX0 |
現在,讓我們看看位詳細資訊以及值低(0)和高(1)時的不同操作。
位詳細資訊 | 高值(1) | 低值(0) |
---|---|---|
PS | 設定序列埠中斷的1級優先順序 | 設定序列埠中斷的0級優先順序 |
PT1 | 設定定時器1中斷的1級優先順序 | 設定定時器1中斷的0級優先順序 |
PX1 | 設定外部中斷1 (INT1) 的1級優先順序 | 設定外部中斷1 (INT1) 的0級優先順序 |
PT0 | 設定定時器0中斷的1級優先順序 | 設定定時器0中斷的0級優先順序 |
PX0 | 設定外部中斷0 (INT0) 的1級優先順序 | 設定外部中斷0 (INT0) 的0級優先順序 |
當所有五個中斷都處於相同的優先順序級別,並且如果所有中斷都被啟用,則中斷順序將為INT0,T0,INT1,T1,TI/RI。
某些特定的優先順序暫存器值可用於維護中斷的優先順序。假設優先順序暫存器的值為xxx00101,則表示順序為INT0,INT1,TI/RI,T1,T0。但並非所有順序都是可行的。INT0,INT1,TI/RI,T1,T0是無效的。
外部中斷
8051的外部中斷是INT0和INT1。這些中斷可以程式設計為邊沿觸發或電平觸發。TCON暫存器可用於將外部中斷程式設計為邊沿觸發或電平觸發。TCON是定時器控制暫存器。TCON是另一個按位定址的SFR。這裡的地址是88H。
位地址 | 8F | 8E | 8D | 8C | 8B | 8A | 89 | 88 |
---|---|---|---|---|---|---|---|---|
位詳細資訊 | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
現在,讓我們看看位詳細資訊以及值低(0)和高(1)時的不同操作。
位詳細資訊 | 高值(1) | 低值(0) |
---|---|---|
IT0 | 將(INT0)設定為負邊沿觸發輸入。 | 將(INT0)設定為低電平觸發輸入。 |
IT1 | 將(INT1)設定為負邊沿觸發輸入。 | 將(INT1)設定為低電平觸發輸入。 |
IE0 | 當INT0被啟用為電平觸發時,這將為1。 | 當INT0被啟用為邊沿觸發時,這將為0。 |
IE1 | 當INT1被啟用為電平觸發時,這將為1。 | 當INT1被啟用為邊沿觸發時,這將為0。 |
TR0 | 將定時器0設定為執行模式 | 將定時器0設定為停止模式。 |
TR1 | 將定時器1設定為執行模式 | 將定時器1設定為停止模式。 |
TF0 | 定時器T0溢位時為高。 | 重置定時器T0後,這也將變為0狀態 |
TF1 | 定時器T1溢位時為高。 | 重置定時器T1後,這也將變為0狀態。 |
IT0和IT1代表中斷型別。這些位用於決定INT0和INT1是電平觸發還是邊沿觸發。
IE0和IE1位用於指示外部中斷的狀態。這些位可以由微控制器本身設定或重置。
前四位是關於定時器的狀態資訊。當TR0和TR1為1時,表示定時器的執行模式。這些位提供對定時器執行的軟體控制。定時器也可以由硬體控制。硬體模式的優先順序高於軟體模式。
TF0和TF1分別用於指示定時器T0和T1的溢位。發生溢位時,這些標誌設定為1。當中斷由某個中斷服務子程式(ISS)處理時,這些標誌將為0。
序列埠中斷
序列埠既可以用作傳送模式,也可以用作接收模式。傳送的中斷狀態由TI提供,接收的中斷狀態由RI提供。它們是SCON(序列控制)的兩位。這也是一個按位定址的SFR。地址為98H
位地址 | 9F | 9E | 9D | 9C | 9B | 9A | 99 | 98 |
---|---|---|---|---|---|---|---|---|
位詳細資訊 | SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
這些位的意義如下:
位詳細資訊 | 描述 |
---|---|
SM0 | 這是序列埠模式0移位暫存器 |
SM1 | 這是序列埠模式1(8位UAR+可變) |
SM2 | 在模式2或3中啟用多處理器通訊 |
REN | 由軟體設定或重置以啟用或停用接收 |
TB8 | 它指示在模式2或3中將要傳送的第9位。它可以由軟體設定或重置 |
RB8 | 在模式2或3中,第9位在模式1中接收。 |
TI | 傳送中斷標誌。它可以由硬體設定。 |
RI | 接收中斷標誌。它可以由硬體設定,但必須由軟體復位。 |
8051的中斷控制系統如下所示: