第5章-1_單片機(jī)的中斷系統(tǒng).ppt_第1頁
第5章-1_單片機(jī)的中斷系統(tǒng).ppt_第2頁
第5章-1_單片機(jī)的中斷系統(tǒng).ppt_第3頁
第5章-1_單片機(jī)的中斷系統(tǒng).ppt_第4頁
第5章-1_單片機(jī)的中斷系統(tǒng).ppt_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1 第五章1單片機(jī)的中斷系統(tǒng) 第一節(jié)中斷的基本概念第二節(jié)mcs 51單片機(jī)中斷系統(tǒng)第三節(jié)中斷系統(tǒng)的應(yīng)用 2 第一節(jié)中斷的基本概念 1 數(shù)據(jù)傳送方式程序控制方式無條件傳送方式 輸入輸出操作完全取決于程序的安排 而不管外設(shè)的狀態(tài) 程序查詢方式 先查詢外設(shè)的當(dāng)前狀態(tài) 獲得端口信息 i o操作完全由cpu控制 缺點(diǎn) 浪費(fèi)cpu時(shí)間 效率低 中斷傳送方式cpu不必定時(shí)查詢接口狀態(tài) 接口在數(shù)據(jù)發(fā)送或接收數(shù)據(jù)準(zhǔn)備好后通知cpu cpu通過執(zhí)行一個(gè)中斷服務(wù)程序來完成數(shù)據(jù)傳送 接口沒有準(zhǔn)備好時(shí) cpu繼續(xù)執(zhí)行主程序 提高cpu工作效率 dma directmemoryaccess 直接存儲(chǔ)器存取方式i o設(shè)備在dma接口控制下直接把成塊信息送到主存儲(chǔ)器 或從主存儲(chǔ)器取出成塊信息送給i o設(shè)備 中間不經(jīng)cpu參與 比中斷 查詢方式更加提高了cpu的利用率 3 第一節(jié)中斷的基本概念 2 中斷概念 cpu在正常運(yùn)行程序時(shí) 由于cpu以外某一事件的發(fā)生 引起cpu暫停正在運(yùn)行的程序 而轉(zhuǎn)到為該事件的發(fā)生預(yù)先安排好的服務(wù)程序中去執(zhí)行 4 3 中斷源 可由硬件或軟件引起 引起中斷的事件 msc 51具有多個(gè)中斷源 51子系列有5個(gè)中斷源 2個(gè)外部中斷 2個(gè)定時(shí)中斷和1個(gè)串行中斷 a 外中斷 外部信號(hào)引起 共2個(gè) 即 外部中斷 0 中斷請(qǐng)求信號(hào)由引腳int0 p3 2 引入 外部中斷 1 中斷請(qǐng)求信號(hào)由引腳int1 p3 3 引入 外部中斷請(qǐng)求有兩種信號(hào)形式 低電平觸發(fā)方式和負(fù)跳脈沖觸發(fā)方式 負(fù)跳脈沖觸發(fā)方式 負(fù)跳信號(hào)有效 即cpu在連續(xù)兩個(gè)周期對(duì)引入端intx采樣 如果前周期為高電平 后一周期為低電平 則為有效的負(fù)跳脈沖觸發(fā)方式的外中斷申請(qǐng) 低電平觸發(fā)方式 低電平有效 只要cpu在每機(jī)器周期s5p2期間從引入端intx采樣到低電平 就進(jìn)入外中斷 第一節(jié)中斷的基本概念 5 b 定時(shí)器 計(jì)數(shù)器中斷 內(nèi)部計(jì)數(shù)器計(jì)數(shù)溢出 溢出標(biāo)志位tfx作為單片機(jī)接受中斷請(qǐng)求標(biāo)志 信號(hào)來源 內(nèi)部 定時(shí) 和外部 計(jì)數(shù) 芯片內(nèi)部有兩個(gè)定時(shí)器 計(jì)數(shù)器 tf0 tf1 發(fā)生計(jì)數(shù)溢出就可以達(dá)到申請(qǐng)中斷請(qǐng)求 c 串行中斷 串行數(shù)據(jù)傳送 發(fā)送和接收 的需要而設(shè)置 串行口接收或發(fā)送 ti ri 完一組串行數(shù)據(jù)時(shí) 就可以產(chǎn)生一個(gè)中斷請(qǐng)求 第一節(jié)中斷的基本概念 6 中斷源入口地址 7 ie 中斷允許控制寄存器 tcon 定時(shí)控制寄存器 scon 串行口控制寄存器 ip 中斷優(yōu)先級(jí)控制寄存器 第二節(jié)mcs 51單片機(jī)的中斷系統(tǒng) 與中斷控制有關(guān)的控制寄存器有四個(gè) 8 1 中斷允許控制寄存器ie用戶軟件設(shè)置寄存器地址為a8h 2 ex0 exl 外部中斷允許控制位 int0 int1 ex0 exl 0禁止外中斷ex0 exl l允許外中斷 1 ea 中斷允許總控制位 ea 0中斷總禁止 禁止所有中斷 即不響應(yīng)任何中斷請(qǐng)求 ea 1中斷總允許 總允許后中斷的禁止或允許由各中斷源的中斷允許控制位進(jìn)行設(shè)置 通過設(shè)置相關(guān)寄存器 達(dá)到控制中斷工作的目的 一 中斷控制寄存器 9 4 es 串行中斷允許控制位es 0禁止串行中斷es 1允許串行中斷 結(jié)論 mcs 51通過中斷允許控制寄存器對(duì)中斷的允許實(shí)行兩級(jí)控制 以ea位作為總控制位 以各中斷源的中斷允許位作為分控制位 mcs 51單片機(jī)復(fù)位后 ie 00h 因此中斷系統(tǒng)處于禁止?fàn)顟B(tài) 單片機(jī)在中斷響應(yīng)后不會(huì)自動(dòng)關(guān)閉中斷 因此在轉(zhuǎn)中斷服務(wù)程序后 應(yīng)使用有關(guān)指令禁止中斷 即以軟件方式關(guān)閉中斷 3 et0 etl 定時(shí) 計(jì)數(shù)中斷允許控制位 t0 t1 et0 etl 0禁止定時(shí) 或計(jì)數(shù) 中斷et0 etl 1允許定時(shí) 或計(jì)數(shù) 中斷 10 1 ie0 ie1 外部中斷請(qǐng)求標(biāo)志 硬件自動(dòng)設(shè)置cpu采樣到intx端有效的中斷請(qǐng)求后 iex位由硬件自動(dòng)置 1 在中斷響應(yīng)期間 要轉(zhuǎn)向中斷服務(wù)程序時(shí) 由硬件自動(dòng)清零 2 定時(shí)器控制寄存器tcon寄存器地址為88h 11 2 定時(shí)器控制寄存器tcon寄存器地址為88h 4 tr0 tr1 定時(shí)器啟動(dòng)標(biāo)志位 12 3 串行口控制寄存器scon 只有兩位與中斷有關(guān) 寄存器地址為98h 1 ti 串行口發(fā)送中斷標(biāo)志位 當(dāng)cpu將一個(gè)數(shù)據(jù)寫入發(fā)送緩沖器時(shí) 就啟動(dòng)發(fā)送 當(dāng)最后一個(gè)數(shù)據(jù)位發(fā)送完后 ti由硬件自動(dòng)置位 向cpu發(fā)中斷申請(qǐng) 進(jìn)行中斷服務(wù)程序時(shí) ti要由軟件清0 軟件查詢時(shí) ti可作為狀態(tài)位使用 2 ri 串行口接收中斷標(biāo)志位 cpu接收數(shù)據(jù)時(shí) 當(dāng)接收到最后一個(gè)數(shù)據(jù)位后 ri由硬件自動(dòng)置位 并向cpu發(fā)中斷申請(qǐng) 進(jìn)行中斷服務(wù)程序時(shí) ri要由軟件清0 軟件查詢時(shí) ri可作為狀態(tài)位使用 13 4 中斷優(yōu)先級(jí)控制寄存器ip用戶軟件設(shè)置寄存器地址為b8h px0 外部中斷0優(yōu)先級(jí)設(shè)定位pxl 外部中斷l(xiāng)優(yōu)先級(jí)設(shè)定位pt0 定時(shí)中斷0優(yōu)先級(jí)設(shè)定位ptl 定時(shí)中斷l(xiāng)優(yōu)先級(jí)設(shè)定位ps 串行中斷優(yōu)先級(jí)設(shè)定位對(duì)應(yīng)位置1 優(yōu)先級(jí)為高 置0 優(yōu)先級(jí)為低 14 5 中斷優(yōu)先級(jí)控制原則和控制邏輯具有兩級(jí)優(yōu)先級(jí) 其中斷優(yōu)先級(jí)的控制原則是 1 低優(yōu)先級(jí)中斷請(qǐng)求不能打斷高優(yōu)先級(jí)的中斷服務(wù) 但高優(yōu)先級(jí)中斷可以中斷低優(yōu)先級(jí)的中斷服務(wù) 從而實(shí)現(xiàn)中斷嵌套 2 如果一個(gè)中斷請(qǐng)求已被響應(yīng) 則同級(jí)的其他中斷服務(wù)將被禁止 即同級(jí)不能嵌套 3 如果同級(jí)的多個(gè)中斷請(qǐng)求同時(shí)出現(xiàn) 則按cpu查詢次序確定哪個(gè)中斷請(qǐng)求被響應(yīng) 其查詢次序?yàn)?外部中斷0 定時(shí)中斷0 外部中斷1 定時(shí)中斷1 串行中斷 15 中斷嵌套流程圖 中斷優(yōu)先級(jí) 當(dāng)多個(gè)中斷源請(qǐng)求中斷服務(wù) 那么cpu響應(yīng)這些中斷就有一個(gè)先后順序 稱之為中斷優(yōu)先級(jí) 優(yōu)先級(jí)高 則cpu先響應(yīng) 優(yōu)先級(jí)低 則cpu不影響高級(jí)中斷 平級(jí) 平級(jí) 16 8051的中斷系統(tǒng) 17 6 中斷初始化和中斷控制寄存器狀態(tài)邏輯設(shè)置 用戶通過tcon scon ie和ip四個(gè)控制寄存器來使用中斷系統(tǒng) 這四個(gè)控制寄存器都是既可進(jìn)行字節(jié)尋址又可進(jìn)行位尋址的 因此對(duì)位狀態(tài)的設(shè)置既可以使用字節(jié)操作指令又可以使用位操作指令 字節(jié)操作指令 movie 81h ea es et1 ex1 et0 ex0位操作指令 setbeasetbex0 對(duì)中斷的使用是在程序初始化時(shí)設(shè)置的 如果不包括優(yōu)先級(jí)控制 外中斷初始化共有3項(xiàng)內(nèi)容 中斷總允許 外中斷允許和中斷方式設(shè)定 定時(shí)中斷則只有兩項(xiàng)內(nèi)容 沒有中斷方式控制 18 二 中斷響應(yīng)過程 中斷響應(yīng) 在滿足cpu中斷響應(yīng)條件后 cpu對(duì)中斷源中斷請(qǐng)求的回答 1 中斷響應(yīng)基本條件 來中斷 開中斷 a 有中斷源發(fā)出中斷申請(qǐng) 中斷采樣s5p2 中斷查詢s6 中斷采樣 采樣主要針對(duì)外中斷請(qǐng)求信號(hào)進(jìn)行 對(duì)芯片引腳 int0和 int1進(jìn)行采樣 電平方式或是脈沖方式 中斷查詢 由cpu測(cè)試tcon和scon中各標(biāo)志位的狀態(tài) 以確定有沒有中斷請(qǐng)求發(fā)生以及是哪一個(gè)中斷請(qǐng)求 中斷請(qǐng)求是隨機(jī)發(fā)生 要求cpu不停地重復(fù)進(jìn)行查詢 b 中斷總允許位ea 1c 各個(gè)中斷源相應(yīng)的允許位置1 即es et1 ex1 et0 ex0 19 中斷響應(yīng)可能會(huì)被阻止或被延遲 中斷響應(yīng)是有條件的 并不是查詢到的所有中斷請(qǐng)求都能被立即響應(yīng) 當(dāng)存在下列情況之一時(shí) 中斷響應(yīng)被封鎖 a cpu正處在為一個(gè)同級(jí)或高級(jí)的中斷服務(wù)中 b 查詢中斷請(qǐng)求的機(jī)器周期不是當(dāng)前指令的最后一個(gè)機(jī)器周期 即當(dāng)前指令完成前 不會(huì)響應(yīng)任何中斷請(qǐng)求 c 當(dāng)前指令是返回指令 ret retl 或訪問ie ip的指令 mcs 5l中斷系統(tǒng)規(guī)定 在執(zhí)行完這些指令之后 還應(yīng)再繼續(xù)執(zhí)行一條指令 然后才能響應(yīng)中斷 以上三個(gè)條件稱為中斷封鎖條件 20 3 中斷響應(yīng)過程 如果滿足中斷響應(yīng)條件且不存在中斷封鎖情況 則cpu進(jìn)入中斷響應(yīng)周期 完成以下工作 a 將響應(yīng)的優(yōu)先級(jí)狀態(tài)觸發(fā)器置1 b 由硬件清除相應(yīng)的中斷請(qǐng)求標(biāo)志位 tfx iex 但串行中斷標(biāo)志位必須手動(dòng)清除 c 執(zhí)行一條由硬件生成的長(zhǎng)調(diào)用指令lcall 其格式為lcalladdrl6 這里的addrl6就是程序存儲(chǔ)器中相應(yīng)中斷區(qū)的入口地址 該指令將自動(dòng)把斷點(diǎn)地址 當(dāng)前pc值 壓入堆棧保護(hù)起來 然后將對(duì)應(yīng)的中斷入口地址裝入pc 使程序轉(zhuǎn)向該中斷入口地址 去執(zhí)行中斷服務(wù)程序 注意 中斷服務(wù)程序入口地址僅間隔8個(gè)字節(jié) 因此通常在這些入口地址處存放一條無條件轉(zhuǎn)移指令 以控制程序轉(zhuǎn)到用戶安排好的中斷服務(wù)程序地址去執(zhí)行 21 4 中斷響應(yīng)時(shí)間 從中斷請(qǐng)求產(chǎn)生到cpu轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序的入口地址所需的時(shí)間 1 基本響應(yīng)時(shí)間 3個(gè)機(jī)器周期 1 查詢中斷標(biāo)志 1個(gè)機(jī)器周期 2 轉(zhuǎn)去執(zhí)行中斷服務(wù)程序 2個(gè)機(jī)器周期 2 額外的處理時(shí)間 0 5個(gè)機(jī)器周期 reti指令 2個(gè)機(jī)器周期 mul或div指令 4個(gè)機(jī)器周期 b 最長(zhǎng)響應(yīng)時(shí)間為8個(gè)機(jī)器周期查詢中斷標(biāo)志位時(shí) 剛好開始執(zhí)行 ret retl 或訪問ie ip的指令 最長(zhǎng)需要2個(gè)機(jī)器周期 單片機(jī)要求必須再繼續(xù)執(zhí)行一條指令 然后才能響應(yīng)中斷 若再執(zhí)行的最長(zhǎng)是4個(gè)機(jī)器周期的指令 mulab 再加上執(zhí)行l(wèi)call的2個(gè)機(jī)器周期 總共是8個(gè)機(jī)器周期 a mcs 51單片機(jī)所需最短響應(yīng)時(shí)間為3個(gè)機(jī)器周期 中斷請(qǐng)求標(biāo)志位請(qǐng)求占1個(gè)機(jī)器周期 每個(gè)機(jī)器周期的s5p2期間查詢中斷標(biāo)志位 若此時(shí)恰好是正在執(zhí)行指令的最后一個(gè)機(jī)器周期 中斷立即會(huì)在該機(jī)器周期結(jié)束后被響應(yīng) 硬件自動(dòng)產(chǎn)生lcall指令 耗費(fèi)2個(gè)機(jī)器周期 因此總共3個(gè)機(jī)器周期 22 結(jié)論 一般的中斷響應(yīng)時(shí)間都是3 8個(gè)機(jī)器周期 但是如果出現(xiàn)同級(jí)或是高級(jí)中斷正在響應(yīng)或是服務(wù)中 則響應(yīng)時(shí)間無法計(jì)算 一般應(yīng)用中 中斷響應(yīng)時(shí)間無需計(jì)算 只有在精確定時(shí)的應(yīng)用場(chǎng)合 才需要計(jì)入中斷響應(yīng)時(shí)間 保證定時(shí)的精確 23 三中斷服務(wù)程序中斷都是在運(yùn)行主程序時(shí)發(fā)生的 是主程序的隨機(jī)事件 是否允許發(fā)生以及如何發(fā)生 都應(yīng)該在主程序中預(yù)先設(shè)置 這就是中斷初始化 中斷服務(wù)程序 從入口地址開始執(zhí)行一直到返回指令reti為止 需注意的問題 2 開中斷和關(guān)中斷a 在中斷處理程序中 關(guān)中斷 禁止響應(yīng)其他一切中斷 無中斷嵌套b 要保持中斷嵌套 就要分別在現(xiàn)場(chǎng)保護(hù)和現(xiàn)場(chǎng)恢復(fù)前后 加上關(guān)中斷和開中斷 避免現(xiàn)場(chǎng)被破壞 1 現(xiàn)場(chǎng)保護(hù)和現(xiàn)場(chǎng)恢復(fù)所謂現(xiàn)場(chǎng) 指中斷時(shí)刻 單片機(jī)存儲(chǔ)單元中的數(shù)據(jù)或狀態(tài) 一定是主程序和中斷程序都用到的且不能被修改的存儲(chǔ)單元 現(xiàn)場(chǎng)保護(hù) 位于中斷處理程序首部 push操作數(shù)現(xiàn)場(chǎng)恢復(fù) 位于中斷處理程序尾部 pop操作數(shù) 24 org0000hljmpmainorg0013hljmpexint1org0050hexint1 clrea 關(guān)中斷pushaccpushpsw 現(xiàn)場(chǎng)保護(hù)setbea 開中斷中斷服務(wù)程序clrea 關(guān)中斷poppswpopacc 現(xiàn)場(chǎng)恢復(fù)setbea 開中斷reti 中斷返回org0100hmain 25 3 中斷返回中斷處理程序后最后一條指令必須是中斷返回指令reti 執(zhí)行該指令時(shí) a 將 優(yōu)先級(jí)狀態(tài)觸發(fā)器 復(fù)位為0 b 從堆棧棧頂彈出斷點(diǎn)地址 裝入pc 從而返回主程序 org0000hljmpmainorg0050hmain lcallsub sjmp sub reti 能正確運(yùn)行嗎 org0000hljmpmainorg0003hljmpsubmain sjmp sub ret 能正確運(yùn)行嗎 26 中斷服務(wù)程序與子程序調(diào)用的區(qū)別 27 四 中斷請(qǐng)求的撤消 中斷響應(yīng)后 tcon和scon中的中斷請(qǐng)求標(biāo)志應(yīng)該及時(shí)清除 否則就意味著中斷請(qǐng)求繼續(xù)存在 處理不當(dāng) 會(huì)造成中斷的重復(fù)查詢和響應(yīng) 因此就存在一個(gè)中斷請(qǐng)求的撤消的問題 負(fù)脈沖方式外部中斷請(qǐng)求的撤消 兩項(xiàng)內(nèi)容 a 外中斷標(biāo)志位iex清 0 中斷響應(yīng)后 硬件自動(dòng)把標(biāo)志位iex清 0 b 外中斷請(qǐng)求信號(hào)的撤消 對(duì)于脈沖方式 脈沖信號(hào)過后就消失 因此 負(fù)脈沖方式外部中斷請(qǐng)求的撤消是自動(dòng)的 定時(shí)中斷請(qǐng)求的撤消 一項(xiàng)內(nèi)容 定時(shí)溢出標(biāo)志位tfx清 0 中斷響應(yīng)后 硬件自動(dòng)把標(biāo)志位tfx清 0 即定時(shí)中斷請(qǐng)求的撤消是自動(dòng)的 28 串行中斷軟件撤消 一項(xiàng)內(nèi)容 標(biāo)志位清 0 中斷響應(yīng)后 需要先分別測(cè)試ti和ri的狀態(tài) 只有一個(gè)串行中斷入口地址 判斷完是接收操作還是發(fā)送操作后 再軟件清 0 低電平方式外部中斷請(qǐng)求的撤消 電平方式外部中斷 中斷標(biāo)志的撤消是自動(dòng)的 但中斷請(qǐng)求信號(hào)的低電平可能繼續(xù)存在 在以后的機(jī)器周期采樣時(shí) 又會(huì)把清 0 的iex標(biāo)志位置 1 因此其中斷請(qǐng)求撤消也分為兩項(xiàng)內(nèi)容 a 外中斷標(biāo)志位iex清 0 中斷響應(yīng)后 硬件自動(dòng)把標(biāo)志位iex清 0 b 外中斷請(qǐng)求信號(hào)的撤消 把中斷信號(hào)引腳從低電平強(qiáng)制改為高 為此需要增加硬件電路和軟件程序 29 第三節(jié)中斷系統(tǒng)的應(yīng)用 中斷控制就是對(duì)4個(gè)與中斷有關(guān)的專用寄存器tcon scon ie和ip進(jìn)行管理和控制 管理和控制的項(xiàng)目有 1 cpu中斷的開放與關(guān)閉 2 某中斷源中斷請(qǐng)求的允許與禁止 3 各中斷源優(yōu)先級(jí)別的設(shè)定 4 外部中斷請(qǐng)求的觸發(fā)方式 中斷管理與控制程序一般包含在主程序當(dāng)中 在中斷響應(yīng)過程中 斷點(diǎn)的保護(hù)是由硬件電路來實(shí)現(xiàn)的 用戶在編寫中斷服務(wù)程序時(shí) 主要需考慮現(xiàn)場(chǎng)的保護(hù)與恢復(fù) 當(dāng)存在中斷嵌套時(shí) 在保護(hù)和恢復(fù)現(xiàn)場(chǎng)前要關(guān)中斷 在保護(hù)和恢復(fù)現(xiàn)場(chǎng)后要根據(jù)需要開中斷 30 中斷服務(wù)程序的一般格式 clrea 關(guān)中斷pushpsw pusha 保護(hù)現(xiàn)場(chǎng) setbea 開中斷 中斷服務(wù)程序 clrea 關(guān)中斷 popa 恢復(fù)現(xiàn)場(chǎng)poppsw setbea 開中斷reti 返回 31 例 硬件電路如圖 通過8051單片機(jī)的p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論