版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
某公司單片機技術(shù)及項目管理知識應(yīng)用課件1項目5
中斷系統(tǒng)控制及應(yīng)用知識與能力目標熟悉單片機中斷系統(tǒng)的結(jié)構(gòu)與功能1掌握中斷系統(tǒng)的編程與控制方法2理解并掌握數(shù)碼管顯示接口電路及其程序?qū)崿F(xiàn)方法3初步學(xué)會中斷控制應(yīng)用程序的分析與設(shè)計4理解中斷嵌套的工作過程,初步學(xué)會中斷嵌套的控制應(yīng)用5熟練使用KeiluVsion3與Proteus軟件6項目5中斷系統(tǒng)控制及應(yīng)用知識與能力目標熟悉單片機中斷系2項目5中斷系統(tǒng)控制及應(yīng)用5.3.1控制要求與功能展示任務(wù)5.1中斷系統(tǒng)分析與控制5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析5.1.2外部中斷編程與控制5.2.2硬件系統(tǒng)與控制流程分析5.2.1控制要求與功能展示5.2.3匯編語言程序分析與設(shè)計5.2.4C語言程序分析與設(shè)計5.2.5基于Proteus的調(diào)試與仿真2任務(wù)5.2簡易水情報警器控制5.3.2硬件系統(tǒng)與控制流程分析5.3.3匯編語言程序分析與設(shè)計5.3.4C語言程序分析與設(shè)計5.3.5基于Proteus的調(diào)試與仿真2任務(wù)5.3簡易地震報警器控制項目5中斷系統(tǒng)控制及應(yīng)用5.3.1控制要求與功能展示任35.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析當CPU在執(zhí)行程序時,由單片機內(nèi)部或外部的原因引起的隨機事件要求CPU暫時停止正在執(zhí)行的程序,而轉(zhuǎn)向執(zhí)行一個用于處理該隨機事件的程序,處理完后又返回被中止的程序斷點處繼續(xù)執(zhí)行,這一過程就稱為中斷。1、中斷系統(tǒng)的概念5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析當CPU在執(zhí)行程序45.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析2、中斷系統(tǒng)的內(nèi)部結(jié)構(gòu)組成5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析2、中斷系統(tǒng)的內(nèi)部結(jié)構(gòu)組55.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析中斷系統(tǒng)有5個中斷請求源和4個用于中斷控制的寄存器定時控制寄存器(TCON)、串行控制寄存器(SCON)、中斷控制寄存器(IE)和中斷優(yōu)先級控制寄存器(IP)來控制中斷的類型、中斷的開關(guān)和各種中斷源的優(yōu)先級。
5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析中斷系統(tǒng)有5個中斷65.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析
231外部中斷請求源:
INT0(P3.2)和INT1(P3.3)定時/計數(shù)器中斷請求源:內(nèi)部2個16位定時/計數(shù)器T0、T1串行口中斷源:
內(nèi)部有一個全雙工的串行接口中斷源(5個)5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析231外部中斷請75.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析
51單片機為每個中斷源都設(shè)置了中斷標志位。檢測到中斷請求信號后,先將相應(yīng)的中斷標志位置位,以便在后續(xù)的機器周期里進行下一步的控制和處理。中斷標志位集中鎖存在專用的寄存器TCON和SCON中。
(2)中斷標志
5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析51單片機為每個8◆定時控制寄存器TCON中的中斷標志位5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析表5-1TCON寄存器的結(jié)構(gòu)TCON(88H)D7D6D5D4D3D2D1D0位名稱TF1TR1TF0TR0IE1IT1IE0IT0位含義T1的溢出中斷標志位T1的啟動停止控制位T0的溢出中斷標志位T0的啟動停止控制位INT1中斷請求標志位INT1觸發(fā)方式控制位INT0中斷請求標志位INT0觸發(fā)方式控制位位地址8FH8EH8DH8CH8BH8AH89H88HTCON寄存器:存放INT0、INT1、T0和T1中斷請求標志,也是定時/計數(shù)器0和1的控制寄存器◆定時控制寄存器TCON中的中斷標志位5.1.1中斷系9為INT0中斷請求標志位。當INT0有請求信號時,該位就會由硬件自動置1,在CPU響應(yīng)中斷后,才由硬件自動將IE0清零。5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析IE0(TCON.1)IE1(TCON.3)IT0(TCON.0)IT1(TCON.2)為INT0觸發(fā)方式控制位。由軟件進行置位和復(fù)位,當IT0=0時,為低電平觸發(fā);當IT0=1時,為負跳變觸發(fā)。為INT1觸發(fā)方式控制位。由軟件進行置位和復(fù)位,當IT1=0時,為低電平觸發(fā);當IT1=1時,為負跳變觸發(fā)。為INT1中斷請求標志位。當INT1有請求信號時,該位就會由硬件自動置1,在CPU響應(yīng)中斷后,才由硬件自動將IE1清零。為INT0中斷請求標志位。當INT0有請求信號105.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析TR0TF0(TCON.5)TF1(TCON.7)TR0(TCON.4)TR1(TCON.6)為定時/計數(shù)器T0的啟動停止控制位。由軟件進行設(shè)定,當TR0=0時,停止T0定時(或計數(shù));當TR0=1時,啟動T0定時(或計數(shù))。為定時器/計數(shù)器T0的溢出中斷標志位。當T0定時(或計數(shù))結(jié)束時,由硬件自動置1,在CPU響應(yīng)中斷后,才由硬件自動將TF0清零。也可以由軟件查詢該標志,并由軟件清零。為定時/計數(shù)器T1的啟動停止控制位。由軟件進行設(shè)定,當TR1=0時,停止T0定時(或計數(shù));當TR1=1時,啟動T1定時(或計數(shù))。為定時/計數(shù)器T1的溢出中斷標志位,當T1定時(或計數(shù))結(jié)束時,由硬件自動置1,在CPU響應(yīng)中斷后,才由硬件自動將TF1清零。也可以由軟件查詢該標志,并由軟件清零。5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析TR0TF0TF1TR0115.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析表5-2SCON寄存器的結(jié)構(gòu)SCON(98H)D7D6S5D4D3D2D1D0位名稱SM0SM1SM2RENTB8RB8TIRI位含義關(guān)于串口項目7中講解串行發(fā)送結(jié)束中斷標志位串行接收結(jié)束中斷標志位位地址99H98H串行收發(fā)結(jié)束的中斷標志位被鎖存在串行控制寄存器SCON中
◆串行控制寄存器SCON中的中斷標志位5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析表5-2SCON寄存12◆串行控制寄存器SCON中的中斷標志位
5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析為串行接收結(jié)束中斷標志位。當串行口結(jié)束一次數(shù)據(jù)接收后,由硬件自動置位,但標志必須由軟件進行清零。
為串行發(fā)送結(jié)束中斷標志位。當串行口結(jié)束一次數(shù)據(jù)發(fā)送后,由硬件自動置位,但標志必須由軟件進行清零。
RITI◆串行控制寄存器SCON中的中斷標志位5.1.1中斷系135.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析表5-3IE寄存器的結(jié)構(gòu)IE(0A8)D7D6D5D4D3D2D1D0位名稱EA——ESET1EX1ET0EX0位含義中斷總允許控制位——串行口中斷允許位T1中斷允許位INT1中斷允許位T0中斷允許位INT0中斷允許位位地址0AFH0ACH0ABH0AAH0A9H0A8H中斷允許控制寄存器IE實現(xiàn)開中斷和關(guān)中斷的功能。
(3)中斷控制
5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析表5-3IE寄存器的145.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析
◆EA(IE.7)為所有中斷總允許控制位。EA=0,中斷總禁止;EA=1,中斷總允許?!鬍S(IE.4)為串行口中斷允許位。ES=1,允許串行口中斷;ES=0,禁止串行口中斷?!鬍T1(IE.3)為T1中斷允許位。ET1=1,允許T1中斷;ET1=0,禁止T1中斷?!鬍X1(IE.2)為INT1中斷允許位。EX1=1,允許外部中斷INT1中斷;EX1=0,禁止外部中斷INT1中斷?!鬍T0(IE.1)為T0中斷允許位。ET0=1,允許T0中斷;ET0=0,禁止T0中斷?!鬍X0(IE.0)為INT0中斷允許位。EX0=1,允許INT0中斷;EX0=0,禁止INT0中斷。5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析◆EA(IE.155.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析
IE寄存器在單片機復(fù)位后,各位均被清零,在IE寄存器應(yīng)用時,由軟件對其進行設(shè)定,即可對其進行按位設(shè)置,也可對其進行按字節(jié)設(shè)置。開啟外部中斷0中斷和定時器0中斷,可進行如下設(shè)置:例如:5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析IE寄存器在單片機165.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析匯編語言:C語言:按位設(shè)置:SETBEAEA=1;SETBEX0EX0=1;SETBET0ET0=1;按字節(jié)設(shè)置:MOVIE,#10000011BIE=0x83;5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析匯編語言:175.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析中斷請求處理中斷中斷返回中斷處理中斷響應(yīng)3、中斷響應(yīng)處理過程5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析中斷請求處理中斷中斷返回185.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析195.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析當中斷源要求CPU為它服務(wù)時,必須發(fā)出一個中斷請求信號。同時為保證該中斷得以實現(xiàn),中斷請求標志應(yīng)保持到CPU響應(yīng)該中斷后才能取消,CPU也會不斷的及時查詢這些中斷請求標志,一旦查詢到該中斷的中斷請求標志為置位,就立即響應(yīng)該中斷。(1)中斷請求5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析當中斷源要205.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析(2)中斷響應(yīng)
◆中斷響應(yīng)的條件申請中斷的中斷源的中斷允許位為1,即中斷源可向CPU申請中斷。中斷總允許位EA置位,即CPU允許所有中斷源申請中斷。有中斷源發(fā)出中斷請求。123CPU響應(yīng)中斷的基本條件5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析(2)中斷響應(yīng)◆中斷響215.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析中斷響應(yīng)CPU正在執(zhí)行一個同級或高優(yōu)先級的中斷服務(wù)程序正在執(zhí)行的指令尚未完成正在執(zhí)行中斷返回指令RETI或者對專用寄存器IE、IP進行讀/寫的指令阻斷◆中斷響應(yīng)的條件5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析中斷響應(yīng)CPU正在執(zhí)行一225.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析注意:串行口中斷響應(yīng)后,必須由軟件程序?qū)υ撝袛鄻酥疚磺辶?。撤除該中斷源的中斷請求標志關(guān)閉同級中斷保護斷點地址將相應(yīng)中斷的入口地址送入PC◆中斷響應(yīng)操作5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析注意:串行口中撤除該中斷235.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析注意:每個中斷的8個單元難以存放一個完整的中斷服務(wù)程序,因此用戶在使用時,可在各中斷單元地址存放一條無條件跳轉(zhuǎn)指令(LJMP),跳轉(zhuǎn)到實際的中斷服務(wù)程序執(zhí)行。表5-4各中斷源及中斷程序入口地址表中斷源名稱對應(yīng)引腳中斷入口地址外部中斷0INT0(P3.2)0003H~000AH(入口地址0003H)定時器/計數(shù)器0T0(P3.4)000BH~0012H(入口地址000BH)外部中斷1INT1(P3.3)0013H~001AH(入口地址0013H)定時器/計數(shù)器1T1(P3.5)001BH~0022H(入口地址001BH)串行口中斷串行接收RXD(P3.0)0023H~002AH(入口地址0023H)串行發(fā)送TXD(P3.1)5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析注意:每個中斷的8個單元245.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析中斷服務(wù)
執(zhí)行中斷服務(wù)程序,完成相應(yīng)操作在中斷響應(yīng)時,將斷點處的有關(guān)寄存器的內(nèi)容(如Acc、PSW、DPTR等)壓入堆棧中保護起來,以便中斷返回時恢復(fù)?;謴?fù)現(xiàn)場保護現(xiàn)場(3)中斷處理5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析中斷服務(wù)執(zhí)行中斷服255.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析
在中斷服務(wù)程序最后,必須加一條RETI中斷返回指令,當CPU執(zhí)行到RETI指令時,中斷才能返回。
注意:用戶在編寫中斷服務(wù)程序時要考慮需要保護的現(xiàn)場,在恢復(fù)現(xiàn)場時,要注意壓棧與出棧指令必須成對使用,先入棧的內(nèi)容應(yīng)該后彈出,同時還要及時撤除需用軟件撤除的中斷標志。(4)中斷返回5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析在中斷265.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析外部中斷,顧名思義就是從外部引入進來的中斷。51單片機上有兩個從外部通過P3.2和P3.3兩個引腳引入進來的外部中斷(INT0和INT1)。用戶必須先啟動中斷,外部中斷才能接收中斷信號,CPU才能響應(yīng)中斷。4、兩個外部中斷的使用(1)外部中斷的認識5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析外部中斷,275.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析外部中斷請求觸發(fā)方式電平觸發(fā)方式邊沿脈沖觸發(fā)方式(2)外部中斷的觸發(fā)方式5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析外部中斷請求觸發(fā)方式電平28
①電平觸發(fā)是低電平有效。只要單片機在中斷請求輸入端(INT0和INT1)上采樣到有效的低電平時,就會啟動外部中斷。②必須把有效的電平保持到請求獲得響應(yīng)為止,不然CPU就不能夠響應(yīng)中斷;③中斷服務(wù)程序結(jié)束之前,中斷源又必須撤除其有效的低電平信號,否則中斷返回時,會再次產(chǎn)生中斷。④適合于外部輸入以低電平且中斷服務(wù)程序能清除的外部中斷請求的系統(tǒng)。5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析◆電平觸發(fā)方式①電平觸發(fā)是低電平有效。只要單片機在中斷請求輸入端(IN295.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析邊沿脈沖觸發(fā)是脈沖的下降沿有效123中斷請求信號的高電平狀態(tài)和低電平狀態(tài)都應(yīng)至少維持一個機器周期適合與以負脈沖形式輸入的外部中斷請求◆邊沿脈沖觸發(fā)方式5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析邊沿脈沖觸發(fā)是脈沖的下降305.1.2外部中斷編程與控制
中斷的應(yīng)用就是用程序來實現(xiàn)對中斷功能的控制編制應(yīng)用程序時中斷初始化中斷服務(wù)程序包含5.1.2外部中斷編程與控制中斷的應(yīng)用就是用程315.1.2外部中斷編程與控制
1、中斷初始化設(shè)置堆棧指針SP
定義中斷優(yōu)先級
開放中斷定義外部中斷觸發(fā)方式中斷初始化步驟5.1.2外部中斷編程與控制1、中斷初始化設(shè)置堆棧定義325.1.2外部中斷編程與控制
中斷服務(wù)子程序ACEDB根據(jù)需要保護現(xiàn)場在中斷服務(wù)入口地址設(shè)置一條跳轉(zhuǎn)指令,轉(zhuǎn)到中斷服務(wù)程序的實際入口處中斷返回執(zhí)行中斷服務(wù)要求操作恢復(fù)現(xiàn)場2、中斷服務(wù)程序5.1.2外部中斷編程與控制中斷服務(wù)ACEDB根據(jù)需要335.1.2外部中斷編程與控制
ZHDUAN:CLREA;關(guān)中斷PUSHACC;保護現(xiàn)場(根據(jù)需要由用戶決定)PUSHPSWSETBEA;開中斷(不希望高級中斷進入,;則不用開中斷)…………CLREA;關(guān)中斷POPPSW;恢復(fù)現(xiàn)場POPACCSETBEARETI;中斷返回中斷服務(wù)程序匯編語言一般編寫格式:
5.1.2外部中斷編程與控制ZHDUAN:CLR345.1.2外部中斷編程與控制
voidZHDUAN()interruptx//其中x為中斷號,//不使用using時編譯器將自動{//產(chǎn)生保護和恢復(fù)R0~R7現(xiàn)場EA=0;………………EA=1;}中斷服務(wù)程序C語言一般編寫格式:
5.1.2外部中斷編程與控制voidZHDUAN(355.1.2外部中斷編程與控制
ORG0000H;單片機程序入口地址LJMPMAIN;跳轉(zhuǎn)到主程序入口地址ORG0003H;外部中斷0入口地址LJMPINT_0;跳轉(zhuǎn)至INT_0中斷服務(wù)子程序ORG0013H;外部中斷1入口地址LJMPINT_1;跳轉(zhuǎn)至INT_1中斷服務(wù)子程序ORG0030HMAIN:……;主程序……MOVTCON,#XXH;設(shè)置專用寄存器TCON的狀態(tài)MOVIE,#XXH;設(shè)置專用寄存器IE的狀態(tài)MOVIP,#XXH;設(shè)置專用寄存器IP的狀態(tài)…………INT_0:……;外部中斷0中斷服務(wù)子程序……RETIINT_1:……;外部中斷1中斷服務(wù)子程序……RETI3、外部中斷編程與控制格式(匯編語言)5.1.2外部中斷編程與控制365.1.2外部中斷編程與控制
#include<regx51.h>voidmain(){…………TCON=0XXX;//設(shè)置專用寄存器TCON的狀態(tài)IE=0XXX;//設(shè)置專用寄存器IE的狀態(tài)IP=0XXX;//設(shè)置專用寄存器IP的狀態(tài)…………}voidint_0()interrupt0//外部中斷0中斷服務(wù)子程序{……}voidint_1()interrupt2//外部中斷1中斷服務(wù)子程序{……}3、外部中斷編程與控制格式(C語言)5.1.2外部中斷編程與控制#include<regx37任務(wù)5.2簡易水情報警器控制實物運行視頻單片機數(shù)碼管水位上漲按鍵時鐘電路
水位下降按鍵
蜂鳴器
數(shù)碼管限流電阻5.2.1控制要求與功能展示任務(wù)5.2簡易水情報警器控制實物運行視頻單片機數(shù)碼管水38簡易水情報警器電路原理圖任務(wù)5.2簡易水情報警器控制5.2.1控制要求與功能展示簡易水情報警器電路原理圖任務(wù)5.2簡易水情報警器控制395.2.2硬件系統(tǒng)與控制流程分析蜂鳴器驅(qū)動接口電路(1)蜂鳴器驅(qū)動接口電路
5.2.2硬件系統(tǒng)與控制流程分析蜂鳴器驅(qū)動接口電路(405.2.2硬件系統(tǒng)與控制流程分析八段LED數(shù)碼管結(jié)構(gòu)圖(2)數(shù)碼管驅(qū)動接口電路5.2.2硬件系統(tǒng)與控制流程分析八段LED數(shù)碼管結(jié)構(gòu)圖415.2.2硬件系統(tǒng)與控制流程分析LED數(shù)碼管顯示器原理圖2)數(shù)碼管的控制原理5.2.2硬件系統(tǒng)與控制流程分析LED數(shù)碼管顯示器原理圖425.2.2硬件系統(tǒng)與控制流程分析
在單片機應(yīng)用系統(tǒng)中,通常將數(shù)碼管的a~dp八個段分別對應(yīng)1個字節(jié)的D0~D7八位,即D0與a對應(yīng),D1與b對應(yīng)……根據(jù)共陽或共陰的點亮方式,通過單片機輸出對應(yīng)的數(shù)據(jù)“0”或“1”,即亮或滅。因此用8位二進制代碼就可以表示顯示字符,通常用2位十六進制數(shù)表示8位二進制數(shù),并稱其為字型碼。
3)數(shù)碼管顯示的實現(xiàn)方法5.2.2硬件系統(tǒng)與控制流程分析在單片機應(yīng)用系435.2.2硬件系統(tǒng)與控制流程分析表5-5LED數(shù)碼管常用字符型編碼表字符dpgfedcba陰碼A0111011177HB011111007CHC0011100139HD010111105EH-0100000040H熄滅0000000000H
本任務(wù)采用共陰LED數(shù)碼管顯示字型“A~D”等編碼如表所示。5.2.2硬件系統(tǒng)與控制流程分析表5-5LED數(shù)碼管445.2.2硬件系統(tǒng)與控制流程分析簡易水情報警器控制流程2、任務(wù)控制流程分析5.2.2硬件系統(tǒng)與控制流程分析簡易水情報警器控制流程455.2.3匯編語言程序分析與設(shè)計
空操作指令:NOP使用格式:NOP使用說明:是一條只有操作碼沒有操作數(shù)的單字節(jié)指令,不進行任何其他操作,相當于跳過一個字節(jié)。NOP指令的主要用途①可以利用它來進行延時或等待。該指令每執(zhí)行一次,就要花費一個機器周期的執(zhí)行時間。②可以利用它來調(diào)試程序,例如要刪除某條指令,只需用NOP指令取代即可。③在程序中某些地方故意安排一些NOP指令,為以后添加新指令預(yù)留存儲空間。1、任務(wù)相關(guān)匯編指令(1)空操作指令:NOP5.2.3匯編語言程序分析與設(shè)計空操作指令:465.2.3匯編語言程序分析與設(shè)計
使用格式:PUSH或POPdirect使用說明:內(nèi)部RAM中設(shè)定了一個遵循“先進后出,后進先出”原則的區(qū)域被稱為堆棧。堆棧指針SP(8位寄存器)指出堆棧的棧頂,堆棧是向上增長的,棧底固定,棧頂浮動。堆棧操作指令:PUSH、POPPUSHACC;將累加器ACC中的內(nèi)容入棧保護PUSH01H;將第0組寄存器R1中的內(nèi)容入棧保護…………POP01H;將出棧內(nèi)容存放在第0組寄存器R1中POPACC;將出棧的內(nèi)容存放在累加器ACC中使用示例(2)堆棧操作指令:PUSH、POP5.2.3匯編語言程序分析與設(shè)計使用格式:P475.2.3匯編語言程序分析與設(shè)計注意:由于堆棧操作指令只能操作內(nèi)部數(shù)據(jù)存儲空間地址,而像R1之類的工作寄存器并沒有具體的地址,所以PUSHR1指令是錯誤的,只能直接使用其具體的存儲地址01H。
PUSH(入棧操作5.2.3匯編語言程序分析與設(shè)計注意:由于堆棧操作485.2.3匯編語言程序分析與設(shè)計注意:執(zhí)行出棧操作時數(shù)據(jù)先傳出,而后指針自動減1。但是原先指針還未減1之前所指的地址中數(shù)據(jù)依然存在。
POP(出棧操作)5.2.3匯編語言程序分析與設(shè)計注意:執(zhí)行出棧操作495.2.3匯編語言程序分析與設(shè)計
使用格式:RETI使用說明:中斷返回指令是用于結(jié)束中斷服務(wù)操作,回到主程序中繼續(xù)執(zhí)行原操作的程序。它放在中斷服務(wù)程序的最后中斷返回指令:RETI…………;中斷服務(wù)操作RETI;中斷服務(wù)操作結(jié)束,中斷返回斷點使用示例(3)中斷返回指令:RETI
5.2.3匯編語言程序分析與設(shè)計使用格式:R505.2.3匯編語言程序分析與設(shè)計
匯編程序匯編程序外部中斷0服務(wù)子程序INT_0外部中斷1服務(wù)子程序INT_1主程序MAIN延時子程序DELAY顯示字符表程序初始部分程序初始化INIT子程序5.2.3匯編語言程序分析與設(shè)計匯編程序匯編515.2.4C語言程序分析與設(shè)計
在C語言中中斷函數(shù)使用關(guān)鍵詞interrupt與中斷號來定義中斷函數(shù),其一般形式如下:
[void]中斷函數(shù)名()interrupt中斷號[usingn]{聲明部分;執(zhí)行語句;}1、中斷函數(shù)的定義5.2.4C語言程序分析與設(shè)計在C語言中中斷52格式說明:(1)中斷函數(shù)無返回值,數(shù)據(jù)類型以void表示,也可省略。(2)中斷函數(shù)名為標識符,一般以中斷名稱表示,力求簡明易懂,如int_0()。(3)()為函數(shù)標志,interrupt為中斷函數(shù)的關(guān)鍵詞。(4)中斷號為該中斷在IE寄存器的使能位置,如外部中斷0的中斷號為0,定時器1中斷的中斷號為3。(5)選項[usingn],指中斷函數(shù)使用的工作寄存器組號,n=0~3。5.2.4C語言程序分析與設(shè)計
格式說明:(4)中斷號為該中斷在IE寄存器的使能位置,如外部53(1)不能進行參數(shù)傳遞。(2)無返回值。(3)在任何情況下不能直接調(diào)用中斷函數(shù),否則編譯器會產(chǎn)生錯誤。(4)可以在中斷函數(shù)定義中使用usingn指令來指定當前使用的寄存器組。(5)在中斷函數(shù)中調(diào)用的函數(shù)所使用的寄存器組必須與中斷函數(shù)相同,程序員必須保證按要求使用相應(yīng)的寄存器組,C編譯器不會對此進行檢查。5.2.4C語言程序分析與設(shè)計
2、編寫中斷函數(shù)時應(yīng)遵循的規(guī)則(1)不能進行參數(shù)傳遞。(5)在中斷函數(shù)中調(diào)用的函數(shù)所使用的545.2.4C語言程序分析與設(shè)計
C程序代碼C語言程序程序初始化子函數(shù)Init()外部中斷0服務(wù)子函數(shù)int_0()外部中斷1服務(wù)子函數(shù)int_1()延時子函數(shù)delay()程序初始部分(含數(shù)據(jù)表定義)主函數(shù)main()3、C語言程序設(shè)計5.2.4C語言程序分析與設(shè)計C程序代碼C語言程序555.2.5基于Proteus的調(diào)試與仿真
1、創(chuàng)建Proteus仿真電路圖(1)列出元器件表(2)繪制仿真電路圖5.2.5基于Proteus的調(diào)試與仿真1、創(chuàng)建Prot565.2.5基于Proteus的調(diào)試與仿真
繪制的仿真電路圖中,若要使蜂鳴器鳴叫,應(yīng)將蜂鳴器的工作電壓改為5V,即打開蜂鳴器屬性設(shè)置窗口將OperatingVoltage改為5V,同時將電阻R6屬性窗口中的ModelType改為DIGITAL。1、創(chuàng)建Proteus仿真電路圖5.2.5基于Proteus的調(diào)試與仿真繪制的仿575.2.5基于Proteus的調(diào)試與仿真
2、Proteus與Keil聯(lián)調(diào)
5.2.5基于Proteus的調(diào)試與仿真2、Proteu585.2.5基于Proteus的調(diào)試與仿真設(shè)置斷點
5.2.5基于Proteus的調(diào)試與仿真設(shè)置斷點
595.2.5基于Proteus的調(diào)試與仿真
SP=0x32a=0x00PSW=0x005.2.5基于Proteus的調(diào)試與仿真SP=0x32a605.2.5基于Proteus的調(diào)試與仿真
a=0x01SP=0x32PSW=0x895.2.5基于Proteus的調(diào)試與仿真a=0x01SP615.2.5基于Proteus的調(diào)試與仿真
SP=0x30PSW=0x00a=0x005.2.5基于Proteus的調(diào)試與仿真SP=0x30P625.2.5基于Proteus的調(diào)試與仿真
b=0x015.2.5基于Proteus的調(diào)試與仿真b=0x01635.2.5基于Proteus的調(diào)試與仿真
R4=0x1E5.2.5基于Proteus的調(diào)試與仿真R4=0x1E645.2.5基于Proteus的調(diào)試與仿真
3、Proteus仿真運行5.2.5基于Proteus的調(diào)試與仿真3、Proteu655.2.5基于Proteus的調(diào)試與仿真
仿真運行視頻5.2.5基于Proteus的調(diào)試與仿真仿真運行視頻66任務(wù)5.3簡易地震報警器控制
實物運行視頻K1按鍵
K2按鍵
蜂鳴器單片機兩位數(shù)碼管5.3.1控制要求與功能展示任務(wù)5.3簡易地震報警器控制實物運行視頻K1按鍵K67簡易地震報警器控制電路原理圖任務(wù)5.3簡易地震報警器控制簡易地震報警器控制電路原理圖任務(wù)5.3簡易地震報警器控制685.3.2硬件系統(tǒng)與控制流程分析
該電路實際上是在前面任務(wù)5.2介紹的電路上進行擴展而成,將兩位共陰極數(shù)碼管的公共端分別連接在P2.0和P2.1上,其它的硬件系統(tǒng)結(jié)構(gòu)與前述任務(wù)相同。K1和K2按鍵均以外部中斷的方式向系統(tǒng)提供輸入信號,同時兩位數(shù)碼管以動態(tài)掃描的方式顯示字符。1、任務(wù)硬件系統(tǒng)分析5.3.2硬件系統(tǒng)與控制流程分析該電路實際695.3.2硬件系統(tǒng)與控制流程分析數(shù)碼管的8個顯示段的同名端連接在一起,每個數(shù)碼管的公共極COM增加位選通控制電路。(1)數(shù)碼管動態(tài)掃描原理5.3.2硬件系統(tǒng)與控制流程分析數(shù)碼管的8705.3.2硬件系統(tǒng)與控制流程分析◆IP寄存器
每個中斷源都具有高低兩個中斷優(yōu)先級,中斷優(yōu)先級由寄存器IP進行設(shè)置表5-7IP寄存器的結(jié)構(gòu)IP(0B8H)D7D6D5D4D3D2D1D0位名稱———PSPT1PX1PT0PX0位含義———串行中斷的中斷優(yōu)先級控制位T1的中斷優(yōu)先級控制位INT1的中斷優(yōu)先級控制位T0的中斷優(yōu)先級控制位INT0的中斷優(yōu)先級控制位位地址0BCH0BBH0BAH0B9H0B8H復(fù)位后,IP寄存器中的各位均被清零(2)中斷優(yōu)先級5.3.2硬件系統(tǒng)與控制流程分析◆IP寄存器表5-7715.3.2硬件系統(tǒng)與控制流程分析同時到來的同級中斷請求按自然優(yōu)先權(quán)來確定中斷響應(yīng)次序表5-8各中斷源及其自然優(yōu)先權(quán)中斷源自然優(yōu)先權(quán)外部中斷0中斷高
低定時器/計數(shù)器0中斷外部中斷1中斷定時器/計數(shù)器1中斷串行口中斷◆自然優(yōu)先權(quán)
5.3.2硬件系統(tǒng)與控制流程分析同時到來的同級中斷請求按725.3.2硬件系統(tǒng)與控制流程分析◆中斷優(yōu)先級控制中斷優(yōu)先級控制的基本原則為:高優(yōu)先級中斷可以中斷正在執(zhí)行的低優(yōu)先級中斷,反之不能;同級優(yōu)先級不能互相中斷;同一中斷優(yōu)先級中,若有多個中斷源同時請求中斷,CPU將先響應(yīng)優(yōu)先權(quán)高的中斷,后響應(yīng)優(yōu)先權(quán)低的中斷。
(2)中斷優(yōu)先級5.3.2硬件系統(tǒng)與控制流程分析◆中斷優(yōu)先級控制(2)中735.3.2硬件系統(tǒng)與控制流程分析注意:中斷嵌套只能高優(yōu)先級“中斷”低優(yōu)先級,低優(yōu)先級不能“中斷”高優(yōu)先級,同一優(yōu)先級不能相互“中斷”。(3)中斷嵌套5.3.2硬件系統(tǒng)與控制流程分析注意:中斷嵌套只能高優(yōu)745.3.2硬件系統(tǒng)與控制流程分析圖5-27地震報警器控制流程2、任務(wù)控制流程分析5.3.2硬件系統(tǒng)與控制流程分析圖5-27地震報755.3.3匯編語言程序分析與設(shè)計
匯編程序主程序MAIN數(shù)碼管顯示子程序DIS延時子程序DELAY顯示字符表外部中斷0服務(wù)子程序INT_0外部中斷1服務(wù)子程序INT_1程序初始部分程序初始化子程序INIT匯編程序5.3.3匯編語言程序分析與設(shè)計匯編程序主程765.3.4C語言程序分析與設(shè)計
C程序代碼程序初始化子函數(shù)Init()數(shù)碼管顯示子函數(shù)xianshi()外部中斷0子函數(shù)int0()延時子函數(shù)delay()程序初始部分(含數(shù)據(jù)表定義)主函數(shù)main()C語言程序5.3.4C語言程序分析與設(shè)計C程序代碼程序初77(1)列出元器件表;(2)繪制仿真電路圖5.3.5基于Proteus的調(diào)試與仿真
1、創(chuàng)建Proteus仿真電路圖(1)列出元器件表;(2)繪制仿真電路圖5.3.5基于Pr785.3.5基于Proteus的調(diào)試與仿真
(1)安裝插件vdmagdi.exe(注意:應(yīng)把插件安裝在Keil3的安裝目錄下)(2)將Keil安裝目錄\C51\BIN中的VDM51.dll文件復(fù)制到Proteus軟件的安裝目錄Proteus\MODELS目錄下(3)修改Keil安裝目錄下的Tools.ini文件,在C51字段中加入TDRV11=BIN\VDM51.DLL(“PROTEUS6EMULATOR”)并保存。
2、Proteus與Keil聯(lián)調(diào)
5.3.5基于Proteus的調(diào)試與仿真(1)安裝插件795.3.5基于Proteus的調(diào)試與仿真
4)打開“簡易地震報警器控制.DSN”文件,在Proteus的“Debug”菜單中選中“UseRemoteDebugMonitor(遠程監(jiān)控)”。右鍵選中STC89C51單片機,在彈出的對話框“ProgramFile”項中,導(dǎo)入在Keil中生成的HEX文件。5)Keil打開“簡易地震報警器控制.UV2”,打開窗口“OptionforTarget‘工程名’”。在Debug選項中右欄上部的下拉菜單選中ProteusVSMSimulator。點擊進入Settings窗口,設(shè)置IP為127.0.0.1,端口號為8000。6)在Keil中點擊,使用單步執(zhí)行來調(diào)試程序,同時在Proteus中查看直觀的仿真結(jié)果。
2、Proteus與Keil聯(lián)調(diào)5.3.5基于Proteus的調(diào)試與仿真4)打開“簡易805.3.5基于Proteus的調(diào)試與仿真
P0口輸出40H
P3.0口輸出高電平蜂鳴器不鳴叫2、Proteus與Keil聯(lián)調(diào)5.3.5基于Proteus的調(diào)試與仿真P0口輸出40815.3.5基于Proteus的調(diào)試與仿真
SP=0x2d5.3.5基于Proteus的調(diào)試與仿真SP=0x2d825.3.5基于Proteus的調(diào)試與仿真
5.3.5基于Proteus的調(diào)試與仿真835.3.5基于Proteus的調(diào)試與仿真
蜂鳴器鳴叫5.3.5基于Proteus的調(diào)試與仿真蜂鳴器鳴叫845.3.5基于Proteus的調(diào)試與仿真
SP=0x375.3.5基于Proteus的調(diào)試與仿真SP=0x37855.3.5基于Proteus的調(diào)試與仿真
m=15.3.5基于Proteus的調(diào)試與仿真m=1865.3.5基于Proteus的調(diào)試與仿真
3、Proteus仿真運行
5.3.5基于Proteus的調(diào)試與仿真3、Proteu875.3.5基于Proteus的調(diào)試與仿真
仿真運行視頻5.3.5基于Proteus的調(diào)試與仿真仿真運行視頻88技能訓(xùn)練1:中斷加減計數(shù)器
訓(xùn)練目的
學(xué)會簡單的單片機外部中斷應(yīng)用電路分析設(shè)計1學(xué)會數(shù)碼管靜態(tài)顯示接口電路設(shè)計及其程序?qū)崿F(xiàn)2理解并掌握各個中斷寄存器的功能和使用方法3掌握簡單的單片機外部中斷應(yīng)用程序分析與編寫4進一步學(xué)會程序的調(diào)試過程與仿真方法5技能訓(xùn)練1:中斷加減計數(shù)器訓(xùn)練目的學(xué)會簡單的單片機外部中89仿真運行視頻技能訓(xùn)練1:中斷加減計數(shù)器
仿真運行視頻技能訓(xùn)練1:中斷加減計數(shù)器90技能訓(xùn)練2:中斷嵌套數(shù)顯控制
訓(xùn)練目的
學(xué)會數(shù)碼管動態(tài)顯示接口電路設(shè)計及其程序?qū)崿F(xiàn)1理解并掌握中斷嵌套的過程和使用方法步驟2掌握單片機中斷嵌套程序的分析與編寫3學(xué)會單片機多級中斷應(yīng)用程序分析與開發(fā)4進一步學(xué)會程序的調(diào)試過程與仿真方法5技能訓(xùn)練2:中斷嵌套數(shù)顯控制訓(xùn)練目的學(xué)會數(shù)碼管動態(tài)顯示接91仿真運行視頻技能訓(xùn)練2:中斷嵌套數(shù)顯控制
仿真運行視頻技能訓(xùn)練2:中斷嵌套數(shù)顯控制92某公司單片機技術(shù)及項目管理知識應(yīng)用課件93項目5
中斷系統(tǒng)控制及應(yīng)用知識與能力目標熟悉單片機中斷系統(tǒng)的結(jié)構(gòu)與功能1掌握中斷系統(tǒng)的編程與控制方法2理解并掌握數(shù)碼管顯示接口電路及其程序?qū)崿F(xiàn)方法3初步學(xué)會中斷控制應(yīng)用程序的分析與設(shè)計4理解中斷嵌套的工作過程,初步學(xué)會中斷嵌套的控制應(yīng)用5熟練使用KeiluVsion3與Proteus軟件6項目5中斷系統(tǒng)控制及應(yīng)用知識與能力目標熟悉單片機中斷系94項目5中斷系統(tǒng)控制及應(yīng)用5.3.1控制要求與功能展示任務(wù)5.1中斷系統(tǒng)分析與控制5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析5.1.2外部中斷編程與控制5.2.2硬件系統(tǒng)與控制流程分析5.2.1控制要求與功能展示5.2.3匯編語言程序分析與設(shè)計5.2.4C語言程序分析與設(shè)計5.2.5基于Proteus的調(diào)試與仿真2任務(wù)5.2簡易水情報警器控制5.3.2硬件系統(tǒng)與控制流程分析5.3.3匯編語言程序分析與設(shè)計5.3.4C語言程序分析與設(shè)計5.3.5基于Proteus的調(diào)試與仿真2任務(wù)5.3簡易地震報警器控制項目5中斷系統(tǒng)控制及應(yīng)用5.3.1控制要求與功能展示任955.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析當CPU在執(zhí)行程序時,由單片機內(nèi)部或外部的原因引起的隨機事件要求CPU暫時停止正在執(zhí)行的程序,而轉(zhuǎn)向執(zhí)行一個用于處理該隨機事件的程序,處理完后又返回被中止的程序斷點處繼續(xù)執(zhí)行,這一過程就稱為中斷。1、中斷系統(tǒng)的概念5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析當CPU在執(zhí)行程序965.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析2、中斷系統(tǒng)的內(nèi)部結(jié)構(gòu)組成5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析2、中斷系統(tǒng)的內(nèi)部結(jié)構(gòu)組975.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析中斷系統(tǒng)有5個中斷請求源和4個用于中斷控制的寄存器定時控制寄存器(TCON)、串行控制寄存器(SCON)、中斷控制寄存器(IE)和中斷優(yōu)先級控制寄存器(IP)來控制中斷的類型、中斷的開關(guān)和各種中斷源的優(yōu)先級。
5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析中斷系統(tǒng)有5個中斷985.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析
231外部中斷請求源:
INT0(P3.2)和INT1(P3.3)定時/計數(shù)器中斷請求源:內(nèi)部2個16位定時/計數(shù)器T0、T1串行口中斷源:
內(nèi)部有一個全雙工的串行接口中斷源(5個)5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析231外部中斷請995.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析
51單片機為每個中斷源都設(shè)置了中斷標志位。檢測到中斷請求信號后,先將相應(yīng)的中斷標志位置位,以便在后續(xù)的機器周期里進行下一步的控制和處理。中斷標志位集中鎖存在專用的寄存器TCON和SCON中。
(2)中斷標志
5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析51單片機為每個100◆定時控制寄存器TCON中的中斷標志位5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析表5-1TCON寄存器的結(jié)構(gòu)TCON(88H)D7D6D5D4D3D2D1D0位名稱TF1TR1TF0TR0IE1IT1IE0IT0位含義T1的溢出中斷標志位T1的啟動停止控制位T0的溢出中斷標志位T0的啟動停止控制位INT1中斷請求標志位INT1觸發(fā)方式控制位INT0中斷請求標志位INT0觸發(fā)方式控制位位地址8FH8EH8DH8CH8BH8AH89H88HTCON寄存器:存放INT0、INT1、T0和T1中斷請求標志,也是定時/計數(shù)器0和1的控制寄存器◆定時控制寄存器TCON中的中斷標志位5.1.1中斷系101為INT0中斷請求標志位。當INT0有請求信號時,該位就會由硬件自動置1,在CPU響應(yīng)中斷后,才由硬件自動將IE0清零。5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析IE0(TCON.1)IE1(TCON.3)IT0(TCON.0)IT1(TCON.2)為INT0觸發(fā)方式控制位。由軟件進行置位和復(fù)位,當IT0=0時,為低電平觸發(fā);當IT0=1時,為負跳變觸發(fā)。為INT1觸發(fā)方式控制位。由軟件進行置位和復(fù)位,當IT1=0時,為低電平觸發(fā);當IT1=1時,為負跳變觸發(fā)。為INT1中斷請求標志位。當INT1有請求信號時,該位就會由硬件自動置1,在CPU響應(yīng)中斷后,才由硬件自動將IE1清零。為INT0中斷請求標志位。當INT0有請求信號1025.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析TR0TF0(TCON.5)TF1(TCON.7)TR0(TCON.4)TR1(TCON.6)為定時/計數(shù)器T0的啟動停止控制位。由軟件進行設(shè)定,當TR0=0時,停止T0定時(或計數(shù));當TR0=1時,啟動T0定時(或計數(shù))。為定時器/計數(shù)器T0的溢出中斷標志位。當T0定時(或計數(shù))結(jié)束時,由硬件自動置1,在CPU響應(yīng)中斷后,才由硬件自動將TF0清零。也可以由軟件查詢該標志,并由軟件清零。為定時/計數(shù)器T1的啟動停止控制位。由軟件進行設(shè)定,當TR1=0時,停止T0定時(或計數(shù));當TR1=1時,啟動T1定時(或計數(shù))。為定時/計數(shù)器T1的溢出中斷標志位,當T1定時(或計數(shù))結(jié)束時,由硬件自動置1,在CPU響應(yīng)中斷后,才由硬件自動將TF1清零。也可以由軟件查詢該標志,并由軟件清零。5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析TR0TF0TF1TR01035.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析表5-2SCON寄存器的結(jié)構(gòu)SCON(98H)D7D6S5D4D3D2D1D0位名稱SM0SM1SM2RENTB8RB8TIRI位含義關(guān)于串口項目7中講解串行發(fā)送結(jié)束中斷標志位串行接收結(jié)束中斷標志位位地址99H98H串行收發(fā)結(jié)束的中斷標志位被鎖存在串行控制寄存器SCON中
◆串行控制寄存器SCON中的中斷標志位5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析表5-2SCON寄存104◆串行控制寄存器SCON中的中斷標志位
5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析為串行接收結(jié)束中斷標志位。當串行口結(jié)束一次數(shù)據(jù)接收后,由硬件自動置位,但標志必須由軟件進行清零。
為串行發(fā)送結(jié)束中斷標志位。當串行口結(jié)束一次數(shù)據(jù)發(fā)送后,由硬件自動置位,但標志必須由軟件進行清零。
RITI◆串行控制寄存器SCON中的中斷標志位5.1.1中斷系1055.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析表5-3IE寄存器的結(jié)構(gòu)IE(0A8)D7D6D5D4D3D2D1D0位名稱EA——ESET1EX1ET0EX0位含義中斷總允許控制位——串行口中斷允許位T1中斷允許位INT1中斷允許位T0中斷允許位INT0中斷允許位位地址0AFH0ACH0ABH0AAH0A9H0A8H中斷允許控制寄存器IE實現(xiàn)開中斷和關(guān)中斷的功能。
(3)中斷控制
5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析表5-3IE寄存器的1065.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析
◆EA(IE.7)為所有中斷總允許控制位。EA=0,中斷總禁止;EA=1,中斷總允許。◆ES(IE.4)為串行口中斷允許位。ES=1,允許串行口中斷;ES=0,禁止串行口中斷?!鬍T1(IE.3)為T1中斷允許位。ET1=1,允許T1中斷;ET1=0,禁止T1中斷?!鬍X1(IE.2)為INT1中斷允許位。EX1=1,允許外部中斷INT1中斷;EX1=0,禁止外部中斷INT1中斷?!鬍T0(IE.1)為T0中斷允許位。ET0=1,允許T0中斷;ET0=0,禁止T0中斷?!鬍X0(IE.0)為INT0中斷允許位。EX0=1,允許INT0中斷;EX0=0,禁止INT0中斷。5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析◆EA(IE.1075.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析
IE寄存器在單片機復(fù)位后,各位均被清零,在IE寄存器應(yīng)用時,由軟件對其進行設(shè)定,即可對其進行按位設(shè)置,也可對其進行按字節(jié)設(shè)置。開啟外部中斷0中斷和定時器0中斷,可進行如下設(shè)置:例如:5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析IE寄存器在單片機1085.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析匯編語言:C語言:按位設(shè)置:SETBEAEA=1;SETBEX0EX0=1;SETBET0ET0=1;按字節(jié)設(shè)置:MOVIE,#10000011BIE=0x83;5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析匯編語言:1095.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析中斷請求處理中斷中斷返回中斷處理中斷響應(yīng)3、中斷響應(yīng)處理過程5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析中斷請求處理中斷中斷返回1105.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析1115.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析當中斷源要求CPU為它服務(wù)時,必須發(fā)出一個中斷請求信號。同時為保證該中斷得以實現(xiàn),中斷請求標志應(yīng)保持到CPU響應(yīng)該中斷后才能取消,CPU也會不斷的及時查詢這些中斷請求標志,一旦查詢到該中斷的中斷請求標志為置位,就立即響應(yīng)該中斷。(1)中斷請求5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析當中斷源要1125.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析(2)中斷響應(yīng)
◆中斷響應(yīng)的條件申請中斷的中斷源的中斷允許位為1,即中斷源可向CPU申請中斷。中斷總允許位EA置位,即CPU允許所有中斷源申請中斷。有中斷源發(fā)出中斷請求。123CPU響應(yīng)中斷的基本條件5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析(2)中斷響應(yīng)◆中斷響1135.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析中斷響應(yīng)CPU正在執(zhí)行一個同級或高優(yōu)先級的中斷服務(wù)程序正在執(zhí)行的指令尚未完成正在執(zhí)行中斷返回指令RETI或者對專用寄存器IE、IP進行讀/寫的指令阻斷◆中斷響應(yīng)的條件5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析中斷響應(yīng)CPU正在執(zhí)行一1145.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析注意:串行口中斷響應(yīng)后,必須由軟件程序?qū)υ撝袛鄻酥疚磺辶?。撤除該中斷源的中斷請求標志關(guān)閉同級中斷保護斷點地址將相應(yīng)中斷的入口地址送入PC◆中斷響應(yīng)操作5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析注意:串行口中撤除該中斷1155.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析注意:每個中斷的8個單元難以存放一個完整的中斷服務(wù)程序,因此用戶在使用時,可在各中斷單元地址存放一條無條件跳轉(zhuǎn)指令(LJMP),跳轉(zhuǎn)到實際的中斷服務(wù)程序執(zhí)行。表5-4各中斷源及中斷程序入口地址表中斷源名稱對應(yīng)引腳中斷入口地址外部中斷0INT0(P3.2)0003H~000AH(入口地址0003H)定時器/計數(shù)器0T0(P3.4)000BH~0012H(入口地址000BH)外部中斷1INT1(P3.3)0013H~001AH(入口地址0013H)定時器/計數(shù)器1T1(P3.5)001BH~0022H(入口地址001BH)串行口中斷串行接收RXD(P3.0)0023H~002AH(入口地址0023H)串行發(fā)送TXD(P3.1)5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析注意:每個中斷的8個單元1165.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析中斷服務(wù)
執(zhí)行中斷服務(wù)程序,完成相應(yīng)操作在中斷響應(yīng)時,將斷點處的有關(guān)寄存器的內(nèi)容(如Acc、PSW、DPTR等)壓入堆棧中保護起來,以便中斷返回時恢復(fù)?;謴?fù)現(xiàn)場保護現(xiàn)場(3)中斷處理5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析中斷服務(wù)執(zhí)行中斷服1175.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析
在中斷服務(wù)程序最后,必須加一條RETI中斷返回指令,當CPU執(zhí)行到RETI指令時,中斷才能返回。
注意:用戶在編寫中斷服務(wù)程序時要考慮需要保護的現(xiàn)場,在恢復(fù)現(xiàn)場時,要注意壓棧與出棧指令必須成對使用,先入棧的內(nèi)容應(yīng)該后彈出,同時還要及時撤除需用軟件撤除的中斷標志。(4)中斷返回5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析在中斷1185.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析外部中斷,顧名思義就是從外部引入進來的中斷。51單片機上有兩個從外部通過P3.2和P3.3兩個引腳引入進來的外部中斷(INT0和INT1)。用戶必須先啟動中斷,外部中斷才能接收中斷信號,CPU才能響應(yīng)中斷。4、兩個外部中斷的使用(1)外部中斷的認識5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析外部中斷,1195.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析外部中斷請求觸發(fā)方式電平觸發(fā)方式邊沿脈沖觸發(fā)方式(2)外部中斷的觸發(fā)方式5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析外部中斷請求觸發(fā)方式電平120
①電平觸發(fā)是低電平有效。只要單片機在中斷請求輸入端(INT0和INT1)上采樣到有效的低電平時,就會啟動外部中斷。②必須把有效的電平保持到請求獲得響應(yīng)為止,不然CPU就不能夠響應(yīng)中斷;③中斷服務(wù)程序結(jié)束之前,中斷源又必須撤除其有效的低電平信號,否則中斷返回時,會再次產(chǎn)生中斷。④適合于外部輸入以低電平且中斷服務(wù)程序能清除的外部中斷請求的系統(tǒng)。5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析◆電平觸發(fā)方式①電平觸發(fā)是低電平有效。只要單片機在中斷請求輸入端(IN1215.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析邊沿脈沖觸發(fā)是脈沖的下降沿有效123中斷請求信號的高電平狀態(tài)和低電平狀態(tài)都應(yīng)至少維持一個機器周期適合與以負脈沖形式輸入的外部中斷請求◆邊沿脈沖觸發(fā)方式5.1.1中斷系統(tǒng)結(jié)構(gòu)與功能分析邊沿脈沖觸發(fā)是脈沖的下降1225.1.2外部中斷編程與控制
中斷的應(yīng)用就是用程序來實現(xiàn)對中斷功能的控制編制應(yīng)用程序時中斷初始化中斷服務(wù)程序包含5.1.2外部中斷編程與控制中斷的應(yīng)用就是用程1235.1.2外部中斷編程與控制
1、中斷初始化設(shè)置堆棧指針SP
定義中斷優(yōu)先級
開放中斷定義外部中斷觸發(fā)方式中斷初始化步驟5.1.2外部中斷編程與控制1、中斷初始化設(shè)置堆棧定義1245.1.2外部中斷編程與控制
中斷服務(wù)子程序ACEDB根據(jù)需要保護現(xiàn)場在中斷服務(wù)入口地址設(shè)置一條跳轉(zhuǎn)指令,轉(zhuǎn)到中斷服務(wù)程序的實際入口處中斷返回執(zhí)行中斷服務(wù)要求操作恢復(fù)現(xiàn)場2、中斷服務(wù)程序5.1.2外部中斷編程與控制中斷服務(wù)ACEDB根據(jù)需要1255.1.2外部中斷編程與控制
ZHDUAN:CLREA;關(guān)中斷PUSHACC;保護現(xiàn)場(根據(jù)需要由用戶決定)PUSHPSWSETBEA;開中斷(不希望高級中斷進入,;則不用開中斷)…………CLREA;關(guān)中斷POPPSW;恢復(fù)現(xiàn)場POPACCSETBEARETI;中斷返回中斷服務(wù)程序匯編語言一般編寫格式:
5.1.2外部中斷編程與控制ZHDUAN:CLR1265.1.2外部中斷編程與控制
voidZHDUAN()interruptx//其中x為中斷號,//不使用using時編譯器將自動{//產(chǎn)生保護和恢復(fù)R0~R7現(xiàn)場EA=0;………………EA=1;}中斷服務(wù)程序C語言一般編寫格式:
5.1.2外部中斷編程與控制voidZHDUAN(1275.1.2外部中斷編程與控制
ORG0000H;單片機程序入口地址LJMPMAIN;跳轉(zhuǎn)到主程序入口地址ORG0003H;外部中斷0入口地址LJMPINT_0;跳轉(zhuǎn)至INT_0中斷服務(wù)子程序ORG0013H;外部中斷1入口地址LJMPINT_1;跳轉(zhuǎn)至INT_1中斷服務(wù)子程序ORG0030HMAIN:……;主程序……MOVTCON,#XXH;設(shè)置專用寄存器TCON的狀態(tài)MOVIE,#XXH;設(shè)置專用寄存器IE的狀態(tài)MOVIP,#XXH;設(shè)置專用寄存器IP的狀態(tài)…………INT_0:……;外部中斷0中斷服務(wù)子程序……RETIINT_1:……;外部中斷1中斷服務(wù)子程序……RETI3、外部中斷編程與控制格式(匯編語言)5.1.2外部中斷編程與控制1285.1.2外部中斷編程與控制
#include<regx51.h>voidmain(){…………TCON=0XXX;//設(shè)置專用寄存器TCON的狀態(tài)IE=0XXX;//設(shè)置專用寄存器IE的狀態(tài)IP=0XXX;//設(shè)置專用寄存器IP的狀態(tài)…………}voidint_0()interrupt0//外部中斷0中斷服務(wù)子程序{……}voidint_1()interrupt2//外部中斷1中斷服務(wù)子程序{……}3、外部中斷編程與控制格式(C語言)5.1.2外部中斷編程與控制#include<regx129任務(wù)5.2簡易水情報警器控制實物運行視頻單片機數(shù)碼管水位上漲按鍵時鐘電路
水位下降按鍵
蜂鳴器
數(shù)碼管限流電阻5.2.1控制要求與功能展示任務(wù)5.2簡易水情報警器控制實物運行視頻單片機數(shù)碼管水130簡易水情報警器電路原理圖任務(wù)5.2簡易水情報警器控制5.2.1控制要求與功能展示簡易水情報警器電路原理圖任務(wù)5.2簡易水情報警器控制1315.2.2硬件系統(tǒng)與控制流程分析蜂鳴器驅(qū)動接口電路(1)蜂鳴器驅(qū)動接口電路
5.2.2硬件系統(tǒng)與控制流程分析蜂鳴器驅(qū)動接口電路(1325.2.2硬件系統(tǒng)與控制流程分析八段LED數(shù)碼管結(jié)構(gòu)圖(2)數(shù)碼管驅(qū)動接口電路5.2.2硬件系統(tǒng)與控制流程分析八段LED數(shù)碼管結(jié)構(gòu)圖1335.2.2硬件系統(tǒng)與控制流程分析LED數(shù)碼管顯示器原理圖2)數(shù)碼管的控制原理5.2.2硬件系統(tǒng)與控制流程分析LED數(shù)碼管顯示器原理圖1345.2.2硬件系統(tǒng)與控制流程分析
在單片機應(yīng)用系統(tǒng)中,通常將數(shù)碼管的a~dp八個段分別對應(yīng)1個字節(jié)的D0~D7八位,即D0與a對應(yīng),D1與b對應(yīng)……根據(jù)共陽或共陰的點亮方式,通過單片機輸出對應(yīng)的數(shù)據(jù)“0”或“1”,即亮或滅。因此用8位二進制代碼就可以表示顯示字符,通常用2位十六進制數(shù)表示8位二進制數(shù),并稱其為字型碼。
3)數(shù)碼管顯示的實現(xiàn)方法5.2.2硬件系統(tǒng)與控制流程分析在單片機應(yīng)用系1355.2.2硬件系統(tǒng)與控制流程分析表5-5LED數(shù)碼管常用字符型編碼表字符dpgfedcba陰碼A0111011177HB011111007CHC0011100139HD010111105EH-0100000040H熄滅0000000000H
本任務(wù)采用共陰LED數(shù)碼管顯示字型“A~D”等編碼如表所示。5.2.2硬件系統(tǒng)與控制流程分析表5-5LED數(shù)碼管1365.2.2硬件系統(tǒng)與控制流程分析簡易水情報警器控制流程2、任務(wù)控制流程分析5.2.2硬件系統(tǒng)與控制流程分析簡易水情報警器控制流程1375.2.3匯編語言程序分析與設(shè)計
空操作指令:NOP使用格式:NOP使用說明:是一條只有操作碼沒有操作數(shù)的單字節(jié)指令,不進行任何其他操作,相當于跳過一個字節(jié)。NOP指令的主要用途①可以利用它來進行延時或等待。該指令每執(zhí)行一次,就要花費一個機器周期的執(zhí)行時間。②可以利用它來調(diào)試程序,例如要刪除某條指令,只需用NOP指令取代即可。③在程序中某些地方故意安排一些NOP指令,為以后添加新指令預(yù)留存儲空間。1、任務(wù)相關(guān)匯編指令(1)空操作指令:NOP5.2.3匯編語言程序分析與設(shè)計空操作指令:1385.2.3匯編語言程序分析與設(shè)計
使用格式:PUSH或POPdirect使用說明:內(nèi)部RAM中設(shè)定了一個遵循“先進后出,后進先出”原則的區(qū)域被稱為堆棧。堆棧指針SP(8位寄存器)指出堆棧的棧頂,堆棧是向上增長的,棧底固定,棧頂浮動。堆棧操作指令:PUSH、POPPUSHACC;將累加器ACC中的內(nèi)容入棧保護PUSH01H;將第0組寄存器R1中的內(nèi)容入棧保護…………POP01H;將出棧內(nèi)容存放在第0組寄存器R1中POPACC;將出棧的內(nèi)容存放在累加器ACC中使用示例(2)堆棧操作指令:PUSH、POP5.2.3匯編語言程序分析與設(shè)計使用格式:P1395.2.3匯編語言程序分析與設(shè)計注意:由于堆棧操作指令只能操作內(nèi)部數(shù)據(jù)存儲空間地址,而像R1之類的工作寄存器并沒有具體的地址,所以PUSHR1指令是錯誤的,只能直接使用其具體的存儲地址01H。
PUSH(入棧操作5.2.3匯編語言程序分析與設(shè)計注意:由于堆棧操作1405.2.3匯編語言程序分析與設(shè)計注意:執(zhí)行出棧操作時數(shù)據(jù)先傳出,而后指針自動減1。但是原先指針還未減1之前所指的地址中數(shù)據(jù)依然存在。
POP(出棧操作)5.2.3匯編語言程序分析與設(shè)計注意:執(zhí)行出棧操作1415.2.3匯編語言程序分析與設(shè)計
使用格式:RETI使用說明:中斷返回指令是用于結(jié)束中斷服務(wù)操作,回到主程序中繼續(xù)執(zhí)行原操作的程序。它放在中斷服務(wù)程序的最后中斷返回指令:RETI…………;中斷服務(wù)操作RETI;中斷服務(wù)操作結(jié)束,中斷返回斷點使用示例(3)中斷返回指令:RETI
5.2.3匯編語言程序分析與設(shè)計使用格式:R1425.2.3匯編語言程序分析與設(shè)計
匯編程序匯編程序外部中斷0服務(wù)子程序INT_0外部中斷1服務(wù)子程序INT_1主程序MAIN延時子程序DELAY顯示字符表程序初始部分程序初始化INIT子程序5.2.3匯編語言程序分析與設(shè)計匯編程序匯編1435.2.4C語言程序分析與設(shè)計
在C語言中中斷函數(shù)使用關(guān)鍵詞interrupt與中斷號來定義中斷函數(shù),其一般形式如下:
[void]中斷函數(shù)名()interrupt中斷號[usingn]{聲明部分;執(zhí)行語句;}1、中斷函數(shù)的定義5.2.4C語言程序分析與設(shè)計在C語言中中斷144格式說明:(1)中斷函數(shù)無返回值,數(shù)據(jù)類型以void表示,也可省略。(2)中斷函數(shù)名為標識符,一般以中斷名稱表示,力求簡明易懂,如int_0()。(3)()為函數(shù)標志,interrupt為中斷函數(shù)的關(guān)鍵詞。(4)中斷號為該中斷在IE寄存器的使能位置,如外部中斷0的中斷號為0,定時器1中斷的中斷號為3。(5)選項[usingn],
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 古建筑壁畫修復(fù)合同
- 河道整治維修灰工施工合同
- 道路交通流量調(diào)查合同
- 施工期間進度調(diào)整實施方案協(xié)議
- 煤炭企業(yè)地磅租賃協(xié)議
- 實驗室國際交流與合作
- 增值稅稅收籌劃策略解析
- 游樂園游客意見箱管理規(guī)定
- 餐飲服務(wù)人員健康安全承諾書
- 油罐清洗挖機手招聘協(xié)議
- 攤位布局規(guī)劃方案
- 注塑工藝損耗率
- 鋼結(jié)構(gòu)漏雨維修方案
- (含附件)ktv承包協(xié)議書模板-2024
- (高清版)DZT 0289-2015 區(qū)域生態(tài)地球化學(xué)評價規(guī)范
- 2024年強基計劃解讀 課件-2024屆高三下學(xué)期主題班會
- 我國區(qū)域經(jīng)濟發(fā)展戰(zhàn)略(二)
- 合肥新站集貿(mào)市場規(guī)劃方案
- 城市道路橋梁工程施工質(zhì)量驗收規(guī)范 DG-TJ08-2152-2014
- 急診急救知識培訓(xùn)
- 雨水泵站及配套工程施工組織設(shè)計樣本
評論
0/150
提交評論