第五章中斷系統(tǒng)級(jí)定時(shí)、計(jì)數(shù)器_第1頁(yè)
第五章中斷系統(tǒng)級(jí)定時(shí)、計(jì)數(shù)器_第2頁(yè)
第五章中斷系統(tǒng)級(jí)定時(shí)、計(jì)數(shù)器_第3頁(yè)
第五章中斷系統(tǒng)級(jí)定時(shí)、計(jì)數(shù)器_第4頁(yè)
第五章中斷系統(tǒng)級(jí)定時(shí)、計(jì)數(shù)器_第5頁(yè)
已閱讀5頁(yè),還剩124頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第五章中斷系統(tǒng)及定時(shí)/計(jì)數(shù)器微機(jī)的輸入/輸出方式5.180C51中斷系統(tǒng)結(jié)構(gòu)及中斷控制5.2中斷處理過(guò)程5.3定時(shí)/計(jì)數(shù)器及應(yīng)用思考題微機(jī)的輸入/輸出方式一、無(wú)條件傳送方式二、查詢(xún)傳送方式三、直接存儲(chǔ)器存取(DMA)方式四、中斷傳送方式CPU總是認(rèn)為外設(shè)在任何時(shí)刻都處于“準(zhǔn)備好”的狀態(tài)。這種傳送方式不需要交換狀態(tài)信息,只需在程序中加入訪(fǎng)問(wèn)外設(shè)的指令,數(shù)據(jù)傳送便可以實(shí)現(xiàn)。此種方法很少使用。微機(jī)的輸入/輸出方式一、無(wú)條件傳送方式二、查詢(xún)傳送方式三、直接存儲(chǔ)器存取(DMA)方式四、中斷傳送方式什么是查詢(xún)傳送方式查詢(xún)方式程序流程圖查詢(xún)方式的過(guò)程查詢(xún)方式的特點(diǎn)在輸入時(shí),需要查詢(xún)外設(shè)的輸入數(shù)據(jù)是否準(zhǔn)備好;在輸出時(shí),需要查詢(xún)外設(shè)是否把上一次CPU輸出的數(shù)據(jù)處理完畢。查詢(xún)傳送方式:通過(guò)查詢(xún)外設(shè)的狀態(tài)信息,確信外設(shè)已處于“準(zhǔn)備好”,計(jì)算機(jī)才發(fā)出訪(fǎng)問(wèn)外設(shè)的指令,實(shí)現(xiàn)數(shù)據(jù)的傳送。狀態(tài)信息:一般為1位二進(jìn)制碼。例,用D觸發(fā)器實(shí)現(xiàn)。微機(jī)的輸入/輸出方式一、無(wú)條件傳送方式二、查詢(xún)傳送方式三、直接存儲(chǔ)器存?。―MA)方式四、中斷傳送方式什么是查詢(xún)傳送方式查詢(xún)方式程序流程圖查詢(xún)方式的過(guò)程查詢(xún)方式的特點(diǎn)輸入狀態(tài)信息準(zhǔn)備好?傳送數(shù)據(jù)YN微機(jī)的輸入/輸出方式一、無(wú)條件傳送方式二、查詢(xún)傳送方式三、直接存儲(chǔ)器存取(DMA)方式四、中斷傳送方式什么是查詢(xún)傳送方式查詢(xún)方式程序流程圖查詢(xún)方式的過(guò)程查詢(xún)方式的特點(diǎn)查詢(xún)——等待——數(shù)據(jù)傳送,待到下一次數(shù)據(jù)傳送時(shí)則重復(fù)上述過(guò)程。也可用軟件插入固定延時(shí)的方法完成:?jiǎn)?dòng)外設(shè)設(shè)備傳送數(shù)據(jù)延遲微機(jī)的輸入/輸出方式一、無(wú)條件傳送方式二、查詢(xún)傳送方式三、直接存儲(chǔ)器存?。―MA)方式四、中斷傳送方式什么是查詢(xún)傳送方式查詢(xún)方式程序流程圖查詢(xún)方式的過(guò)程查詢(xún)方式的特點(diǎn)優(yōu)點(diǎn):通用性好,可以用于各類(lèi)外設(shè)和CPU間的數(shù)據(jù)傳送。缺點(diǎn):CPU在完成一次數(shù)據(jù)傳送后要等待很長(zhǎng)時(shí)間才能進(jìn)行下一次的傳送。在等待過(guò)程中,CPU不能進(jìn)行其他操作,所以效率比較低。微機(jī)的輸入/輸出方式一、無(wú)條件傳送方式二、查詢(xún)傳送方式三、直接存儲(chǔ)器存?。―MA)方式四、中斷傳送方式DMA:DirectMemoryAccessCPU讓出數(shù)據(jù)總線(xiàn)(懸浮狀態(tài)),使外設(shè)和存儲(chǔ)器之間直接傳送(不通過(guò)CPU)數(shù)據(jù)的方式。適用于外設(shè)和存儲(chǔ)器之間有大量的數(shù)據(jù)需要傳送及外設(shè)工作速度很快的情況。微機(jī)的輸入/輸出方式一、無(wú)條件傳送方式二、查詢(xún)傳送方式三、直接存儲(chǔ)器存?。―MA)方式四、中斷傳送方式當(dāng)CPU正在處理某事件的時(shí)候,外部發(fā)生的某一事件請(qǐng)求CPU迅速去處理,于是CPU暫時(shí)中止當(dāng)前的工作,轉(zhuǎn)去處理所發(fā)生的事件。中斷服務(wù)處理完該事件后,再返回到原來(lái)被中止的地方繼續(xù)原來(lái)的工作,這樣的過(guò)程稱(chēng)為中斷。中斷流程如圖所示。主程序響應(yīng)中斷請(qǐng)求中斷服務(wù)程序返回主程序繼續(xù)執(zhí)行主程序斷點(diǎn)中斷請(qǐng)求5.180C51中斷系統(tǒng)結(jié)構(gòu)及中斷控制中斷的概念一、80C51中斷系統(tǒng)結(jié)構(gòu)二、80C51中斷源三、中斷控制1、中斷系統(tǒng)2、中斷源3、中斷請(qǐng)求4、中斷響應(yīng)過(guò)程5、中斷服務(wù)6、中斷返回7、中斷方式的特點(diǎn)實(shí)現(xiàn)中斷功能的部件稱(chēng)為中斷系統(tǒng),又稱(chēng)中斷機(jī)構(gòu)。中斷的概念1、中斷系統(tǒng)2、中斷源3、中斷請(qǐng)求4、中斷響應(yīng)過(guò)程5、中斷服務(wù)6、中斷返回7、中斷方式的特點(diǎn)產(chǎn)生中斷的請(qǐng)求源稱(chēng)為中斷源。中斷的概念1、中斷系統(tǒng)2、中斷源3、中斷請(qǐng)求4、中斷響應(yīng)過(guò)程5、中斷服務(wù)6、中斷返回7、中斷方式的特點(diǎn)中斷源向CPU提出的處理請(qǐng)求,稱(chēng)為中斷請(qǐng)求或中斷申請(qǐng)。中斷的概念1、中斷系統(tǒng)2、中斷源3、中斷請(qǐng)求4、中斷響應(yīng)過(guò)程5、中斷服務(wù)6、中斷返回7、中斷方式的特點(diǎn)CPU暫時(shí)中止自身的事物,轉(zhuǎn)去處理事件的過(guò)程,稱(chēng)為CPU的中斷響應(yīng)過(guò)程。中斷的概念1、中斷系統(tǒng)2、中斷源3、中斷請(qǐng)求4、中斷響應(yīng)過(guò)程5、中斷服務(wù)6、中斷返回7、中斷方式的特點(diǎn)對(duì)事件的整個(gè)處理過(guò)程,稱(chēng)為中斷服務(wù)(或中斷處理)。中斷的概念1、中斷系統(tǒng)2、中斷源3、中斷請(qǐng)求4、中斷響應(yīng)過(guò)程5、中斷服務(wù)6、中斷返回7、中斷方式的特點(diǎn)中斷處理完畢,在返回到原來(lái)被中止的地方,稱(chēng)為中斷返回。中斷的概念中斷的概念1、中斷系統(tǒng)2、中斷源3、中斷請(qǐng)求4、中斷響應(yīng)過(guò)程5、中斷服務(wù)6、中斷返回7、中斷方式的特點(diǎn)中斷方式消除了CPU在查詢(xún)方式中的等待現(xiàn)象,大大提高了CPU的工作效率。將從現(xiàn)場(chǎng)采集的數(shù)據(jù)通過(guò)中斷方式及時(shí)傳送給CPU,經(jīng)過(guò)處理后可立即作出反應(yīng),實(shí)現(xiàn)現(xiàn)場(chǎng)控制。采用查詢(xún)方式很難做到及時(shí)采集,實(shí)時(shí)控制。一、80C51中斷系統(tǒng)結(jié)構(gòu)INT0定時(shí)器1串行口外設(shè)外設(shè)0INT10IE0IE1TF0TF1定時(shí)器0TCONRITISCONEX0ET0EX1ET1ES&IEEAPX001PT001PX101PT101PS01IP0003H000BH0013H001BH0023H0003H000BH0013H001BH0023HPC高低中斷源中斷技術(shù)實(shí)現(xiàn)的功能分時(shí)操作實(shí)時(shí)處理故障處理計(jì)算機(jī)的中斷系統(tǒng)可以使CPU與外設(shè)同時(shí)工作。CPU在啟動(dòng)外設(shè)后,便繼續(xù)執(zhí)行主程序;而外設(shè)被啟動(dòng)后,開(kāi)始進(jìn)行準(zhǔn)備工作。當(dāng)外設(shè)準(zhǔn)備就緒時(shí),就向CPU發(fā)出中斷請(qǐng)求,CPU響應(yīng)該中斷請(qǐng)求并為其服務(wù)完畢后,返回原來(lái)的斷點(diǎn)處繼續(xù)運(yùn)行主程序。外設(shè)在得到服務(wù)后,也繼續(xù)進(jìn)行自己的工作。因此,CPU可以使多個(gè)外設(shè)同時(shí)工作,并分時(shí)為各外設(shè)提供服務(wù),從而提高了CPU的利用率和輸入/輸出的速度。中斷技術(shù)現(xiàn)的功能分時(shí)操作實(shí)時(shí)處理故障處理當(dāng)計(jì)算機(jī)用于實(shí)時(shí)控制時(shí),請(qǐng)求CPU提供服務(wù)是隨機(jī)發(fā)生的。有了中斷系統(tǒng),CPU就可以立即響應(yīng)并加以處理。中斷技術(shù)實(shí)現(xiàn)的功能分時(shí)操作實(shí)時(shí)處理故障處理計(jì)算機(jī)在運(yùn)行時(shí)往往會(huì)出現(xiàn)一些故障,如斷電、存儲(chǔ)器奇偶校驗(yàn)出錯(cuò)、運(yùn)算溢出等。有了中斷系統(tǒng),當(dāng)出現(xiàn)上述情況時(shí),CPU可及時(shí)轉(zhuǎn)去執(zhí)行故障處理程序,自行處理故障而不必停機(jī)。二、80C51中斷源1、INT0——外部中斷0請(qǐng)求,低電平或下降沿有效。通過(guò)P3.2引腳輸入。2、INT1——外部中斷1請(qǐng)求,低電平或下降沿有效。通過(guò)P3.3引腳輸入。3、T0——定時(shí)器/計(jì)數(shù)器0溢出中斷請(qǐng)求。4、T1——定時(shí)器/計(jì)數(shù)器1溢出中斷請(qǐng)求。5、TX/RX——串行口中斷請(qǐng)求。當(dāng)串行口完成一幀數(shù)據(jù)的發(fā)送或接收時(shí),便請(qǐng)求中斷。I/O外設(shè)硬件故障實(shí)時(shí)時(shí)鐘為調(diào)試程序而設(shè)定的中斷源通常情況的中斷源三、中斷控制中斷請(qǐng)求標(biāo)志中斷允許控制中斷優(yōu)先級(jí)控制1、定時(shí)器控制寄存器TCON中的中斷標(biāo)志位TCON為定時(shí)器/計(jì)數(shù)器T0和T1的控制器,同時(shí)也鎖存T0和T1的溢出中斷標(biāo)志及外部中斷0和1的中斷標(biāo)志等。與中斷有關(guān)的位如圖所示。TF1TF0IE1IT1IE0IT0TCON(88H)8FH8EH8DH8CH8BH8AH89H88H中斷請(qǐng)求標(biāo)志——存在于TCON、SCON中TF1:定時(shí)器/計(jì)數(shù)器T1溢出中斷請(qǐng)求標(biāo)志位。當(dāng)啟動(dòng)T1計(jì)數(shù)后,T1從初值開(kāi)始加1計(jì)數(shù),計(jì)數(shù)器最高位產(chǎn)生溢出時(shí),由硬件使TF1置1,并向CPU發(fā)出中斷請(qǐng)求。當(dāng)CPU響應(yīng)中斷時(shí),硬件將自動(dòng)對(duì)TF1清0。1、定時(shí)器控制寄存器TCON中的中斷標(biāo)志位TCON為定時(shí)器/計(jì)數(shù)器T0和T1的控制器,同時(shí)也鎖存T0和T1的溢出中斷標(biāo)志及外部中斷0和1的中斷標(biāo)志等。與中斷有關(guān)的位如圖所示。TF1TF0IE1IT1IE0IT0TCON(88H)8FH8EH8DH8CH8BH8AH89H88H中斷請(qǐng)求標(biāo)志——存在于TCON、SCON中TF0:定時(shí)器/計(jì)數(shù)器T0溢出中斷請(qǐng)求標(biāo)志位。含義與TF1類(lèi)同。1、定時(shí)器控制寄存器TCON中的中斷標(biāo)志位TCON為定時(shí)器/計(jì)數(shù)器T0和T1的控制器,同時(shí)也鎖存T0和T1的溢出中斷標(biāo)志及外部中斷0和1的中斷標(biāo)志等。與中斷有關(guān)的位如圖所示。TF1TF0IE1IT1IE0IT0TCON(88H)8FH8EH8DH8CH8BH8AH89H88H中斷請(qǐng)求標(biāo)志——存在于TCON、SCON中IE1:外部中斷1的中斷請(qǐng)求標(biāo)志。INT1(P3.3)。當(dāng)檢測(cè)到外部中斷引腳1

