at89s52單片機(jī)的中斷系統(tǒng)共有8個中斷源,6個中斷矢量,兩級中斷優(yōu)先級,可實(shí)現(xiàn)兩級中斷服務(wù)程序嵌套,通過軟件來屏蔽或允許相應(yīng)的中斷請求。每一個中斷源可以編程為高優(yōu)先級中斷或低優(yōu)先級中斷,允許或禁止向cpu申請中斷。中斷系統(tǒng)的特殊功寄存器有中斷允許寄存器ie、中斷優(yōu)先級寄存器ip等。
圖1為at89s52單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)示意圖。at89s52有兩個外部中斷源int0、int1;串口通信有接收和發(fā)送兩個中斷源,經(jīng)過一個或門,公用同一個中斷矢量;定時器/計數(shù)器0、定時器/計數(shù)器1的溢出中斷源對應(yīng)兩個中斷矢量;定時/計數(shù)器2有計數(shù)溢出和捕獲兩種中斷源,經(jīng)或門共用一個中斷矢量。
圖1 中斷系統(tǒng)結(jié)構(gòu)示意圖
(1) 來自p3.2引腳上的外部中斷請求(外部中斷0),低電平或下降沿(從高到低)有效,通過設(shè)置it0的值可將外部中斷0設(shè)置為低電平觸發(fā)或下降沿觸發(fā),it0=0時,為電平觸發(fā)方式,當(dāng)引腳上出現(xiàn)低電平時就向cpu申請中斷;it0=1時,為跳變觸發(fā)方式,當(dāng)引腳上出現(xiàn)負(fù)跳變時,置位tcon.1的ie0中斷請求標(biāo)志位,向cpu申請中斷。cpu在每個機(jī)器周期的s5p2狀態(tài)采樣ie0標(biāo)志位,當(dāng)條件滿足,則響應(yīng)中斷請求。
(2) 來自p3.3引腳上的外部中斷請求(外部中斷1),低電平或下降沿有效。其功能與操作同。
(3) t0 片內(nèi)定時器/計數(shù)器0溢出(tf0)中斷請求。定時/計數(shù)器0無論內(nèi)部定時或?qū)ν獠渴录0計數(shù),當(dāng)計數(shù)器(th0、tl0)計數(shù)溢出,置位tcon.5的tf0中斷請求標(biāo)志位。cpu在每個機(jī)器周期的s5p2狀態(tài)時采樣tf0標(biāo)志位,當(dāng)條件滿足時cpu響應(yīng)中斷請求,轉(zhuǎn)向?qū)?yīng)的中斷矢量,執(zhí)行該中斷服務(wù)程序,并由硬件自動將tf0標(biāo)志位清0。
(4) t1片內(nèi)定時器/計數(shù)器1溢出(tf1)中斷請求。其功能和操作類似定時/計數(shù)器0。其中斷請求標(biāo)志位為tcon.7的tf1。
(5) t2片內(nèi)定時器/計數(shù)器2溢出中斷請求。定時器2可以被寄存器t2con中的tf2和exf2的或邏輯觸發(fā)。程序進(jìn)入中斷服務(wù)后,這些標(biāo)志位都可以由硬件清0。定時器2有兩種不同的工作方式。
定時/計數(shù)器方式。當(dāng)定時/計數(shù)器方式的計數(shù)器(th2、tl2)計數(shù)滿后溢出,置位中斷請求標(biāo)志位(t2con.7)tf2,向cpu請求中斷處理。
“捕獲”方式。當(dāng)外部輸入端口t2ex發(fā)生從1→0下降沿時,亦將置位t2con.6的中斷請求標(biāo)志位exf2,向cpu請求中斷處理。
(6) 串行口中斷。片內(nèi)串行口完成一幀發(fā)送或接收,置位中斷請求源ti或ri。當(dāng)完成一串行幀的接收/發(fā)送時分別置位串行通信控制寄存器scon中的ri/ti中斷請求標(biāo)志位,當(dāng)條件滿足時cpu響應(yīng)中斷請求。
每一個中斷源都對應(yīng)有一個中斷請求標(biāo)志位,它們設(shè)置在定時/計數(shù)器控制寄存器tcon、定時/計數(shù)器2控制寄存器t2con和串行通信控制寄存器scon的相應(yīng)位來鎖存。另外還有中斷控制寄存器ie和中斷優(yōu)先級控制寄存器ip,ie用于確定各中斷是允許還是禁止,ip用于定義各中斷源的中斷優(yōu)先級,用戶通過設(shè)置其狀態(tài)來管理中斷系統(tǒng)。