上存在有效的中斷請(qǐng)求信號(hào)時(shí),由硬件使IE1置1。1、定時(shí)器控制寄存器TCON中的中斷標(biāo)志位TCON為定時(shí)器/計(jì)數(shù)器T0和T1的控制器,同時(shí)也鎖存T0和T1的溢出中斷標(biāo)志及外部中斷0和1的中斷標(biāo)志等。與中斷有關(guān)的位如圖所示。TF1TF0IE1IT1IE0IT0TCON(88H)8FH8EH8DH8CH8BH8AH89H88H中斷請(qǐng)求標(biāo)志——存在于TCON、SCON中IE0:外部中斷0的中斷請(qǐng)求標(biāo)志。INT0(P3.2)。其含義與IE1類(lèi)同。1、定時(shí)器控制寄存器TCON中的中斷標(biāo)志位TCON為定時(shí)器/計(jì)數(shù)器T0和T1的控制器,同時(shí)也鎖存T0和T1的溢出中斷標(biāo)志及外部中斷0和1的中斷標(biāo)志等。與中斷有關(guān)的位如圖所示。TF1TF0IE1IT1IE0IT0TCON(88H)8FH8EH8DH8CH8BH8AH89H88H中斷請(qǐng)求標(biāo)志——存在于TCON、SCON中IT1:外部中斷1的中斷觸發(fā)方式控制位。

IT1=0時(shí),外部中斷1為電平觸發(fā)方式。

CPU在每一個(gè)機(jī)器周期S5P2期間采樣外部中斷請(qǐng)求引腳的輸入電平。若外部中斷1請(qǐng)求為低電平,則使IE1置1;若為高電平,則使IE1清0。

IT1=1時(shí),外部中斷1為邊沿觸發(fā)方式。

CPU在每一個(gè)機(jī)器周期S5P2期間采樣外部中斷請(qǐng)求引腳的輸入電平。如果在相繼的兩個(gè)機(jī)器周期采樣過(guò)程中,一個(gè)機(jī)器周期采樣到外部中斷1請(qǐng)求引腳為高電平,接著的下一個(gè)機(jī)器周期采樣到為低電平,則使IE1置1。直到CPU響應(yīng)該中斷時(shí),才由硬件使IE1清0。1、定時(shí)器控制寄存器TCON中的中斷標(biāo)志位TCON為定時(shí)器/計(jì)數(shù)器T0和T1的控制器,同時(shí)也鎖存T0和T1的溢出中斷標(biāo)志及外部中斷0和1的中斷標(biāo)志等。與中斷有關(guān)的位如圖所示。TF1TF0IE1IT1IE0IT0TCON(88H)8FH8EH8DH8CH8BH8AH89H88H中斷請(qǐng)求標(biāo)志——存在于TCON、SCON中IT0:外部中斷0的中斷觸發(fā)方式控制位。其含義與IT1類(lèi)同。

2、串行口控制寄存器SCON中的中斷標(biāo)志位SCON為串行口控制寄存器,其低2位鎖存串行口的接收中斷和發(fā)送中斷標(biāo)志RI和TI。SCON中TI和RI的格式如圖所示。TIRI

SCON(98H)9FH9EH9DH9CH9BH9AH99H98H中斷請(qǐng)求標(biāo)志——存在于TCON、SCON中TI:串行口發(fā)送中斷請(qǐng)求標(biāo)志。

CPU將一個(gè)數(shù)據(jù)寫(xiě)入發(fā)送緩沖器SBUF時(shí),就啟動(dòng)發(fā)送。每發(fā)送完一幀串行數(shù)據(jù)后,硬件置位TI。但CPU響應(yīng)中斷時(shí),并不清除TI,必須在中斷服務(wù)程序中由軟件對(duì)TI清0。2、串行口控制寄存器SCON中的中斷標(biāo)志位SCON為串行口控制寄存器,其低2位鎖存串行口的接收中斷和發(fā)送中斷標(biāo)志RI和TI。SCON中TI和RI的格式如圖所示。TIRI

SCON(98H)9FH9EH9DH9CH9BH9AH99H98H中斷請(qǐng)求標(biāo)志——存在于TCON、SCON中RI:串行口接收中斷請(qǐng)求標(biāo)志。在串行口允許接收時(shí),每接收完一個(gè)串行幀,硬件置位RI。同樣,CPU響應(yīng)中斷時(shí)不會(huì)清除RI,必須在中斷服務(wù)程序中由軟件對(duì)RI清0。中斷允許控制中斷允許寄存器IE的格式:EAESET1EX1ET0EX0

IE(A8H)AFHAEHADHACHABHAAHA9HA8HEA—中斷允許總控制位。

EA=0,屏蔽所有的中斷請(qǐng)求;

EA=1,CPU開(kāi)放中斷。對(duì)各中斷源的中斷請(qǐng)求是否允許,還要取決于各中斷源的中斷允許控制位的狀態(tài)。這就是所謂的兩級(jí)控制。中斷允許控制中斷允許寄存器IE的格式:EAESET1EX1ET0EX0

IE(A8H)AFHAEHADHACHABHAAHA9HA8HES—串行口中斷允許位。

ES=0,禁止串行口中斷;

ES=1,允許串行口中斷。中斷允許控制中斷允許寄存器IE的格式:EAESET1EX1ET0EX0

IE(A8H)AFHAEHADHACHABHAAHA9HA8HET1—定時(shí)器/計(jì)數(shù)器T1的溢出中斷允許位。

ET1=0,禁止T1中斷;

ET1=1,允許T1中斷。中斷允許控制中斷允許寄存器IE的格式:EAESET1EX1ET0EX0

IE(A8H)AFHAEHADHACHABHAAHA9HA8HEX1—外部中斷1的溢出中斷允許位。

EX1=0,禁止外部中斷1中斷;

EX1=1,允許外部中斷1中斷。中斷允許控制中斷允許寄存器IE的格式:EAESET1EX1ET0EX0

IE(A8H)AFHAEHADHACHABHAAHA9HA8HET0—定時(shí)器/計(jì)數(shù)器T0的溢出中斷允許位。

ET0=0,禁止T0中斷;

ET0=1,允許T0中斷。中斷允許控制中斷允許寄存器IE的格式:EAESET1EX1ET0EX0

IE(A8H)AFHAEHADHACHABHAAHA9HA8HEX0—外部中斷0的溢出中斷允許位。

EX0=0,禁止外部中斷0中斷;

EX0=1,允許外部中斷0中斷。例:假設(shè)允許片內(nèi)定時(shí)器/計(jì)數(shù)器中斷,禁止其他中斷。試根據(jù)假設(shè)條件設(shè)置IE的相應(yīng)值。解:(IE)=10001010B=8AH(a)用字節(jié)操作指令MOVIE,#8AH;或MOVA8H,#8AH;(b)用位操作指令SETBET0;定時(shí)器/計(jì)數(shù)器0允許中斷SETBET1;定時(shí)器/計(jì)數(shù)器1允許中斷SETBEA;CPU開(kāi)中斷80C51有兩個(gè)中斷優(yōu)先級(jí)。每個(gè)中斷請(qǐng)求源均可編程為高優(yōu)先級(jí)中斷或低優(yōu)先級(jí)中斷。中斷系統(tǒng)中有兩個(gè)不可尋址的“優(yōu)先級(jí)生效”觸發(fā)器,分別指出CPU正在執(zhí)行的高、低優(yōu)先級(jí)的中斷服務(wù)程序。當(dāng)其為1時(shí)則分別屏蔽所有的中斷請(qǐng)求。中斷優(yōu)先級(jí)控制中斷優(yōu)先級(jí)寄存器IP的格式:PSPT1PX1PT0PX0IP(B8H)

BCHBBHBAHB9HB8HPS—串行口中斷優(yōu)先級(jí)控制位PT1—定時(shí)器/計(jì)數(shù)器T1中斷優(yōu)先級(jí)控制位PX1—外部中斷1中斷優(yōu)先級(jí)控制位PT0—定時(shí)器/計(jì)數(shù)器T0中斷優(yōu)先級(jí)控制位PX0—外部中斷0中斷優(yōu)先級(jí)控制位若某控制位為1,則相應(yīng)的中斷源規(guī)定為高級(jí)中斷;反之,為0,則相應(yīng)的中斷源規(guī)定為低級(jí)中斷。中斷優(yōu)先級(jí)排列順序:當(dāng)同時(shí)接收到幾個(gè)同一優(yōu)先級(jí)的中斷請(qǐng)求時(shí),響應(yīng)哪個(gè)中斷源則取決于內(nèi)部硬件查詢(xún)順序。其優(yōu)先級(jí)順序排列如圖所示。中斷源 同級(jí)內(nèi)的中斷優(yōu)先級(jí)外部中斷0中斷

高級(jí)定時(shí)器/計(jì)數(shù)器T0溢出中斷外部中斷1定時(shí)器/計(jì)數(shù)器T1溢出中斷串行口中斷

低級(jí)中斷優(yōu)先級(jí)控制實(shí)現(xiàn)的功能:(1)按內(nèi)部查詢(xún)順序排隊(duì)當(dāng)數(shù)個(gè)中斷源同時(shí)向CPU發(fā)出中斷請(qǐng)求時(shí),CPU根據(jù)設(shè)計(jì)者事先確定的中斷源順序號(hào)的次序,依次響應(yīng)其中斷請(qǐng)求。(2)實(shí)現(xiàn)中斷嵌套當(dāng)CPU正在處理一個(gè)中斷請(qǐng)求時(shí),又出現(xiàn)了另一個(gè)優(yōu)先級(jí)比它高的中斷請(qǐng)求,這時(shí),CPU就暫時(shí)中止執(zhí)行對(duì)原來(lái)優(yōu)先級(jí)較低的中斷源的服務(wù)程序,保護(hù)當(dāng)前斷點(diǎn),轉(zhuǎn)去響應(yīng)優(yōu)先級(jí)更高的中斷請(qǐng)求,并為它服務(wù)。待服務(wù)結(jié)束,再繼續(xù)執(zhí)行原來(lái)較低級(jí)的中斷服務(wù)程序。該過(guò)程稱(chēng)為中斷嵌套。該中斷系統(tǒng)稱(chēng)為多級(jí)中斷系統(tǒng)。二級(jí)中斷嵌套的中斷過(guò)程如圖所示。CPU在執(zhí)行主程序低級(jí)中斷請(qǐng)求響應(yīng)低級(jí)中斷請(qǐng)求CPU執(zhí)行低級(jí)中斷服務(wù)程序高級(jí)中斷請(qǐng)求響應(yīng)高級(jí)中斷請(qǐng)求CPU執(zhí)行高級(jí)中斷服務(wù)程序返回低級(jí)中斷程序返回主程序例:設(shè)80C51的片外中斷為高優(yōu)先級(jí),片內(nèi)中斷為低優(yōu)先級(jí)。設(shè)置IP相應(yīng)值。解:(IP)=00000101B=05H(a)用字節(jié)操作指令

MOVIP,#05H;或MOV0B8H,#05H;(b)用為操作指令

SETBPX0

SETBPX1

CLRPS

CLRPT0

CLRPT15.2中斷處理過(guò)程一、中斷處理過(guò)程的三個(gè)階段二、中斷響應(yīng)三、中斷處理四、中斷返回五、中斷程序舉例一、中斷處理過(guò)程的三個(gè)階段中斷處理過(guò)程可分為:中斷響應(yīng)中斷處理中斷返回

中斷處理的大致流程如右圖所示。保護(hù)現(xiàn)場(chǎng)為外設(shè)服務(wù)恢復(fù)現(xiàn)場(chǎng)主程序NKN+mK+1返回中斷處理二、中斷響應(yīng)中斷響應(yīng)條件中斷響應(yīng)操作過(guò)程中斷響應(yīng)時(shí)間①有中斷源發(fā)出中斷請(qǐng)求。②中斷總允許位EA=1,即CPU中斷。③申請(qǐng)中斷的中斷源的中斷允許位為1,即中斷沒(méi)有被屏蔽。④無(wú)同級(jí)或更高級(jí)中斷正在被服務(wù)。⑤當(dāng)前的指令周期已經(jīng)結(jié)束。⑥若現(xiàn)行指令為RETI或是訪(fǎng)問(wèn)IE或IP指令時(shí),該指令以及緊接著的另一條指令已執(zhí)行完。二、中斷響應(yīng)中斷響應(yīng)條件中斷響應(yīng)操作過(guò)程中斷響應(yīng)時(shí)間⑴把當(dāng)前PC值壓入堆棧,保護(hù)斷點(diǎn)。⑵將相應(yīng)的中斷服務(wù)程序的入口地址送入PC。⑶對(duì)有些中斷源,CPU會(huì)自動(dòng)清除中斷標(biāo)志。⑷執(zhí)行中斷服務(wù)程序。⑸執(zhí)行到返回指令RETI,中斷服務(wù)程序結(jié)束,將堆棧內(nèi)容彈出到PC,返回到原來(lái)斷點(diǎn)繼續(xù)執(zhí)行。中斷源中斷矢量外部中斷0(INT0)0003H定時(shí)器T0中斷000BH外部中斷1(INT1)0013H定時(shí)器T1中斷001BH串行口中斷0023H二、中斷響應(yīng)中斷響應(yīng)條件中斷響應(yīng)操作過(guò)程中斷響應(yīng)時(shí)間CPU不是在任何情況下都對(duì)中斷請(qǐng)求予以響應(yīng),而且不同的情況下對(duì)中斷響應(yīng)的時(shí)間是不同的。對(duì)于順利的中斷響應(yīng),其最短的響應(yīng)時(shí)間為3個(gè)機(jī)器周期。對(duì)于受阻的中斷響應(yīng),則響應(yīng)時(shí)間會(huì)更長(zhǎng)一些。若中斷系統(tǒng)只有一個(gè)中斷源,則響應(yīng)時(shí)間為3~8個(gè)機(jī)器周期之間。三、中斷處理什么是中斷處理中斷處理包括的內(nèi)容編寫(xiě)中斷服務(wù)程序時(shí)的注意問(wèn)題CPU響應(yīng)中斷后即轉(zhuǎn)入中斷服務(wù)程序的入口,執(zhí)行中斷服務(wù)程序。從中斷服務(wù)程序的第一條指令開(kāi)始到返回指令為止,這個(gè)過(guò)程稱(chēng)為中斷處理或中斷服務(wù)。三、中斷處理什么是中斷處理中斷處理包括的內(nèi)容編寫(xiě)中斷服務(wù)程序時(shí)的注意問(wèn)題不同的中斷源服務(wù)的內(nèi)容及要求各不相同,其處理過(guò)程也就有所區(qū)別。一般情況,中斷處理包括兩部分內(nèi)容:1、保護(hù)現(xiàn)場(chǎng):如在中斷服務(wù)程序中要用到PSW、工作寄存器和SFR等寄存器時(shí),則在進(jìn)入中斷服務(wù)之前應(yīng)將它們的內(nèi)容保護(hù)起來(lái),在中斷結(jié)束、執(zhí)行RETI指令前應(yīng)恢復(fù)現(xiàn)場(chǎng)。2、為中斷源服務(wù):針對(duì)中斷源的具體要求進(jìn)行相應(yīng)的處理。三、中斷處理什么是中斷處理中斷處理包括的內(nèi)容編寫(xiě)中斷服務(wù)程序時(shí)的注意問(wèn)題①在中斷矢量地址單元處放一條無(wú)條件轉(zhuǎn)移指令,使中斷服務(wù)程序可靈活地安排在64KBROM的任何空間。②在中斷服務(wù)程序中,應(yīng)注意用軟件保護(hù)現(xiàn)場(chǎng),以免中斷返回后丟失原來(lái)寄存器、累加器中的信息。③若要在執(zhí)行當(dāng)前中斷程序時(shí)禁止更高優(yōu)先級(jí)中斷,可以先用軟件關(guān)閉CPU中斷或禁止某中斷源中斷,在中斷返回前再開(kāi)放中斷。四、中斷返回在中斷服務(wù)程序中,最后一條指令必須為中斷返回指令RETI。CPU執(zhí)行該指令時(shí),一方面清除中斷響應(yīng)時(shí)所置位的“優(yōu)先級(jí)生效”觸發(fā)器,另一方面從當(dāng)前棧頂彈出斷點(diǎn)地址送入程序計(jì)數(shù)器PC,從而返回主程序。注意在中斷服務(wù)程序中,PUSH和POP指令必須成對(duì)使用,否則,不能正確返回?cái)帱c(diǎn)。五、中斷程序舉例1、主程序2、中斷服務(wù)程序3、中斷服務(wù)程序舉例1、主程序主程序的起始地址主程序的初始化內(nèi)容80C51系列單片機(jī)復(fù)位后,(PC)=0000H。而0003H~002BH分別為各中斷源的入口地址。編程時(shí)應(yīng)在0000H處寫(xiě)一條跳轉(zhuǎn)指令(一般為長(zhǎng)跳轉(zhuǎn)指令),主程序是以跳轉(zhuǎn)的目標(biāo)地址作為起始地址開(kāi)始編寫(xiě),一般從0030H開(kāi)始,如圖所示。0000HLJMP00H30H0030H主程序1、主程序主程序的起始地址主程序的初始化內(nèi)容初始化:將用到的內(nèi)部部件或擴(kuò)展芯片進(jìn)行初始工作狀態(tài)設(shè)定。單片機(jī)復(fù)位后,特殊功能寄存器IE、IP內(nèi)容均為00H,所以應(yīng)對(duì)IE、IP進(jìn)行初始化編程,以開(kāi)放中斷,允許某些中斷源中斷和設(shè)置中斷優(yōu)先級(jí),若是外中斷,還應(yīng)確定觸發(fā)方式等。例設(shè)引腳P3.2接有一個(gè)開(kāi)關(guān),當(dāng)開(kāi)關(guān)按下并抬起時(shí),產(chǎn)生一次中斷,試對(duì)中斷系統(tǒng)初始化。

MOVSP,#60HMOVIE,#81HSETBIT0

中斷系統(tǒng)初始化舉例例若禁止片內(nèi)2個(gè)定時(shí)器/計(jì)數(shù)器中斷,允許其它中斷源的中斷請(qǐng)求。編寫(xiě)設(shè)置IE的相應(yīng)程序段(1)用位操作指令來(lái)編寫(xiě)如下程序段:SETBES SETBEX1 SETBEX0 CLR

ET0 CLRET1SETBEA(2)用字節(jié)操作指令來(lái)編寫(xiě):MOVIE,#95H或者用:MOV0A8H,#95H;A8H為IE寄存器字節(jié)地址中斷系統(tǒng)初始化舉例例設(shè)置IP寄存器的初始值,使外中斷0和串行中斷請(qǐng)求為高優(yōu)先級(jí),其它中斷請(qǐng)求為低優(yōu)先級(jí)。(1)用位操作指令

SETBPX0 SETBPS

CLRPX1 CLRPT0 CLRPT1(2)用字節(jié)操作指令MOVIP,#11H或:MOV0B8H,#11H;B8H為IP寄存器的字節(jié)地址中斷系統(tǒng)初始化舉例例假設(shè)允許外部中斷0中斷,并設(shè)定它為高級(jí)中斷,其它中斷源為低級(jí)中斷,采用跳沿觸發(fā)方式。

SETBEA;CPU開(kāi)中斷 SETBEX0;允許外中斷0產(chǎn)生中斷 SETBPX0;外中斷0為高級(jí)中斷 SETBIT0;外中斷0為跳沿觸發(fā)方式

中斷系統(tǒng)初始化舉例2、中斷服務(wù)程序中斷服務(wù)程序的起始地址中斷服務(wù)程序編制中的注意事項(xiàng)當(dāng)CPU接收到中斷請(qǐng)求信號(hào)并予以響應(yīng)后,CPU把當(dāng)前的PC內(nèi)容壓入堆棧進(jìn)行保護(hù),然后轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序入口處執(zhí)行。中斷服務(wù)程序的起始地址中斷系統(tǒng)對(duì)五個(gè)中斷源分別規(guī)定了各自的入口地址,但這些入口地址相距很近(8個(gè)字節(jié))。如中斷服務(wù)程序的指令代碼少于8個(gè)字節(jié),則可從規(guī)定的中斷服務(wù)程序入口地址開(kāi)始,直接編寫(xiě)中斷服務(wù)程序;如中斷服務(wù)程序的指令代碼大于8個(gè)字節(jié),則應(yīng)采用與主程序相同的方法,在相應(yīng)的入口處寫(xiě)一條跳轉(zhuǎn)指令,并以跳轉(zhuǎn)指令的目標(biāo)地址作為中斷服務(wù)程序的起始地址進(jìn)行編程。以INT0為例,中斷矢量地址為0003H,中斷服務(wù)程序從0200H開(kāi)始。如圖所示。0003HLJMP02000200H中斷服務(wù)程序中斷服務(wù)程序編制中的注意事項(xiàng)①

視需要確定是否保護(hù)現(xiàn)場(chǎng)。②及時(shí)清除那些不能被硬件自動(dòng)清除的中斷請(qǐng)求標(biāo)志,以免產(chǎn)生錯(cuò)誤的中斷。③中斷服務(wù)程序中的壓棧與彈棧指令必須成對(duì)使用,以確保中斷服務(wù)程序的正確返回。④主程序和中斷服務(wù)程序之間的參數(shù)傳遞與主程序和子程序的參數(shù)傳遞方式相同。例

用中斷實(shí)現(xiàn)如下功能:將30H—60H單元的內(nèi)容送微型打印機(jī)打印。P1.0P1.1P1.2P1.3STBACKBUSY80C51D6D0D1D2D3D4D5P1.4P1.5P1.6P1.7微型打印機(jī)D7P2.0P3.2

ORG0000HLJMPMAINORG0003HLJMPAINT0ORG0030HMAIN:MOVSP,#60HSETBEASETBEX0SETBIT0MOVR0,#30HSETBP2.0CLRP2.0SJMP$ORG0050HAINT0:MOVP1,@R0

INCR0CJNER0,#61H,AINT0RETI3、中斷服務(wù)程序舉例例:用中斷實(shí)現(xiàn)如下功能:2個(gè)開(kāi)關(guān)K1和K2,1個(gè)數(shù)碼管,當(dāng)K1按下時(shí)數(shù)碼管加1,K2按下時(shí)數(shù)碼管減1。P1.0P1.1P1.2P1.380C51P1.4P1.5P1.6P1.7COMabcdefg共陰極LEDK1K2P3.2P3.3+5VAINT0:INCR7CJNER7,#10,AINT01MOVR7,#0AINT01:RETIBINT1:DECR7CJNER7,#0FFH,BINT11MOVR7,#9BINT11:RETITAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

ORG0000HLJMPMAINORG0003HLJMPAINT0ORG0013HLJMPBINT1MAIN:MOVSP,#60HMOVIE,#85HSETBIT0SETBIT1MOVR7,#0UP:MOVA,R7MOVDPTR,#TABMOVCA,@A+DPTRMOVP1,A

SJMPUP3、中斷服務(wù)程序舉例例

外部中斷實(shí)驗(yàn):如圖所示,將P1口的P1.4~P1.7作為輸入位,P1.0~P1.3作為輸出位。要求利用895C1將開(kāi)關(guān)所設(shè)的數(shù)據(jù)讀入單片機(jī)內(nèi),并依次通過(guò)P1.0~P1.3輸出,驅(qū)動(dòng)發(fā)光二極管,以檢查P1.4~P1.7輸入的電平情況(若輸入為低電平則相應(yīng)的LED亮)。現(xiàn)要求采用中斷邊沿觸發(fā)方式,每中斷一次,完成一次讀/寫(xiě)操作。3、中斷服務(wù)程序舉例P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0INT080C51

+5V+5V+5V+5V+5V&&12S1解:如圖所示,采用外部中斷0,中斷申請(qǐng)從INT0輸入,并采用了去抖動(dòng)電路。

當(dāng)P1.0~P1.3的任何一位輸出為1時(shí),相應(yīng)的發(fā)光二極管就會(huì)發(fā)光。當(dāng)開(kāi)關(guān)S1閉合時(shí),發(fā)出中斷請(qǐng)求。中斷服務(wù)程序的矢量地址為0003H。源程序如下。ORG0000HLJMPMAIN;上電,轉(zhuǎn)向主程序ORG0003H;外部中斷0入口地址LJMPINSER;轉(zhuǎn)向中斷服務(wù)程序ORG0030H

;主程序MAIN:SETBEX0

;允許外部中斷0中斷SETBIT0

;選擇邊沿觸發(fā)方式SETBEA

;CPU開(kāi)中斷HERE:SJMPHERE

;等待中斷ORG0200H

;中斷服務(wù)程序INSER:MOVA,#0F0H

MOVP1,A

;設(shè)P1.4~P1.7為輸入MOVA,P1

;取開(kāi)關(guān)數(shù)SWAPA

;A的高、低四位互換MOVP1,A;輸出驅(qū)動(dòng)LED發(fā)光RETI

;中斷返回END例

利用中斷顯示系統(tǒng)故障:如圖所示,此中斷電路可實(shí)現(xiàn)系統(tǒng)的故障顯示。當(dāng)系統(tǒng)的各部分正常工作時(shí),四個(gè)故障源的輸入均為低電平,顯示燈全不亮。當(dāng)有某個(gè)部分出現(xiàn)故障時(shí),則相應(yīng)的輸入線(xiàn)由低電平變?yōu)楦唠娖?,相?yīng)的發(fā)光二極管亮。3、中斷服務(wù)程序舉例INT0P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.780C51RRRRLEDLEDLEDLED四個(gè)故障源解:如圖所示,當(dāng)某一個(gè)故障信號(hào)輸入線(xiàn)由低電平變?yōu)楦唿c(diǎn)平時(shí),會(huì)通過(guò)INT0線(xiàn)引起80C51中斷(邊沿觸發(fā)方式)。在中斷服務(wù)程序中,應(yīng)將各故障源的信號(hào)讀入,并加以查詢(xún),以進(jìn)行相應(yīng)的發(fā)光顯示。源程序如下:

ORG0000H

LJMPMAIN;上電,轉(zhuǎn)向主程序

ORG0003H;外部中斷0入口地址

LJMPINSER;轉(zhuǎn)向中斷服務(wù)程序

MAIN:ANLP1,#55H;

P1.0,P1.2,P1.4,P1.6為輸入 P1.1,P1.3,P1.5,P1.7為輸出清0SETBEX0

;允許外部中斷0中斷

SETBIT0;選擇邊沿觸發(fā)方式

SETBEA

;CPU開(kāi)中斷HERE:SJMPHERE

;等待中斷INSER:JNBP1.0,L1;查詢(xún)中斷源,(P1.0)=0,轉(zhuǎn)L1SETBP1.1

;是P1.0引起的中斷,使相應(yīng)的二極管亮L1:JNBP1.2,L2;繼續(xù)查詢(xún)SETBP1.3

;L2:JNBP1.4,L3SETBP1.5L3:JNBP1.6,L4;

SETBP1.7L4:RETIEND一、定時(shí)/計(jì)數(shù)器概述二、定時(shí)/計(jì)數(shù)器的控制三、定時(shí)/計(jì)數(shù)器的四種模式及應(yīng)用5.3定時(shí)/計(jì)數(shù)器及應(yīng)用一、定時(shí)/計(jì)數(shù)器概述1、80C51定時(shí)/計(jì)數(shù)器結(jié)構(gòu)2、80C51定時(shí)/計(jì)數(shù)器功能1、80C51定時(shí)/計(jì)數(shù)器結(jié)構(gòu)80C51有兩個(gè)16位的定時(shí)器/計(jì)數(shù)器,即T0和T1,都是16位加1計(jì)數(shù)器,分別由兩個(gè)8位特殊功能寄存器構(gòu)成。2、80C51定時(shí)/計(jì)數(shù)器功能每個(gè)定時(shí)/計(jì)數(shù)器都可由軟件設(shè)置為定時(shí)工作方式或計(jì)數(shù)工作方式。由特殊功能寄存器TMOD和TCON所控制。定時(shí)/計(jì)數(shù)器工作不占用CPU時(shí)間,除非定時(shí)器/計(jì)數(shù)器溢出,才能中斷CPU的當(dāng)前操作。定時(shí)器/計(jì)數(shù)器有四種工作模式。其中模式0-2對(duì)T0和T1是一樣的,模式3對(duì)兩者不同。定時(shí)器計(jì)數(shù)80C51片內(nèi)振蕩器輸出經(jīng)12分頻后的脈沖,即每個(gè)機(jī)器周期使定時(shí)器(T0或T1)的數(shù)值加1直至計(jì)滿(mǎn)溢出。當(dāng)80C51采用12MHz晶振時(shí),一個(gè)機(jī)器周期為1μs,計(jì)數(shù)頻率為1MHz。通過(guò)引腳T0(P3.4)和T1(P3.5)對(duì)外部脈沖信號(hào)計(jì)數(shù)。當(dāng)輸入脈沖信號(hào)產(chǎn)生由1至0的下降沿時(shí)計(jì)數(shù)器的值加1。CPU檢測(cè)一個(gè)1至0的跳變需要兩個(gè)機(jī)器周期,故最高計(jì)數(shù)頻率為振蕩頻率的1/24。為了確保某個(gè)電平在變化之前被采樣一次,要求電平保持時(shí)間至少是一個(gè)完整的機(jī)器周期。二、定時(shí)/計(jì)數(shù)器的控制

1、工作模式寄存器TMOD2、控制器寄存器TCON1、工作模式寄存器TMODTMOD用于控制T0和T1的工作模式。TMOD不能位尋址,只能用字節(jié)設(shè)置定時(shí)/計(jì)數(shù)器的工作模式,低半字節(jié)設(shè)置T0,高半字節(jié)設(shè)置T1。80C51系統(tǒng)復(fù)位時(shí),TMOD的所有位被清0。定時(shí)/計(jì)數(shù)器T1定時(shí)/計(jì)數(shù)器T0TMOD(89H)D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0M1和M0—工作模式控制位。兩位可形成四種編碼,對(duì)應(yīng)于四種模式。M1M0工作模式功能描述0

0模式013位計(jì)數(shù)器0

1模式116位計(jì)數(shù)器1

0模式2自動(dòng)再裝入8位計(jì)數(shù)器1

1模式3定時(shí)器0:分成二個(gè)8位計(jì)數(shù)器

定時(shí)器1:停止計(jì)數(shù)1、工作模式寄存器TMODTMOD用于控制T0和T1的工作模式。TMOD不能位尋址,只能用字節(jié)設(shè)置定時(shí)/計(jì)數(shù)器的工作模式,低半字節(jié)設(shè)置T0,高半字節(jié)設(shè)置T1。80C51系統(tǒng)復(fù)位時(shí),TMOD的所有位被清0。定時(shí)/計(jì)數(shù)器T1定時(shí)/計(jì)數(shù)器T0TMOD(89H)D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0C/T—計(jì)數(shù)器/定時(shí)器方式選擇位。C/T=0,設(shè)置為定時(shí)方式。定時(shí)器計(jì)數(shù)80C51片內(nèi)脈沖,即對(duì)機(jī)器周期計(jì)數(shù)。C/T=1,設(shè)置為計(jì)數(shù)方式。計(jì)數(shù)器的輸入來(lái)自引腳T0(P3.4)或T1(P3.5)端的外部脈沖。1、工作模式寄存器TMODTMOD用于控制T0和T1的工作模式。TMOD不能位尋址,只能用字節(jié)設(shè)置定時(shí)/計(jì)數(shù)器的工作模式,低半字節(jié)設(shè)置T0,高半字節(jié)設(shè)置T1。80C51系統(tǒng)復(fù)位時(shí),TMOD的所有位被清0。定時(shí)/計(jì)數(shù)器T1定時(shí)/計(jì)數(shù)器T0TMOD(89H)D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0GATE—門(mén)控位。GATE=0,只要用軟件使TR0(或TR1)置1就可以啟動(dòng)定時(shí)器,而不管INT0(或INT1)的電平是高還是低。GATE=1,只有INT0(或INT1)引腳為高電平且由軟件使TR0(或TR1)置1時(shí),才能啟動(dòng)定時(shí)器工作。2、控制器寄存器TCONTCON除可字節(jié)尋址外,各位還可位尋址。80C51系統(tǒng)復(fù)位時(shí),TCON的所有位被清0。

TCON(88H)8FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1

IT1IE0IT0TF1(TCON.7)—T1溢出標(biāo)志位。當(dāng)T1溢出時(shí),由硬件自動(dòng)使中斷觸發(fā)器TF1置1,并向CPU申請(qǐng)中斷。當(dāng)CPU響應(yīng)中斷進(jìn)入中斷服務(wù)程序后,TF1被硬件自動(dòng)清0。TF1也可以用軟件清0。2、控制器寄存器TCONTCON除可字節(jié)尋址外,各位還可位尋址。80C51系統(tǒng)復(fù)位時(shí),TCON的所有位被清0。

TCON(88H)8FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1

IT1IE0IT0TF0(TCON.5)—T0溢出標(biāo)志位。當(dāng)T0溢出時(shí),由硬件自動(dòng)使中斷觸發(fā)器TF0置1,并向CPU申請(qǐng)中斷。當(dāng)CPU響應(yīng)中斷進(jìn)入中斷服務(wù)程序后,TF0被硬件自動(dòng)清0。TF0也可以用軟件清0。2、控制器寄存器TCONTCON除可字節(jié)尋址外,各位還可位尋址。80C51系統(tǒng)復(fù)位時(shí),TCON的所有位被清0。

TCON(88H)8FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1

IT1IE0IT0TR1(TCON.6)—T1運(yùn)行控制位??赏ㄟ^(guò)軟件置1(TR1=1)或清0(TR1=0)來(lái)啟動(dòng)或關(guān)閉T1工作。在程序中用指令“SETBTR1”使TR1位置1,定時(shí)器T1便開(kāi)始計(jì)數(shù)。用“CLRTR1”使TR1清0,定時(shí)器停止工作。2、控制器寄存器TCONTCON除可字節(jié)尋址外,各位還可位尋址。80C51系統(tǒng)復(fù)位時(shí),TCON的所有位被清0。

TCON(88H)8FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1

IT1IE0IT0TR0(TCON.4)—T0運(yùn)行控制位。可通過(guò)軟件置1(TR0=1)或清0(TR0=0)來(lái)啟動(dòng)或關(guān)閉T0工作。在程序中用指令“SETBTR0”使TR0位置1,定時(shí)器T0便開(kāi)始計(jì)數(shù)。用“CLRTR0”使TR0清0,定時(shí)器停止工作。2、控制器寄存器TCONTCON除可字節(jié)尋址外,各位還可位尋址。80C51系統(tǒng)復(fù)位時(shí),TCON的所有位被清0。

TCON(88H)8FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1

IT1IE0IT0IE1,IT1,IE0,IT0(TCON.3~TCON.0)

——外部中斷INT1,INT0請(qǐng)求及請(qǐng)求方式控制位。前已經(jīng)講過(guò)。三、定時(shí)器的四種模式及應(yīng)用

1、模式0及其應(yīng)用2、模式1及其應(yīng)用3、模式2及其應(yīng)用4、模式3及其應(yīng)用5、綜合應(yīng)用舉例1、模式0及其應(yīng)用模式0的邏輯電路結(jié)構(gòu)(T0與T1相同)INT0振蕩器÷12C/T=0C/T=1&1TF0合/斷T0TR0GATETH0×××D4D3D2D1D0TL0計(jì)數(shù)器模式0工作特點(diǎn)在這種模式下,16位寄存器(TH0和TL0)只用了13位。其中TL0的高3位未用,其余5位為整個(gè)13位的低5位,TH0占高8位。當(dāng)TL0的低5位溢出時(shí),向TH0進(jìn)位;TH0溢出時(shí),向中斷標(biāo)志TF0進(jìn)位(硬件置位TF0),并申請(qǐng)中斷。定時(shí)時(shí)間為:t=(213-T0初值)×振蕩周期×12用于計(jì)數(shù)工作方式時(shí),計(jì)數(shù)長(zhǎng)度為:L=(213-T0初值)(個(gè)外部脈沖)×××TH0TL08位5位模式0的應(yīng)用舉例例:設(shè)晶振為12MHz,試計(jì)算定時(shí)器T0工作于模式0時(shí)的最大定時(shí)時(shí)間T。解:當(dāng)T0處于工作模式0時(shí),加1計(jì)數(shù)器為13位。因?yàn)椋憾〞r(shí)時(shí)間為:t=(213-T0初值)×振蕩周期×12最大定時(shí)時(shí)間為“T0初值=0”時(shí)。所以:例:設(shè)定時(shí)器T0用于定時(shí)10ms,晶振為6MHz。試確定T0初值。并編寫(xiě)定時(shí)器T0初始化程序段。解:1)確定T0初值當(dāng)T0處于工作模式0時(shí),加1計(jì)數(shù)器為13位。定時(shí)時(shí)間:所以:∴T0初值=3192=C78H=0110001111000B即:(TH0)=01100011B=63H(高8位)

(TL0)=11000B=18H(低5位)

TMOD的低四位為T(mén)0的控制位

模式0:M1M0=00,

定時(shí)器方式:C/T=0,

門(mén)控位不受INT0的影響:GATE=0,

其余位:為0。∴

模式字為

TMOD=00000000B=00H解:2)確定TMOD的初值定時(shí)/計(jì)數(shù)器T1定時(shí)/計(jì)數(shù)器T0TMOD(89H)D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0解:3)編寫(xiě)定時(shí)器T0的初始化程序段主程序:

ORG0100HMAIN:MOVSP,#60H;設(shè)堆棧指針

MOVTMOD,#00H;選擇工作模式

MOVTH0,#63H

;送初值

MOVTL0,#18H

SETBTR0;啟動(dòng)定時(shí)SETBET0SETBEA

…例:設(shè)定時(shí)器T1工作于模式0,晶振為6MHz。編程實(shí)現(xiàn):每10ms時(shí)間P1.0取反的程序。解:1)確定T1初值

T1處于工作模式0時(shí),定時(shí)時(shí)間位10ms(同例2)。(TH1)=01100011B=63H(高8位)(TL1)=11000B=18H(低5位)2)確定TMOD的初值TMOD的高四位為T(mén)1的控制位模式0:M1M0=00,定時(shí)器方式:C/T=0,門(mén)控位不受INT0的影響:GATE=0,其余位:為0。

模式字為

TMOD=00000000B=00H解:3)編寫(xiě)程序初始化引導(dǎo)程序:

ORG0000HRESET:AJMPMAIN;跳過(guò)中斷服務(wù)程序區(qū)

ORG001BH;中斷服務(wù)程序入口

AJMPITOP主程序:

ORG0100HMAIN:MOVSP,#60H;設(shè)堆棧指針

MOVTMOD,#00H;選擇工作模式

MOVTH1,#63H

;送初值

MOVTL1,#18H

SETBP1.0;P1.0置1

SETBTR1;啟動(dòng)定時(shí)

SETBET1;T1開(kāi)中斷

SETBEA;CPU開(kāi)中斷

HERE:AJMPHERE;等待時(shí)間到,轉(zhuǎn)入中斷服務(wù)程序中斷服務(wù)程序

ORG0150HITOP:MOVTL1,#18H;重新裝入初值

MOVTH1,#63H

CPLP1.0;P1.0取反

RETI ;中斷返回例:利用T0的工作模式0產(chǎn)生定時(shí),在P1.0引腳輸出周期為10ms的方波。設(shè)晶振頻率fosc=12MHz。編程實(shí)現(xiàn)其功能(分別采用查詢(xún)方式和中斷方式)。解:要在P1.0引腳輸出周期為10ms的方波,只要使P1.0每隔5ms取反一次即可。

(1)選擇工作模式

T0的模式字為T(mén)MOD=00H,即:M1M0=00,C/T=0,GATE=0,其余位為0。(2)計(jì)算5ms定時(shí)T0的初值T=(213-T0初值)×(1/12)×10-6×12=5×10-3sT0初值=3192D=C78H=0110001111000BT0的低5位:11000B=18H即(TL0)=18HT0的高8位:01100011B=63H即(TH0)=63H(3)采用查詢(xún)方式的程序程序清單:

ORG 0000H LJMP MAIN;初始化引導(dǎo)程序

ORG 0080HMAIN:MOVTMOD,#00H;設(shè)置T0為模式0

MOVTL0,#18H;送初值MOVTH0,#63H SETB P1.0 SETBTR0;啟動(dòng)定時(shí)LP:

JBCTF0,NEXT;查詢(xún)定時(shí)時(shí)間到否

SJMP

LPNEXT:MOVTL0,#18H;重裝計(jì)數(shù)初值

MOVTH0,#63H CPL

P1.0;取反

SJMP

LP;重復(fù)循環(huán)(4)采用定時(shí)器溢出中斷方式的程序

ORG

0000H;主程序RESET:AJMPMAIN;跳過(guò)中斷服務(wù)程序區(qū)

ORG

000BH

;定時(shí)器T0中斷矢量

AJMPCTC0 ;轉(zhuǎn)入中斷服務(wù)程序

ORG

0030HMAIN:MOVTMOD,#00H;設(shè)置T0為模式0

MOVTL0,#18H;送初值

MOVTH0,#63HSETB

EA;CPU開(kāi)中斷

SETB

ET0;T0中斷允許

SETB

TR0;啟動(dòng)定時(shí)

HERE:SJMPHERE;等待中斷

ORG0120H

;中斷服務(wù)程序

CTC0:MOV

TL0,#18H;重新裝入初值

MOV

TH0,#63H

CPLP1.0;P1.0取反

RETI ;中斷返回2、模式1及其應(yīng)用模式1的邏輯電路結(jié)構(gòu)(T0與T1相同)振蕩器÷12C/T=0C/T=1&1TF0合/斷T0TR0GATE0INT0TH0TL0計(jì)數(shù)器模式1工作特點(diǎn)該模式對(duì)應(yīng)的是一個(gè)16位的定時(shí)器/計(jì)數(shù)器。用于定時(shí)工作方式時(shí),定時(shí)時(shí)間為:

t=(216-T0初值)×振蕩周期×12用于計(jì)數(shù)工作方式時(shí),計(jì)數(shù)長(zhǎng)度為:

(216-T0初值)(個(gè)外部脈沖)TH0TL08位8位模式1的應(yīng)用舉例例:設(shè)定時(shí)器T0選擇工作模式1的計(jì)數(shù)器工作方式,其計(jì)數(shù)器初值為FFFFH,問(wèn)此時(shí)定時(shí)器T0的實(shí)際用途是什么?解:因其初值為FFFFH,只要隨機(jī)外來(lái)一脈沖即可溢出,向CPU申請(qǐng)中斷,故這一內(nèi)部中斷源實(shí)質(zhì)上已作為外部中斷源使用。因此此定時(shí)器T0并不用于定時(shí)或計(jì)數(shù)。例:設(shè)晶振為12MHz,試計(jì)算定時(shí)器T0工作于模式1時(shí)的最大定時(shí)時(shí)間T。解:當(dāng)T0處于工作模式1時(shí),加1計(jì)數(shù)器為16位。定時(shí)時(shí)間為:t=(216-T0初值)×振蕩周期×12最大定時(shí)時(shí)間為“T0初值=0”時(shí)。所以:例:用定時(shí)器T1產(chǎn)生一個(gè)50Hz的方波,由P1.1輸出。使用程序查詢(xún)方式,fosc=6MHz。解:1)確定定時(shí)器T1初值∵方波周期T=1/50=0.02s=20ms

∴用T1定時(shí)10ms,時(shí)間到P1.1引腳電平取反?!啵═H1)=ECH,(TL1)=78H20ms10ms10ms解:2)確定工作模式寄存器TMOD的值∵定時(shí)器T1工作于模式1的定時(shí)器工作方式,

∴高四位:GATE=0,C/T=0,M1M0=01,低四位:取0。

∴(TMOD)=00010000B=10H3)編程O(píng)RG0000HLJMPSTARTORG0080HSTART:MOVTMOD,#10H;T1為模式1MOVTL1,#78H;送初值MOVTH1,#0ECHSETBP1.1;P1.1置1

SETBTR1;啟動(dòng)定時(shí)LOOP:JNBTF1,LOOP

;查詢(xún)定時(shí)時(shí)間到否CLRTF1;產(chǎn)生溢出,清標(biāo)志位MOVTL1,#78H

;重新置初值MOVTH1,#0ECHCPLP1.1;取反SJMPLOOP;重復(fù)循環(huán)3、模式2及其應(yīng)用模式2的邏輯電路結(jié)構(gòu)(T0和T1相同)振蕩器÷12C/T=0C/T=1&1TF0合/斷T0TR0GATEINT0TH0TL0計(jì)數(shù)器模式2工作特點(diǎn)該模式把TL0(TL1)配置成一個(gè)可以自動(dòng)重裝載的8位定時(shí)器/計(jì)數(shù)器。TL0計(jì)數(shù)溢出時(shí),不僅使溢出中斷標(biāo)志位TF0置1,而且還自動(dòng)把TH0中的內(nèi)容重新裝載到TL0中。TL0用作8位計(jì)數(shù)器,TH0用以保存初值。在程序初始化時(shí),TL0和TH0由軟件賦予相同的初值。用于定時(shí)工作方式時(shí),定時(shí)時(shí)間為:

t=(28-TL0初值)×振蕩周期×12用于計(jì)數(shù)工作方式時(shí),計(jì)數(shù)長(zhǎng)度為:

(28-TL0初值)

(個(gè)外部脈沖)該模式可省去軟件中重裝常數(shù)的語(yǔ)句,并可產(chǎn)生相當(dāng)精確的定時(shí)時(shí)間,適合于作串行口波特率發(fā)生器。模式2的應(yīng)用舉例例:當(dāng)P3.4引腳(定時(shí)器T0的外部計(jì)數(shù)輸入端)上的電平發(fā)生負(fù)跳變時(shí),從P1.0輸出一個(gè)500μs的同步脈沖。用查詢(xún)方式編程實(shí)現(xiàn)該功能,fosc=6MHz。解:(1)確定TMOD值門(mén)控位GATE=0,高四位取0,選T0為模式2(M1M0=10),

首先為計(jì)數(shù)器工作方式(C/T=1):(TMOD)=00000110B=06H

當(dāng)P3.4引腳上的電平發(fā)生負(fù)跳變時(shí),T0計(jì)數(shù)器加1,溢出標(biāo)志TF0置1;

然后改變T0為500μs定時(shí)工作方式(C/T=0):(TMOD)=02H

當(dāng)上面TF0=1時(shí)使P1.0輸出由1變?yōu)?。開(kāi)始T0定時(shí),到500μs產(chǎn)生溢出,使P1.0輸出恢復(fù)高電平,T0又恢復(fù)外部事件計(jì)數(shù)方式。定時(shí)/計(jì)數(shù)器T1定時(shí)/計(jì)數(shù)器T0TMOD(89H)D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0(2)計(jì)算T0初值

T0工作在外部事件計(jì)數(shù)方式:題目要求T0引腳出現(xiàn)一次外部事件時(shí),引起T0中斷。所以:設(shè)計(jì)計(jì)數(shù)器初值為FFH,當(dāng)計(jì)數(shù)器再加1就溢出了。即:T0初值+1=28

T0初值

=28

-1=11111111B=0FFH

即:(TH0)=(TL0)=0FFHT0工作在定時(shí)工作方式:因?yàn)榫д耦l率為6MHz,定時(shí)500μs。所以:(28-T0初值)×2μs=500μs

得出:T0初值=6=06H,即:(TH0)=(TL0)=06H(3)程序清單:ORG 0000H LJMP START

ORG 0080H START: MOV TMOD,#06H;設(shè)置T0為模式2,外部計(jì)數(shù)方式

MOV TL0,#0FFH;T0計(jì)數(shù)器初值

MOV TH0,#0FFH

SETB TR0;啟動(dòng)T0計(jì)數(shù)

LOOP1: JBC TF0,PTFO1

;查詢(xún)T0溢出標(biāo)志,TF0=1時(shí)轉(zhuǎn),且清TF0=0 SJMP LOOP1

;等待T0溢出

PTFO1:CLRTR0

;停止計(jì)數(shù)MOVTMOD,#02H;設(shè)置T0為模式2,定時(shí)方式MOVTL0,#06H

;送初值,定時(shí)500μsMOVTH0,#06HCLRP1.0

;P1.0清0SETBTR0

;啟動(dòng)定時(shí)500μs LOOP2: JBC

TF0,PTFO2;查詢(xún)T0溢出標(biāo)志,TF0=1時(shí)轉(zhuǎn)并清TF0=0

SJMP

LOOP2

;等待T0溢出中斷(定時(shí)時(shí)間到)

PTFO2: SETB

P1.0

;P1.0置1CLRTR0;停止定時(shí)

SJMP

START

;轉(zhuǎn)向開(kāi)始,重新等待T0引腳的脈沖

例:利用定時(shí)器T1的模式2對(duì)外部信號(hào)計(jì)數(shù)。要求每計(jì)滿(mǎn)100次,將P1.0端取反。解:(1)選擇模式外部信號(hào)由T1(P3.5)引腳輸入,每發(fā)生一次負(fù)跳變計(jì)數(shù)器加1,每輸入100個(gè)脈沖,計(jì)數(shù)器發(fā)生溢出中斷,中斷服務(wù)程序?qū)1.0取反一次。T1計(jì)數(shù)工作方式模式2的模式字為(TMOD)=60H。T0不用時(shí),TMOD的低4位可任取,但不能進(jìn)入模式3,一般取0。(2)計(jì)算T1的計(jì)數(shù)初值

X=28

-100=156=9CH

因此:TL1的初值為9CH,重裝初值寄存器TH1=9CH。(3)程序清單

ORG 0000H LJMP MAIN

ORG001BH;中斷服務(wù)程序入口CPLP1.0

RETI

MAIN:MOVTMOD,#60H

;設(shè)置T1為模式2,外部計(jì)數(shù)方式MOVTL1,#9CH

;T1計(jì)數(shù)器初值MOVTH1,#9CHMOVIE,#88H;定時(shí)器開(kāi)中斷

SETBTR1

;啟動(dòng)T1計(jì)數(shù)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論