項(xiàng)目三-汽車信號(hào)燈的循環(huán)點(diǎn)亮控制課件_第1頁(yè)
項(xiàng)目三-汽車信號(hào)燈的循環(huán)點(diǎn)亮控制課件_第2頁(yè)
項(xiàng)目三-汽車信號(hào)燈的循環(huán)點(diǎn)亮控制課件_第3頁(yè)
項(xiàng)目三-汽車信號(hào)燈的循環(huán)點(diǎn)亮控制課件_第4頁(yè)
項(xiàng)目三-汽車信號(hào)燈的循環(huán)點(diǎn)亮控制課件_第5頁(yè)
已閱讀5頁(yè),還剩107頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第一節(jié)定時(shí)/計(jì)數(shù)器1.1定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)和工作原理

1.定時(shí)/計(jì)數(shù)器組成框圖

MCS-51單片機(jī)結(jié)構(gòu)框圖如圖所示。定時(shí)/計(jì)數(shù)器由定時(shí)器方式寄存器TMOD、定時(shí)器控制寄存器TCON、定時(shí)器T0和定時(shí)器T1組成。第一節(jié)定時(shí)/計(jì)數(shù)器1.1定時(shí)/計(jì)數(shù)器的結(jié)

2.定時(shí)/計(jì)數(shù)器工作原理當(dāng)定時(shí)/計(jì)數(shù)器設(shè)置為定時(shí)工作方式時(shí),計(jì)數(shù)器對(duì)內(nèi)部機(jī)器周期計(jì)數(shù),每過(guò)一個(gè)機(jī)器周期,計(jì)數(shù)器增1,直至計(jì)滿溢出。定時(shí)器的定時(shí)時(shí)間與系統(tǒng)的振蕩頻率緊密相關(guān),因MCS-51單片機(jī)的一個(gè)機(jī)器周期由12個(gè)振蕩脈沖組成,所以,計(jì)數(shù)頻率。如果單片機(jī)系統(tǒng)采用12M晶振,則計(jì)數(shù)周期為:

二、定時(shí)/計(jì)數(shù)器的控制

1.方式寄存器TMOD2.定時(shí)/計(jì)數(shù)器工作原理二、定時(shí)/

1)M1和M0—方式選擇位。

M1M0工作方式功能說(shuō)明00方式013位定時(shí)/計(jì)數(shù)器01方式116位定時(shí)/計(jì)數(shù)器10方式28位自動(dòng)重裝定時(shí)/計(jì)數(shù)器11方式3定時(shí)器0分成兩個(gè)獨(dú)立的8位定時(shí)/計(jì)數(shù)器;定時(shí)器1在此方式停止計(jì)數(shù)

2)—功能選擇位。

時(shí)設(shè)置為定時(shí)器工作模式

時(shí)設(shè)置為計(jì)數(shù)器工作模式;

3)GATE—門控位。

當(dāng)GATE=0時(shí),定時(shí)器的啟停只由軟件控制位TR0或TR1來(lái)控制,為1啟動(dòng)定時(shí)器工作,為0停止定時(shí)器工作;當(dāng)GATE=1時(shí),軟件控制位TR0或TR1須置1,同時(shí)還須(P3.2)或(P3.3)為高電平才能啟動(dòng)定時(shí)器,即允許外中斷、啟動(dòng)定時(shí)器。1)M1和M0—方式選擇位。M1

1)TCON.7-TF1

定時(shí)器1溢出標(biāo)志位。

2)TCON.6-TR1定時(shí)器1啟動(dòng)控制位。

2.控制寄存器TCON

TCON的作用:控制定時(shí)器的啟動(dòng)、停止和定時(shí)器的溢出標(biāo)志位,外部中斷請(qǐng)求位和觸發(fā)方式。定時(shí)器控制字TCON的格式如下:

3)TCON.5-TF0定時(shí)器0溢出標(biāo)志位。

4)TCON.4-TR0定時(shí)器0啟動(dòng)控制位。1)TCON.7-TF1定時(shí)器

5)TCON.3-IE1外部中斷1()的中斷請(qǐng)求標(biāo)志位。

6)TCON.2-IT1外部中斷1觸發(fā)方式選擇位。

7)TCON.1-IE0

8)TCON.0-IT0外部中斷0觸發(fā)方式選擇位。外部中斷0()的中斷請(qǐng)求標(biāo)志位。

3.定時(shí)/計(jì)數(shù)器的初始化編程1)確定工作模式、工作方式、啟動(dòng)控制位——對(duì)TMOD賦值。2)預(yù)置定時(shí)或計(jì)數(shù)的初值——直接將初值寫入TH0、TL0或TH1、TL1中。3)根據(jù)需要開啟定時(shí)/計(jì)數(shù)器中斷——直接對(duì)IE寄存器賦值。4)啟動(dòng)定時(shí)/計(jì)數(shù)器工作——將TR0或TR1置“1”。5)TCON.3-IE1外部中斷1(1.3定時(shí)/計(jì)數(shù)器的工作方式

1.方式0當(dāng)TMOD的M1M0為00時(shí),定時(shí)/計(jì)數(shù)器工作于方式0,為13位的定時(shí)/計(jì)數(shù)器。

T1(或T0)方式0時(shí)的邏輯電路結(jié)構(gòu)圖1.3定時(shí)/計(jì)數(shù)器的工作方式1.由圖可知:16位加法計(jì)數(shù)器(TH1和TL1)只用了13位。其中,TH1占高8位,TL1占低5位(只用低5位,高3位未用)。當(dāng)TL1低5位溢出時(shí)自動(dòng)向TH1進(jìn)位,而TH1溢出時(shí)向中斷位TF1進(jìn)位(硬件自動(dòng)置位),并申請(qǐng)中斷。當(dāng)=0時(shí),控制開關(guān)連接12分頻器輸出,T1對(duì)機(jī)器周期計(jì)數(shù),此時(shí),T1為定時(shí)器。設(shè)定時(shí)器1初值為X,其定時(shí)時(shí)間為:當(dāng)=1時(shí),控制開關(guān)與T1(P3.5)相連,外部計(jì)數(shù)脈沖由T1腳輸入,當(dāng)外部信號(hào)電平發(fā)生由0到1的跳變時(shí),計(jì)數(shù)器加1,這時(shí)T1成為外部事件的計(jì)數(shù)器。

當(dāng)GATE=0時(shí),反相為1,使或門輸出為1,與門輸出是否為1(即定時(shí)器1的啟動(dòng))直接由TR1控制。當(dāng)GATE=1時(shí),若TR1=1,外部信號(hào)電平通過(guò)引腳直接開啟或關(guān)斷定時(shí)器T1。由圖可知:16位加法計(jì)數(shù)器(TH1和TL1)只用了例3.1設(shè)f=12MHZ,用定時(shí)器0方式0實(shí)現(xiàn)1s的延時(shí)DELAY:MOV R3,#200;置5ms計(jì)數(shù)循環(huán)初值

MOV TMOD,#00H;設(shè)定時(shí)器0為方式0MOV TH0,#63H ;置定時(shí)器初值

MOV TL0,#18H SETB TR0 ;啟動(dòng)T0LP1: JBC TF0,LP2;查詢計(jì)數(shù)溢出SJMP LP1 ;未到5ms繼續(xù)計(jì)數(shù)LP2: MOV TH0,#63H;重新置定時(shí)器初值

MOV TL0,#18H DJNZ R3,LP1 ;未到1s繼續(xù)循環(huán)

RET ;返回主程序例3.1設(shè)f=12MHZ,用定時(shí)器0方式0實(shí)現(xiàn)1s的延時(shí)例3.2設(shè)f=12MHZ,用定時(shí)器0方式0實(shí)現(xiàn)70ms的延時(shí)。voiddelay70ms(){unsignedchari;TMOD=0X00;//設(shè)置T0為定時(shí)器,工作方式0for(i=0;i<10;i++);//設(shè)置10次循環(huán)次數(shù)

{TH0=0x25;//設(shè)置定時(shí)器初值為2508HTL0=0x08;TR0=1;//啟動(dòng)T1While(!TF0);//查詢計(jì)數(shù)是否溢出,即定時(shí)7ms時(shí)間到,TF0=1TF0=0;//7ms定時(shí)時(shí)間到,將T0溢出標(biāo)志位TF0清零}}例3.2設(shè)f=12MHZ,用定時(shí)器0方式0實(shí)現(xiàn)70ms的

2.方式1當(dāng)TMOD的M1M0為01時(shí),定時(shí)器工作于方式1,其邏輯結(jié)構(gòu)圖如圖所示。

T1(或T0)方式1時(shí)的邏輯電路結(jié)構(gòu)圖2.方式1當(dāng)TMOD的M1M例3.2設(shè)f=12MHZ,用定時(shí)器0方式0實(shí)現(xiàn)70ms的延時(shí)。voiddelay70ms(){unsignedchari;TMOD=0X00;//設(shè)置T0為定時(shí)器,工作方式0for(i=0;i<10;i++);//設(shè)置10次循環(huán)次數(shù)

{TH0=0x25;//設(shè)置定時(shí)器初值為2508HTL0=0x08;TR0=1;//啟動(dòng)T1While(!TF0);//查詢計(jì)數(shù)是否溢出,即定時(shí)7ms時(shí)間到,TF0=1TF0=0;//7ms定時(shí)時(shí)間到,將T0溢出標(biāo)志位TF0清零}}例3.2設(shè)f=12MHZ,用定時(shí)器0方式0實(shí)現(xiàn)70ms的例3.3設(shè)f=12MHZ,用定時(shí)器1方式1實(shí)現(xiàn)200us的延時(shí)voiddelay200us(){TMOD=0X10;//設(shè)置T1為定時(shí)器,工作方式1TH1=0xFF;//設(shè)置定時(shí)器初值為FF38HTL1=0x38;TR1=1;//啟動(dòng)T1While(!TF1);//查詢計(jì)數(shù)是否溢出,即定時(shí)200us時(shí)間到,TF1=1TF1=0;//200us定時(shí)時(shí)間到,將T1溢出標(biāo)志位TF1清零}}例3.3設(shè)f=12MHZ,用定時(shí)器1方式1實(shí)現(xiàn)200us的延

3.方式2當(dāng)TMOD的M1M0為10時(shí),定時(shí)/計(jì)數(shù)器工作于方式2,其邏輯結(jié)構(gòu)圖如圖所示。

T1(或T0)方式2時(shí)的邏輯電路結(jié)構(gòu)圖3.方式2當(dāng)TMOD的M1例3.4設(shè)f=12MHZ,用定時(shí)器0方式0實(shí)現(xiàn)1s的延時(shí)DELAY:MOV R3,#200;置5ms計(jì)數(shù)循環(huán)初值

MOV TMOD,#00H;設(shè)定時(shí)器0為方式0MOV TH0,#63H ;置定時(shí)器初值

MOV TL0,#18H SETB TR0 ;啟動(dòng)T0LP1: JBC TF0,LP2;查詢計(jì)數(shù)溢出SJMP LP1 ;未到5ms繼續(xù)計(jì)數(shù)LP2: MOV TH0,#63H;重新置定時(shí)器初值

MOV TL0,#18H DJNZ R3,LP1 ;未到1s繼續(xù)循環(huán)

RET ;返回主程序例3.4設(shè)f=12MHZ,用定時(shí)器0方式0實(shí)現(xiàn)1s的延時(shí)例3.5設(shè)f=6MHZ,用定時(shí)器1方式2實(shí)現(xiàn)1ms的延時(shí)。解:(1)可選擇定時(shí)時(shí)間為500us,再循環(huán)2次。計(jì)數(shù)值=500us/2us=250;計(jì)數(shù)初值=256-250=6=110B=6H。(2)C語(yǔ)言編程實(shí)現(xiàn)1ms延時(shí)函數(shù)voiddelay1ms(){unsignedchari;TMOD=0X20;TH0=0x06;//設(shè)置定時(shí)器初值為06HTL0=0x06;for(i=0;i<2;i++);//設(shè)置2次循環(huán)次數(shù){TR1=1;//啟動(dòng)T1While(!TF1);//查詢計(jì)數(shù)是否溢出,即定時(shí)500us時(shí)間到,TF1=1TF1=0;//500us定時(shí)時(shí)間到,將T1溢出標(biāo)志位TF1清零}}例3.5設(shè)f=6MHZ,用定時(shí)器1方式2實(shí)現(xiàn)1ms的延時(shí)

3.方式3方式3只適應(yīng)于定時(shí)/計(jì)數(shù)器T0,當(dāng)TMOD的M1M0為11時(shí),定時(shí)/計(jì)數(shù)器工作于方式3時(shí),其邏輯結(jié)構(gòu)圖如圖所示。T0方式3時(shí)的邏輯結(jié)構(gòu)3.方式3方式3只適應(yīng)于定時(shí)/計(jì)數(shù)器T例3.6用定時(shí)器T0方式3實(shí)現(xiàn)P1.0端口指示燈間隔1s的閃爍。解:根據(jù)題意分析,定時(shí)器T0中的TH0只能為定時(shí)器,定時(shí)時(shí)間設(shè)為250s;TL0設(shè)置為計(jì)數(shù)器,計(jì)數(shù)值設(shè)為200。TH0計(jì)滿溢出后,用軟件復(fù)位的方法使T0(P3.4)引腳產(chǎn)生負(fù)跳變,TH0每溢出一次,T0引腳便產(chǎn)生一個(gè)負(fù)跳變,TL0便計(jì)數(shù)一次。TL0計(jì)滿溢出時(shí),延時(shí)時(shí)間應(yīng)為50ms,循環(huán)20次則可得到1s的延時(shí)。由上可知,TH0計(jì)數(shù)初值為:X=(256250)=6=06HTL0計(jì)數(shù)初值為:X=(256200)=56=38HTMOD=00000111B=07H1s延時(shí)子程序如下:DELAY:MOVR3,#14H;置100ms計(jì)數(shù)循環(huán)初值

MOVTMOD,#07H;置定時(shí)器0為方式3計(jì)數(shù)

MOVTH0,#06H;置TH0初值

MOVTL0,#38H;置TL0初值

SETB TR0;啟動(dòng)TL0

SETBTR1 ;啟動(dòng)TH0例3.6用定時(shí)器T0方式3實(shí)現(xiàn)P1.0端口指示燈間隔1

LP1:JBCTF1,LP2;查詢TH0計(jì)數(shù)溢出

SJMP LP1;未到500s繼續(xù)計(jì)數(shù)

LP2:MOV TH0,#06H;重置TH0初值

CLR P3.4; T0引腳產(chǎn)生負(fù)跳變

NOP ;

負(fù)跳變持續(xù)

NOP

SETB P3.4; T0引腳恢復(fù)高電平

JBCTF0,LP3;查詢TH0計(jì)數(shù)溢出 SJMPLP1;100ms未到繼續(xù)計(jì)數(shù)LP3: MOV TL0,#38H;

重置TL0初值 DJNZ R3,LP1;

未到1s繼續(xù)循環(huán) CPLP1.0 ;

指示燈狀態(tài)翻轉(zhuǎn) RET LP1:JBCTF1,LP2;查詢TH0計(jì)數(shù)溢第二節(jié)中斷系統(tǒng)1.中斷的概念當(dāng)CPU正在按順序處理某件事情(執(zhí)行程序)的時(shí)候,如果這時(shí)外界突然發(fā)生緊急事件,且請(qǐng)求CPU暫時(shí)停止當(dāng)前正在執(zhí)行的程序而馬上處理緊急事件(即執(zhí)行中斷服務(wù)程序),待中斷服務(wù)程序執(zhí)行完后再回到原來(lái)的程序繼續(xù)執(zhí)行。單片機(jī)中這種暫時(shí)停止原來(lái)執(zhí)行程序的過(guò)程就稱為中斷。原來(lái)正常運(yùn)行的程序稱為主程序。主程序被斷開的位置或地址稱為“斷點(diǎn)”。引起CPU中斷的根源,或能發(fā)出中斷申請(qǐng)的來(lái)源,稱為“中斷源”。中斷源向CPU提出的處理要求稱為“中斷請(qǐng)求”或中斷申請(qǐng)?!爸袛唷敝笏鶊?zhí)行的相應(yīng)的處理程序稱之為中斷服務(wù)或中斷處理子程序。處理完畢后,再回到原來(lái)被中斷的位置稱為中斷返回。2.1MCS-51的中斷系統(tǒng)第二節(jié)中斷系統(tǒng)1.中斷的概念2.1MCS-51的2.中斷的特點(diǎn)1)分時(shí)操作。CPU可以分時(shí)為多個(gè)外設(shè)服務(wù),大大地提高了CPU的效率。2)實(shí)時(shí)響應(yīng)。CPU能隨時(shí)響應(yīng)外界變量根據(jù)要求向CPU發(fā)出的中斷申請(qǐng),并進(jìn)行相應(yīng)處理,從而實(shí)現(xiàn)實(shí)時(shí)處理。3)穩(wěn)定性高。CPU能通過(guò)相應(yīng)的故障處理程序,處理難以預(yù)料的突發(fā)事件或故障。2.中斷的特點(diǎn)MCS-51中斷系統(tǒng)的結(jié)構(gòu)框圖如圖所示。有4個(gè)與中斷有關(guān)的寄存器,分別為中斷源寄存器TCON和SCON、中斷允許控制寄存器IE和中斷優(yōu)先級(jí)控制寄存器IP。有中斷源5個(gè),分別為外部中斷請(qǐng)求、外部中斷1請(qǐng)求、定時(shí)器T0溢出中斷請(qǐng)求TF0、定時(shí)器T1溢出中斷請(qǐng)求TF1和串行中斷請(qǐng)求RI或TI。5個(gè)中斷源的排列順序由中斷優(yōu)先級(jí)控制寄存器IP和順序查詢邏輯電路共同決定,5個(gè)中斷源分別對(duì)應(yīng)5個(gè)固定的中斷入口地址。MCS-51中斷系統(tǒng)的結(jié)構(gòu)框圖如圖所示。有4個(gè)與中斷有關(guān)的寄2.2中斷源和中斷標(biāo)志(一)中斷源MCS-51的5個(gè)中斷源如下:(1)

(P3.2):外部中斷0請(qǐng)求信號(hào)輸入腳。由IT0腳(TCON.0)來(lái)決定是低電平有效還是下降沿有效。當(dāng)CPU檢測(cè)到有效的中斷信號(hào)時(shí),則向CPU申請(qǐng)中斷,并使IE0(TCON.1)標(biāo)志置1。(2)

(P3.3):外部中斷1請(qǐng)求信號(hào)輸入腳。通過(guò)IT1腳(TCON.2)來(lái)決定是低電平有效還是下降沿有效。當(dāng)CPU檢測(cè)到有效的中斷信號(hào)時(shí),則向CPU申請(qǐng)中斷,并使IE0(TCON.1)標(biāo)志置1。(3)TF0(TCON.5):定時(shí)/計(jì)數(shù)器T0溢出中斷請(qǐng)求標(biāo)志。當(dāng)定時(shí)/計(jì)數(shù)器T0產(chǎn)生溢出時(shí),中斷請(qǐng)求標(biāo)志位TF0置位(由硬件自動(dòng)執(zhí)行),并向CPU申請(qǐng)中斷。(4)TF1(TCON.7):定時(shí)/計(jì)數(shù)器T1溢出中斷請(qǐng)求標(biāo)志。當(dāng)定時(shí)/計(jì)數(shù)器T1產(chǎn)生溢出時(shí),中斷請(qǐng)求標(biāo)志位TF1置位(由硬件自動(dòng)執(zhí)行),并向CPU申請(qǐng)中斷。(5)RI(SCON.0)或TI(SCON.1):串行中斷請(qǐng)求標(biāo)志。當(dāng)串行接口接收或發(fā)送完一幀串行數(shù)據(jù)時(shí),中斷請(qǐng)求標(biāo)志位RI或TI置位(由硬件自動(dòng)執(zhí)行),并向CPU申請(qǐng)中斷。2.2中斷源和中斷標(biāo)志(一)中斷源TCOND7D6D5D4D3D2D1D0(88H)TF1TR1TF0TR0IE1IT1IE0IT0(二)中斷標(biāo)志1.TCON寄存器中的中斷標(biāo)志TCON為定時(shí)/計(jì)數(shù)器T0和T1的控制寄存器,同時(shí)也鎖存T0和T1的溢出中斷標(biāo)志及外部中斷

的中斷標(biāo)志等。與中斷有關(guān)的各位定義如下:D7D6D5D4D3D2D1D0(二)中斷標(biāo)志(1)TCON.7-TF1:T1的溢出中斷標(biāo)志位。T1被啟動(dòng)計(jì)數(shù)后從初值做加1計(jì)數(shù),計(jì)滿溢出后由硬件置位TF1,同時(shí)向CPU發(fā)出中斷請(qǐng)求,此標(biāo)志一直保持到CPU響應(yīng)中斷后才由硬件自動(dòng)清0。(2)TCON.5-TF0:T0溢出中斷標(biāo)志位。其操作功能與TF1相同。(3)TCON.3-IE1:外部中斷

中斷請(qǐng)求標(biāo)志位。IE1=1時(shí),外部中斷1向CPU申請(qǐng)中斷。(4)TCON.2-IT1:外部中斷

中斷觸發(fā)方式控制位。當(dāng)IT1=0,外部中斷1控制為電平觸發(fā)方式。在這種方式下,CPU在每個(gè)機(jī)器周期的S5P2期間對(duì)

(P3.3)引腳采樣,若為低電平,則置位IE1標(biāo)志位;若為高電平,則認(rèn)為無(wú)中斷申請(qǐng),或中斷申請(qǐng)已撤除,則IE1復(fù)位標(biāo)志位。在電平觸發(fā)方式中,CPU響應(yīng)中斷后不能由硬件自動(dòng)清除IE1標(biāo)志,也不能由軟件清除IE1標(biāo)志,所以,在中斷返回之前必須撤消

引腳上的低電平,否則將再次中斷導(dǎo)致出錯(cuò)。當(dāng)IT1=1,外部中斷1控制為邊沿觸發(fā)方式。CPU響應(yīng)中斷時(shí),由硬件自動(dòng)清除IE1標(biāo)志。(1)TCON.7-TF1:T1的溢出中斷標(biāo)志位。T1被(1)TCON.7-TF1:T1的溢出中斷標(biāo)志位。T1被啟動(dòng)計(jì)數(shù)后從初值做加1計(jì)數(shù),計(jì)滿溢出后由硬件置位TF1,同時(shí)向CPU發(fā)出中斷請(qǐng)求,此標(biāo)志一直保持到CPU響應(yīng)中斷后才由硬件自動(dòng)清0。(2)TCON.5-TF0:T0溢出中斷標(biāo)志位。其操作功能與TF1相同。(3)TCON.3-IE1:外部中斷

中斷請(qǐng)求標(biāo)志位。IE1=1時(shí),外部中斷1向CPU申請(qǐng)中斷。(4)TCON.2-IT1:外部中斷

中斷觸發(fā)方式控制位。當(dāng)IT1=0,外部中斷1控制為電平觸發(fā)方式。在這種方式下,CPU在每個(gè)機(jī)器周期的S5P2期間對(duì)

(P3.3)引腳采樣,若為低電平,則置位IE1標(biāo)志位;若為高電平,則認(rèn)為無(wú)中斷申請(qǐng),或中斷申請(qǐng)已撤除,則IE1復(fù)位標(biāo)志位。在電平觸發(fā)方式中,CPU響應(yīng)中斷后不能由硬件自動(dòng)清除IE1標(biāo)志,也不能由軟件清除IE1標(biāo)志,所以,在中斷返回之前必須撤消

引腳上的低電平,否則將再次中斷導(dǎo)致出錯(cuò)。當(dāng)IT1=1,外部中斷1控制為邊沿觸發(fā)方式。CPU響應(yīng)中斷時(shí),由硬件自動(dòng)清除IE1標(biāo)志。(5)TCON.1-IE0:外部中斷

中斷標(biāo)志位。其操作功能與IE1相同。(6)TCON.0-IT0:

中斷觸發(fā)方式控制位。其操作功能與IT1相同。(1)TCON.7-TF1:T1的溢出中斷標(biāo)志位。T1被SCOND7D6D5D4D3D2D1D0(98H)

TIRI2.SCON寄存器中的中斷標(biāo)志SCON是串行口控制寄存器,其低2位TI和RI鎖存串行口的接收中斷標(biāo)志和發(fā)送中斷標(biāo)志。各位定義如下:(1)SCON.1-TI:串行接口發(fā)送中斷標(biāo)志位。CPU將數(shù)據(jù)寫入發(fā)送緩沖器SBUF時(shí),就啟動(dòng)發(fā)送,每發(fā)送完一個(gè)串行幀,硬件置位TI。CPU響應(yīng)中斷時(shí)不能自動(dòng)清除TI,必須由軟件清除。(2)SCON.0-RI:串行接口接收中斷標(biāo)志位。在串行口允許接收時(shí),每接收完一個(gè)串行幀,硬件置位RI。CPU在響應(yīng)中斷時(shí)不能自動(dòng)清除RI,必須由軟件清除。D7D6D5D4D3D2D1D0

2.SCON寄存IED7D6D5D4D3D2D1D0(A8H)EA//ESET1EX1ET0EX0位地址AFHAEHADHACHABHAAHA9HA8H3.IE寄存器中斷的開放和屏蔽標(biāo)志MCS-51系列單片機(jī)的5個(gè)中斷源都是可屏蔽中斷,其中斷系統(tǒng)內(nèi)部設(shè)有一個(gè)專用寄存器IE用來(lái)對(duì)各中斷源進(jìn)行開放或屏蔽的控制。IE寄存器各位定義如下:

IED7D6D5D4D3D2D1D0(A8H)EA//ESE(1)IE.7-EA:中斷總允許控制位。EA=1,開放所有中斷,而每個(gè)中斷源的開放和屏蔽可通過(guò)相應(yīng)的中斷允許位單獨(dú)加以控制;EA=0,禁止所有中斷。(2)IE.4-ES:串行口中斷允許位。ES=1,允許串行口的接收和發(fā)送中斷;ES=0禁止串行口的接收和發(fā)送中斷。(3)IE.3-ET1:定時(shí)/計(jì)數(shù)器T1中斷允許位。ET1=1,允許T1中斷;ET1=0,禁止T1中斷。(4)IE.2-EX1:外部中斷1(

)中斷允許位。EX1=1,允許外部中斷1中斷;EX1=0,禁止外部中斷1中斷。(5)IE.1-ET0:定時(shí)/計(jì)數(shù)器T0中斷允許位。ET0=1,允許T0中斷;ET0=0,禁止T0中斷。(6)IE.0-EX0:

外部中斷0(

)中斷允許位。EX0=1,允許外部中斷0中斷;EX0=0,禁止外部中斷0中斷。(1)IE.7-EA:中斷總允許控制位。EA=1,開IPD7D6D5D4D3D2D1D0(B8H)--PT2PSPT1PX1PT0PX0位地址BFBEBDBCBBBAB9B84.IE寄存器中斷優(yōu)先級(jí)標(biāo)志MCS-51單片機(jī)有2個(gè)中斷優(yōu)先級(jí),每個(gè)中斷源的中斷優(yōu)先級(jí)都是由中斷優(yōu)先級(jí)寄存器IP中的相應(yīng)位的狀態(tài)來(lái)規(guī)定的。其各位定義如下:IPD7D6D5D4D3D2D1D0(B8H)--PT2PS(1)IP.3-PT1:定時(shí)器T2中斷優(yōu)先控制位(僅適應(yīng)于52子系列單片機(jī))。PT2=1,設(shè)定定時(shí)器T2中斷為高優(yōu)先級(jí)中斷;相反為低優(yōu)先級(jí)中斷。(2)IP.4-PS:串行口中斷優(yōu)先控制位。PS=1,設(shè)定串行口為高優(yōu)先級(jí)中斷;相反為低優(yōu)先級(jí)中斷。(3)IP.3-PT1:定時(shí)器T1中斷優(yōu)先控制位。PT1=1,設(shè)定定時(shí)器T1中斷為高優(yōu)先級(jí)中斷;相反為低優(yōu)先級(jí)中斷。(4)IP.2-PX1:外部中斷1中斷優(yōu)先控制位。PX1=1,設(shè)定外部中斷1為高優(yōu)先級(jí)中斷;相反為低優(yōu)先級(jí)中斷。(5)IP.1-PT0:定時(shí)器T0中斷優(yōu)先控制位。PT0=1,設(shè)定定時(shí)器T0中斷為高優(yōu)先級(jí)中斷;相反為低優(yōu)先級(jí)中斷。(1)IP.3-PT1:定時(shí)器T2中斷優(yōu)先控制位(僅適應(yīng)(6)IP.0-PX0:外部中斷0中斷優(yōu)先控制位。PX0=1,設(shè)定外部中斷0為高優(yōu)先級(jí)中斷;相反為低優(yōu)先級(jí)中斷。當(dāng)系統(tǒng)復(fù)位后,IP低5位全部清0,所有中斷源均設(shè)定為低優(yōu)先級(jí)中斷。MCS-51單片機(jī)有5個(gè)中斷源,但只有兩個(gè)優(yōu)先級(jí),必然會(huì)有幾個(gè)中斷請(qǐng)求源處于同樣的優(yōu)先級(jí)。當(dāng)CPU同時(shí)收到幾個(gè)同優(yōu)先級(jí)中斷請(qǐng)求時(shí),MCS-51單片機(jī)內(nèi)部采用一個(gè)硬件查詢邏輯電路的查詢順序來(lái)判別這些同級(jí)中斷源的優(yōu)先級(jí),其自然優(yōu)先級(jí)由硬件形成,排列如下:中斷源

同級(jí)自然優(yōu)先級(jí)外部中斷0 最高級(jí)定時(shí)器T0中斷外部中斷1定時(shí)器T1中斷串行口中斷

最低級(jí)(6)IP.0-PX0:外部中斷0中斷優(yōu)先控制位。PX02.3中斷處理過(guò)程(一)中斷處理過(guò)程中斷處理過(guò)程可分為中斷響應(yīng)、中斷處理和中斷返回三個(gè)階段。不同的計(jì)算機(jī)因其中斷系統(tǒng)的硬件結(jié)構(gòu)不同,中斷響應(yīng)的方式也有所不同。在此以MCS-51單片機(jī)為例進(jìn)行說(shuō)明。

1.中斷響應(yīng)條件CPU響應(yīng)中斷的條件有:①有中斷源發(fā)出中斷請(qǐng)求。②中斷總允許位EA=1。③申請(qǐng)中斷的中斷源允許。滿足以上基本條件,CPU一般會(huì)響應(yīng)中斷,但若有下列任何一種情況存在,則中斷響應(yīng)會(huì)受到阻斷。①同級(jí)或高優(yōu)先級(jí)的中斷正在響應(yīng)。②當(dāng)前指令未執(zhí)行完。③正在執(zhí)行RETI中斷返回指令或訪問(wèn)專用寄存器IE和IP的指令。若存在上述任何一種情況,中斷查詢結(jié)果即被取消,CPU不響應(yīng)中斷請(qǐng)求而在下一機(jī)器周期繼續(xù)查詢,否則CPU在下一機(jī)器周期響應(yīng)中斷。2.3中斷處理過(guò)程(一)中斷處理過(guò)程

2.中斷響應(yīng)過(guò)程CPU響應(yīng)中斷的過(guò)程如下:①先置位相應(yīng)的“優(yōu)先級(jí)狀態(tài)”觸發(fā)器(該觸發(fā)器指出CPU當(dāng)前處理的中斷優(yōu)先級(jí)別),以阻斷同級(jí)或低級(jí)中斷申請(qǐng);②自動(dòng)清除相應(yīng)的中斷標(biāo)志(T1或RI除外);③自動(dòng)保護(hù)斷點(diǎn),將現(xiàn)行程序計(jì)數(shù)器PC內(nèi)容壓入堆棧,并根據(jù)中斷源把相應(yīng)的矢量單元地址裝入PC中。2.中斷響應(yīng)過(guò)程3.中斷處理中斷處理就是執(zhí)行中斷服務(wù)程序。中斷服務(wù)程序從中斷入口地址開始執(zhí)行,到返回指令“RETI”為止,一般包括兩部分內(nèi)容,一是保護(hù)現(xiàn)場(chǎng),二是完成中斷源請(qǐng)求的服務(wù)。通常,主程序和中斷服務(wù)程序都會(huì)用到累加器A、狀態(tài)寄存器PSW及其它一些寄存器,當(dāng)CPU進(jìn)入中斷服務(wù)程序用到上述寄存器時(shí),會(huì)破壞原來(lái)存儲(chǔ)在寄存器中的內(nèi)容,一旦中斷返回,將會(huì)導(dǎo)致主程序的混亂,因此,在進(jìn)入中斷服務(wù)程序后,一般要先保護(hù)現(xiàn)場(chǎng),然后,執(zhí)行中斷處理程序,在中斷返回之前再恢復(fù)現(xiàn)場(chǎng)。3.中斷處理(二)中斷返回中斷返回是指中斷服務(wù)完后,計(jì)算機(jī)返回原來(lái)斷開的位置(即斷點(diǎn)),繼續(xù)執(zhí)行原來(lái)的程序。中斷返回由中斷返回指令RETI來(lái)實(shí)現(xiàn),其具體功能如下:①將斷點(diǎn)地址從堆棧中彈出,送回到程序計(jì)數(shù)器PC;②將相應(yīng)中斷優(yōu)先級(jí)狀態(tài)觸發(fā)器清0,告訴中斷系統(tǒng)中斷服務(wù)程序已執(zhí)行完畢。(二)中斷返回(三)中斷標(biāo)志的清除CPU響應(yīng)中斷請(qǐng)求后即進(jìn)入中斷服務(wù)程序,在中斷返回前,應(yīng)撤除該中斷請(qǐng)求,否則,會(huì)重復(fù)引起中斷而導(dǎo)致錯(cuò)誤。MCS-51各中斷源中斷請(qǐng)求撤消的方法各不相同,分別為:1.串行口中斷請(qǐng)求的撤除串行口的中斷,CPU在響應(yīng)中斷后,硬件不能自動(dòng)清除中斷請(qǐng)求標(biāo)志位TI、RI,必須在中斷服務(wù)程序中用軟件來(lái)清除相應(yīng)的中斷標(biāo)志位,以撤消中斷請(qǐng)求。2.定時(shí)器中斷請(qǐng)求的撤除定時(shí)器0或1的溢出中斷,CPU在響應(yīng)中斷后即由硬件自動(dòng)清除中斷標(biāo)志位TF0或TF1,不必采取其它措施。(三)中斷標(biāo)志的清除3.外部中斷請(qǐng)求的撤除外部中斷可分為邊沿觸發(fā)型和電平觸發(fā)型。在下降沿觸發(fā)方式下,CPU響應(yīng)中斷后,也是由硬件自動(dòng)將IE0或IE1標(biāo)志位清除,不必采取其它措施。對(duì)于電平觸發(fā)的外部中斷,因?yàn)閷?duì)于電平觸發(fā)外中斷,CPU在響應(yīng)中斷后,硬件不會(huì)自動(dòng)清除其中斷請(qǐng)求標(biāo)志位IE0或IE1,同時(shí),也不能用軟件將其清除。所以,在CPU響應(yīng)中斷后,應(yīng)立即撤除

引腳上的低電平。否則,就會(huì)引起重復(fù)中斷而導(dǎo)致錯(cuò)誤。而CPU又不能控制

引腳的信號(hào),因此如圖所示,只有通過(guò)硬件再配合相應(yīng)軟件才能解決這個(gè)問(wèn)題。3.外部中斷請(qǐng)求的撤除外部中斷請(qǐng)求信號(hào)加在D觸發(fā)器的CLK端。由于D端接地,當(dāng)外部中斷請(qǐng)求的正脈沖信號(hào)出現(xiàn)在CLK端時(shí),Q端輸出為0,

為低,外部中斷向單片機(jī)發(fā)出中斷請(qǐng)求。利用P1口的P1.0作為應(yīng)答線,當(dāng)CPU響應(yīng)中斷后,可在中斷服務(wù)程序中采用兩條指令來(lái)撤除外部中斷請(qǐng)求:ANL P1,#0FEHORL P1,#01H

第一條指令使P1.0為0,因P1.0與D觸發(fā)器的異步置1端SD相連,Q端輸出為1,從而撤除中斷請(qǐng)求。第二條指令是必不可少的,使P1.0變?yōu)?,=1,Q繼續(xù)受CLK控制,即新的外部中斷請(qǐng)求信號(hào)又能向單片機(jī)申請(qǐng)中斷。否則將無(wú)法再次形成新的外部中斷。外部中斷請(qǐng)求信號(hào)加在D觸發(fā)器的CLK端。由于D端接地,當(dāng)外部2.4外部中斷源的擴(kuò)展在實(shí)際應(yīng)用中,若外部中斷源超過(guò)兩個(gè)外部中斷請(qǐng)求輸入端

,則需擴(kuò)充外部中斷源,這里介紹兩種簡(jiǎn)單可行的方法。1.用定時(shí)器作外部中斷源MCS-51單片機(jī)有兩個(gè)定時(shí)器,具有兩個(gè)內(nèi)部中斷標(biāo)志和外計(jì)數(shù)引腳,如在某些應(yīng)用中不被使用,則它們的中斷可作為外部中斷請(qǐng)求使用。2.4外部中斷源的擴(kuò)展在實(shí)際應(yīng)用中,若外部中斷源超過(guò)兩例3.8將定時(shí)器T1擴(kuò)展為外部中斷源。解:將T1設(shè)定為方式2(自動(dòng)恢復(fù)計(jì)數(shù)初值),TH1和TF1的初值均設(shè)置為FFH,允許T1中斷,CPU開放中斷,程序如下: MOV TMOD,#60H MOV TH1,#0FFH MOV TL1,#0FFH SETB TR1 SETB ET1 SETB EA

…當(dāng)連接在T1(P3.5)引腳的外部中斷請(qǐng)求輸入線發(fā)生負(fù)跳變時(shí),TL1加1溢出使TF1置1,向CPU發(fā)出中斷申請(qǐng);TH1的內(nèi)容同時(shí)自動(dòng)送至TL1使TL1恢復(fù)初值。這樣T1引腳每輸入一個(gè)負(fù)跳變,TF1都會(huì)置1,向CPU請(qǐng)求中斷。T0腳相當(dāng)于邊沿觸發(fā)的外部中斷源輸入線。也可將T0擴(kuò)展為外部中斷源。例3.8將定時(shí)器T1擴(kuò)展為外部中斷源。2.中斷和查詢相結(jié)合利用兩根外部中斷輸入線(

腳),每一中斷輸入線可以通過(guò)線或的關(guān)系連接多個(gè)外部中斷源,同時(shí)利用并行輸入端口線作為多個(gè)中斷源的識(shí)別線,電路原理圖如圖3-8所示圖3-8一個(gè)外中斷擴(kuò)展成多個(gè)外中斷的原理圖2.中斷和查詢相結(jié)合圖3-8一個(gè)外中斷擴(kuò)展成多個(gè)外中斷的圖中4個(gè)外部擴(kuò)展中斷源通過(guò)4個(gè)OC門電路組成線或后再與

(P3.3)相連,4個(gè)外部擴(kuò)展中斷源EINT0EINT3中有一個(gè)或幾個(gè)出現(xiàn)高電平則輸出為0,使

腳為低電平,從而發(fā)出中斷請(qǐng)求,因此,這些擴(kuò)充的外部中斷源都是高電平觸發(fā)方式。CPU執(zhí)行中斷服務(wù)程序時(shí),先依次查詢P1口的中斷源輸入狀態(tài)轉(zhuǎn)入到相應(yīng)的中斷服務(wù)程序,4個(gè)擴(kuò)展中斷源的優(yōu)先級(jí)順序由軟件查詢順序決定,即最先查詢的優(yōu)先級(jí)最高,最后查詢的優(yōu)先級(jí)最低。圖中4個(gè)外部擴(kuò)展中斷源通過(guò)4個(gè)OC門電路組成線或后再與 (P中斷服務(wù)程序如下:ORG 0013H ;外部中斷1入口AJMP INT1 ;轉(zhuǎn)向中斷服務(wù)程序入口INT1: PUSH PSW ;保護(hù)現(xiàn)場(chǎng) PUSH ACC JNB P1.0,EIT0 ;中斷源查詢并轉(zhuǎn)相應(yīng)中斷服務(wù)程序 JNB P1.1,EIT1 JNB P1.2,EIT2 JNB P1.3,EIT3EXIT: POP ACC ;恢復(fù)現(xiàn)場(chǎng) POP PSW RETI EIT0:

; EINT0中斷服務(wù)程序 AJMP EXIT EIT1:

; EINT1中斷服務(wù)程序 AJMP EXITEIT2:

; EINT2中斷服務(wù)程序 AJMP EXITEIT3:

;EINT3中斷服務(wù)程序 AJMP EXIT中斷服務(wù)程序如下:2.5中斷系統(tǒng)應(yīng)用舉例

中斷控制實(shí)質(zhì)上是對(duì)4個(gè)與中斷有關(guān)的特殊功能寄存器TCON、SCON、IE和IP進(jìn)行管理和控制,具體控制如下:(1)CPU的開中斷與關(guān)中斷。(2)某個(gè)中斷源中斷請(qǐng)求的允許和屏蔽。

(3)各中斷源優(yōu)先級(jí)別的設(shè)定。

(4)外部中斷請(qǐng)求觸發(fā)方式的設(shè)定。中斷管理和控制程序一般都包含在主程序中,根據(jù)需要通過(guò)幾條指令來(lái)完成。中斷服務(wù)程序是一種具有特定功能的獨(dú)立程序段,可根據(jù)中斷源的具體要求進(jìn)行服務(wù)。下面通過(guò)實(shí)例來(lái)說(shuō)明其具體應(yīng)用。

2.5中斷系統(tǒng)應(yīng)用舉例1.定時(shí)/計(jì)數(shù)器中斷應(yīng)用舉例例3.9如圖3-9所示,用T0監(jiān)視一汽車配件生產(chǎn)流水線,每生產(chǎn)100個(gè)工件,發(fā)出一包裝命令,包裝成一箱,并記錄其箱數(shù)。圖中D1為紅外發(fā)光二極管,D2為紅外光敏二極管,當(dāng)D2接收到D1發(fā)出的紅外光照射時(shí)導(dǎo)通,T0輸入端產(chǎn)生一個(gè)負(fù)脈沖作為計(jì)數(shù)脈沖。圖3-9用T0作計(jì)數(shù)器硬件電路1.定時(shí)/計(jì)數(shù)器中斷應(yīng)用舉例圖3-9用T0作計(jì)數(shù)器硬件解:根據(jù)題意,用T0作計(jì)數(shù)器,每計(jì)數(shù)100次T0計(jì)數(shù)器溢出,由P1.0控制包裝機(jī)打包。定時(shí)/計(jì)數(shù)器T0的4種工作方式均可滿足計(jì)數(shù)要求,而方式2具有自動(dòng)重裝功能,因此本題選用定時(shí)方式2。定時(shí)/計(jì)數(shù)器工作方式控制字TMOD=06H(T0方式2且為計(jì)數(shù)方式)計(jì)數(shù)初值=28―100=9CH若用31H、30H單元保存箱數(shù)計(jì)數(shù)值,打包控制信號(hào)(正脈沖)由P1.0輸出,程序?yàn)椋?/p>

ORG0000H

LJMPMAIN

ORG000BH;T0中斷入口地址

LJMPDD1

ORG0030H

解:根據(jù)題意,用T0作計(jì)數(shù)器,每計(jì)數(shù)100次T0計(jì)數(shù)器溢出,MAIN:MOVP1,#00H;P1.0無(wú)信號(hào)輸出

MOV30H,#00H;

MOV31H,#00H;箱數(shù)計(jì)數(shù)器清“0”

MOVTMOD,#06H;置T0工作方式

MOVTH0,#9CH

MOVTL0,#9CH;計(jì)數(shù)初值送計(jì)數(shù)器

MOVIE,#82H;T0允許中斷

SETBTR0;啟動(dòng)T0

AJMP$;程序循環(huán)執(zhí)行DD1:MOVA,30H

ADDA,#01H;計(jì)數(shù)器加“1”

MOV30H,A;保存

MOVA,#00H

ADDCA,31H;若有進(jìn)位,加進(jìn)位

MOV31H,A;

SETBP1.0;啟動(dòng)外設(shè)包裝

;包裝延時(shí)

CLRP1.0;包裝結(jié)束

RETI

END

MAIN:MOVP1,#00H;P1.0無(wú)信號(hào)輸出

MOV32.外部中斷應(yīng)用舉例例3.11如圖為一汽車簡(jiǎn)單防盜報(bào)警系統(tǒng)控制電路,K1為安裝在車門內(nèi)的開關(guān),門關(guān)閉時(shí)接高電平,門打開時(shí)接低電平;K2為報(bào)警/不報(bào)警選擇開關(guān),當(dāng)P1.7為高電平時(shí)報(bào)警,否則不報(bào)警。報(bào)警聲音采用語(yǔ)音芯片播放,當(dāng)P1.1為低電平時(shí),喇叭發(fā)聲,否則不發(fā)聲。工作時(shí)只要K2選擇報(bào)警狀態(tài),當(dāng)外人打開車門時(shí),K1接低電平觸發(fā)

中斷,P1.1輸出低電平報(bào)警,程序編寫為:圖3汽車簡(jiǎn)單防盜報(bào)警電路2.外部中斷應(yīng)用舉例圖3汽車簡(jiǎn)單防盜報(bào)警電路

ORG0000H

LJMPMAIN

ORG0003H

LJMPLL

ORG0030H

MAIN:MOVP1,#0FFH;P1設(shè)為輸入

MOVA,P1;讀P1狀態(tài)

SETBP1.1;關(guān)閉揚(yáng)聲器

JBACC.7,TT;P1.7=1允許報(bào)警

CLREA;P1.7=0不允許報(bào)警

CLREX0

LJMPKK

TT:SETBEX0;中斷允許

SETBEA

CLRIT0;電平觸發(fā)方式

ORG0000H

LJMPMAIN

ORG0003H

KK:AJMP$

;中斷服務(wù)程序LL:CLREA;關(guān)閉中斷

CLRP1.1;使語(yǔ)音芯片工作

AJMP$;無(wú)外界干預(yù),一直報(bào)警

RETI

END

KK:AJMP$

;中斷服務(wù)程序LL:CLREA;關(guān)閉中斷項(xiàng)目實(shí)施汽車轉(zhuǎn)向燈單片機(jī)控制設(shè)計(jì)與仿真(匯編語(yǔ)言)1.項(xiàng)目設(shè)備與電路(1)項(xiàng)目設(shè)備:?jiǎn)纹瑱C(jī)仿真器、編程器和單片機(jī)應(yīng)用系統(tǒng)。(2)項(xiàng)目電路:如圖

項(xiàng)目3電路圖項(xiàng)目實(shí)施汽車轉(zhuǎn)向燈單片機(jī)控制設(shè)計(jì)與仿真(匯編語(yǔ)言)12.流程圖本實(shí)驗(yàn)主程序流程圖如圖所示。2.流程圖本實(shí)驗(yàn)主程序流程圖如圖所示。3.項(xiàng)目步驟及要求(1)步驟1:定時(shí)器查詢方式要求:用定時(shí)器方式1編制1秒的延時(shí)程序,實(shí)現(xiàn)信號(hào)燈循環(huán)顯示的控制。系統(tǒng)采用12M晶振,采用定時(shí)器T0方式1定時(shí)50ms,用R3做50ms計(jì)數(shù)單元,得到1s,可設(shè)計(jì)源程序如下:ORG0000HMOVA,#11111110B;開始時(shí),欲令最右邊的LED亮LOOP:MOVP1,A;把A的內(nèi)容送至P1ACALLDELAY;延時(shí)1sRLA;把A的內(nèi)容向左移1位AJMPLOOPDELAY:MOVR3,#20;欲延時(shí)50ms×20=1000ms=1sMOVTMOD,#00000001B;設(shè)定時(shí)器0工作在模式1(即16位定時(shí)器)TIMER:MOVTH0,#3CH;設(shè)定計(jì)數(shù)值,以便定時(shí)50msMOVTL0,#0B0HSETBTR0;起動(dòng)定時(shí)器0WAIT:JBTF0,OK;等待TF0=1(即等待時(shí)間50ms到)

AJMPWAITOK:CLRTF0;清除TF0,使TF0=0DJNZR3,TIMER;若時(shí)間1s未到,則繼續(xù)定時(shí)

RET;時(shí)間1s到,返回主程序

END3.項(xiàng)目步驟及要求(1)步驟1:定時(shí)器查詢方式3.項(xiàng)目步驟及要求(2)步驟2:定時(shí)器中斷方式要求:用定時(shí)器中斷方式編制1秒的延時(shí)程序,實(shí)現(xiàn)信號(hào)燈循環(huán)顯示的控制。采用定時(shí)器T0中斷定時(shí)50ms,用R3做50ms計(jì)數(shù)單元,主程序從0000H開始,中斷服務(wù)程序名為T0IN??稍O(shè)計(jì)源程序如下:

ORG0000HAJMPMAIN;主程序必須避開地址000BHORG000BH;定時(shí)器0的中斷服務(wù)程序,起始地址一定在000BHAJMPT0IN;程序跳轉(zhuǎn)到T0IN處MAIN:MOVA,#11111110B;開始時(shí),欲令最右邊的LED亮

MOVP1,AMOVR3,#20;令R3=20,欲延時(shí)50ms×20=1000ms=1sMOVTMOD,#00000001B;設(shè)定時(shí)器0工作在模式1(即16位定時(shí)器)

MOVTH0,#3CH;設(shè)定計(jì)數(shù)值,以便定時(shí)50msMOVTL0,#0B0HSETBEA;定時(shí)器0,中斷使能

SETBET0SETBTR0;起動(dòng)定時(shí)器0SJMP$;暫停于本地址,等待中斷信號(hào)T0IN:MOVTH0,#3CH;重新設(shè)定計(jì)數(shù)值

MOVTL0,#0B0HDJNZR3,CONT;若R3-1≠0,表示時(shí)間1s未到,跳至CONT處

MOVR3,#20;重新設(shè)定R3值

RLA;把LED左移1位

MOVP1,ACONT:RETI;返回主程序

END

3.項(xiàng)目步驟及要求(2)步驟2:定時(shí)器中斷方式項(xiàng)目拓展汽車轉(zhuǎn)向燈單片機(jī)控制設(shè)計(jì)與仿真(C語(yǔ)言)采用單片機(jī)內(nèi)部定時(shí)器制作一個(gè)5秒定時(shí)器,每計(jì)時(shí)5秒鐘蜂鳴器報(bào)警提示,然后重新開始計(jì)時(shí)。硬件電路設(shè)計(jì)如圖所示。項(xiàng)目拓展汽車轉(zhuǎn)向燈單片機(jī)控制設(shè)計(jì)與仿真(C語(yǔ)言)#include<reg51.h>sbitP1_0=P1^0;//位定義

unsignedcharled[]={0xf9,0xa4,0xb0,0x99,0x92};//定義數(shù)組led存放數(shù)字1~5的字型碼voiddelay1s()//采用定時(shí)器1實(shí)現(xiàn)1秒延時(shí)

{unsignedchari;for(i=0;i<20;i++) //設(shè)置20次循環(huán)次數(shù)

{ TH1=0x3c; //設(shè)置定時(shí)器初值為3CB0HTL1=0xb0;TR1=1; //啟動(dòng)T1while(!TF1); //查詢計(jì)數(shù)是否溢出,即定時(shí)50ms時(shí)間到,TF1=1TF1=0; //50ms定時(shí)時(shí)間到,將T1溢出標(biāo)志位TF1清零

}}voidmain() //主函數(shù)

{unsignedchari;TMOD=0x10; //設(shè)置定時(shí)器1工作于方式1while(1){P1_0=1;for(i=0;i<5;i++){P2=led[i]; //字型顯示碼送段控制口P2delay1s(); //延時(shí)1秒

} P1_0=0;//蜂鳴器報(bào)警提示

delay1s();}}#include<reg51.h>第一節(jié)定時(shí)/計(jì)數(shù)器1.1定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)和工作原理

1.定時(shí)/計(jì)數(shù)器組成框圖

MCS-51單片機(jī)結(jié)構(gòu)框圖如圖所示。定時(shí)/計(jì)數(shù)器由定時(shí)器方式寄存器TMOD、定時(shí)器控制寄存器TCON、定時(shí)器T0和定時(shí)器T1組成。第一節(jié)定時(shí)/計(jì)數(shù)器1.1定時(shí)/計(jì)數(shù)器的結(jié)

2.定時(shí)/計(jì)數(shù)器工作原理當(dāng)定時(shí)/計(jì)數(shù)器設(shè)置為定時(shí)工作方式時(shí),計(jì)數(shù)器對(duì)內(nèi)部機(jī)器周期計(jì)數(shù),每過(guò)一個(gè)機(jī)器周期,計(jì)數(shù)器增1,直至計(jì)滿溢出。定時(shí)器的定時(shí)時(shí)間與系統(tǒng)的振蕩頻率緊密相關(guān),因MCS-51單片機(jī)的一個(gè)機(jī)器周期由12個(gè)振蕩脈沖組成,所以,計(jì)數(shù)頻率。如果單片機(jī)系統(tǒng)采用12M晶振,則計(jì)數(shù)周期為:

二、定時(shí)/計(jì)數(shù)器的控制

1.方式寄存器TMOD2.定時(shí)/計(jì)數(shù)器工作原理二、定時(shí)/

1)M1和M0—方式選擇位。

M1M0工作方式功能說(shuō)明00方式013位定時(shí)/計(jì)數(shù)器01方式116位定時(shí)/計(jì)數(shù)器10方式28位自動(dòng)重裝定時(shí)/計(jì)數(shù)器11方式3定時(shí)器0分成兩個(gè)獨(dú)立的8位定時(shí)/計(jì)數(shù)器;定時(shí)器1在此方式停止計(jì)數(shù)

2)—功能選擇位。

時(shí)設(shè)置為定時(shí)器工作模式

時(shí)設(shè)置為計(jì)數(shù)器工作模式;

3)GATE—門控位。

當(dāng)GATE=0時(shí),定時(shí)器的啟停只由軟件控制位TR0或TR1來(lái)控制,為1啟動(dòng)定時(shí)器工作,為0停止定時(shí)器工作;當(dāng)GATE=1時(shí),軟件控制位TR0或TR1須置1,同時(shí)還須(P3.2)或(P3.3)為高電平才能啟動(dòng)定時(shí)器,即允許外中斷、啟動(dòng)定時(shí)器。1)M1和M0—方式選擇位。M1

1)TCON.7-TF1

定時(shí)器1溢出標(biāo)志位。

2)TCON.6-TR1定時(shí)器1啟動(dòng)控制位。

2.控制寄存器TCON

TCON的作用:控制定時(shí)器的啟動(dòng)、停止和定時(shí)器的溢出標(biāo)志位,外部中斷請(qǐng)求位和觸發(fā)方式。定時(shí)器控制字TCON的格式如下:

3)TCON.5-TF0定時(shí)器0溢出標(biāo)志位。

4)TCON.4-TR0定時(shí)器0啟動(dòng)控制位。1)TCON.7-TF1定時(shí)器

5)TCON.3-IE1外部中斷1()的中斷請(qǐng)求標(biāo)志位。

6)TCON.2-IT1外部中斷1觸發(fā)方式選擇位。

7)TCON.1-IE0

8)TCON.0-IT0外部中斷0觸發(fā)方式選擇位。外部中斷0()的中斷請(qǐng)求標(biāo)志位。

3.定時(shí)/計(jì)數(shù)器的初始化編程1)確定工作模式、工作方式、啟動(dòng)控制位——對(duì)TMOD賦值。2)預(yù)置定時(shí)或計(jì)數(shù)的初值——直接將初值寫入TH0、TL0或TH1、TL1中。3)根據(jù)需要開啟定時(shí)/計(jì)數(shù)器中斷——直接對(duì)IE寄存器賦值。4)啟動(dòng)定時(shí)/計(jì)數(shù)器工作——將TR0或TR1置“1”。5)TCON.3-IE1外部中斷1(1.3定時(shí)/計(jì)數(shù)器的工作方式

1.方式0當(dāng)TMOD的M1M0為00時(shí),定時(shí)/計(jì)數(shù)器工作于方式0,為13位的定時(shí)/計(jì)數(shù)器。

T1(或T0)方式0時(shí)的邏輯電路結(jié)構(gòu)圖1.3定時(shí)/計(jì)數(shù)器的工作方式1.由圖可知:16位加法計(jì)數(shù)器(TH1和TL1)只用了13位。其中,TH1占高8位,TL1占低5位(只用低5位,高3位未用)。當(dāng)TL1低5位溢出時(shí)自動(dòng)向TH1進(jìn)位,而TH1溢出時(shí)向中斷位TF1進(jìn)位(硬件自動(dòng)置位),并申請(qǐng)中斷。當(dāng)=0時(shí),控制開關(guān)連接12分頻器輸出,T1對(duì)機(jī)器周期計(jì)數(shù),此時(shí),T1為定時(shí)器。設(shè)定時(shí)器1初值為X,其定時(shí)時(shí)間為:當(dāng)=1時(shí),控制開關(guān)與T1(P3.5)相連,外部計(jì)數(shù)脈沖由T1腳輸入,當(dāng)外部信號(hào)電平發(fā)生由0到1的跳變時(shí),計(jì)數(shù)器加1,這時(shí)T1成為外部事件的計(jì)數(shù)器。

當(dāng)GATE=0時(shí),反相為1,使或門輸出為1,與門輸出是否為1(即定時(shí)器1的啟動(dòng))直接由TR1控制。當(dāng)GATE=1時(shí),若TR1=1,外部信號(hào)電平通過(guò)引腳直接開啟或關(guān)斷定時(shí)器T1。由圖可知:16位加法計(jì)數(shù)器(TH1和TL1)只用了例3.1設(shè)f=12MHZ,用定時(shí)器0方式0實(shí)現(xiàn)1s的延時(shí)DELAY:MOV R3,#200;置5ms計(jì)數(shù)循環(huán)初值

MOV TMOD,#00H;設(shè)定時(shí)器0為方式0MOV TH0,#63H ;置定時(shí)器初值

MOV TL0,#18H SETB TR0 ;啟動(dòng)T0LP1: JBC TF0,LP2;查詢計(jì)數(shù)溢出SJMP LP1 ;未到5ms繼續(xù)計(jì)數(shù)LP2: MOV TH0,#63H;重新置定時(shí)器初值

MOV TL0,#18H DJNZ R3,LP1 ;未到1s繼續(xù)循環(huán)

RET ;返回主程序例3.1設(shè)f=12MHZ,用定時(shí)器0方式0實(shí)現(xiàn)1s的延時(shí)例3.2設(shè)f=12MHZ,用定時(shí)器0方式0實(shí)現(xiàn)70ms的延時(shí)。voiddelay70ms(){unsignedchari;TMOD=0X00;//設(shè)置T0為定時(shí)器,工作方式0for(i=0;i<10;i++);//設(shè)置10次循環(huán)次數(shù)

{TH0=0x25;//設(shè)置定時(shí)器初值為2508HTL0=0x08;TR0=1;//啟動(dòng)T1While(!TF0);//查詢計(jì)數(shù)是否溢出,即定時(shí)7ms時(shí)間到,TF0=1TF0=0;//7ms定時(shí)時(shí)間到,將T0溢出標(biāo)志位TF0清零}}例3.2設(shè)f=12MHZ,用定時(shí)器0方式0實(shí)現(xiàn)70ms的

2.方式1當(dāng)TMOD的M1M0為01時(shí),定時(shí)器工作于方式1,其邏輯結(jié)構(gòu)圖如圖所示。

T1(或T0)方式1時(shí)的邏輯電路結(jié)構(gòu)圖2.方式1當(dāng)TMOD的M1M例3.2設(shè)f=12MHZ,用定時(shí)器0方式0實(shí)現(xiàn)70ms的延時(shí)。voiddelay70ms(){unsignedchari;TMOD=0X00;//設(shè)置T0為定時(shí)器,工作方式0for(i=0;i<10;i++);//設(shè)置10次循環(huán)次數(shù)

{TH0=0x25;//設(shè)置定時(shí)器初值為2508HTL0=0x08;TR0=1;//啟動(dòng)T1While(!TF0);//查詢計(jì)數(shù)是否溢出,即定時(shí)7ms時(shí)間到,TF0=1TF0=0;//7ms定時(shí)時(shí)間到,將T0溢出標(biāo)志位TF0清零}}例3.2設(shè)f=12MHZ,用定時(shí)器0方式0實(shí)現(xiàn)70ms的例3.3設(shè)f=12MHZ,用定時(shí)器1方式1實(shí)現(xiàn)200us的延時(shí)voiddelay200us(){TMOD=0X10;//設(shè)置T1為定時(shí)器,工作方式1TH1=0xFF;//設(shè)置定時(shí)器初值為FF38HTL1=0x38;TR1=1;//啟動(dòng)T1While(!TF1);//查詢計(jì)數(shù)是否溢出,即定時(shí)200us時(shí)間到,TF1=1TF1=0;//200us定時(shí)時(shí)間到,將T1溢出標(biāo)志位TF1清零}}例3.3設(shè)f=12MHZ,用定時(shí)器1方式1實(shí)現(xiàn)200us的延

3.方式2當(dāng)TMOD的M1M0為10時(shí),定時(shí)/計(jì)數(shù)器工作于方式2,其邏輯結(jié)構(gòu)圖如圖所示。

T1(或T0)方式2時(shí)的邏輯電路結(jié)構(gòu)圖3.方式2當(dāng)TMOD的M1例3.4設(shè)f=12MHZ,用定時(shí)器0方式0實(shí)現(xiàn)1s的延時(shí)DELAY:MOV R3,#200;置5ms計(jì)數(shù)循環(huán)初值

MOV TMOD,#00H;設(shè)定時(shí)器0為方式0MOV TH0,#63H ;置定時(shí)器初值

MOV TL0,#18H SETB TR0 ;啟動(dòng)T0LP1: JBC TF0,LP2;查詢計(jì)數(shù)溢出SJMP LP1 ;未到5ms繼續(xù)計(jì)數(shù)LP2: MOV TH0,#63H;重新置定時(shí)器初值

MOV TL0,#18H DJNZ R3,LP1 ;未到1s繼續(xù)循環(huán)

RET ;返回主程序例3.4設(shè)f=12MHZ,用定時(shí)器0方式0實(shí)現(xiàn)1s的延時(shí)例3.5設(shè)f=6MHZ,用定時(shí)器1方式2實(shí)現(xiàn)1ms的延時(shí)。解:(1)可選擇定時(shí)時(shí)間為500us,再循環(huán)2次。計(jì)數(shù)值=500us/2us=250;計(jì)數(shù)初值=256-250=6=110B=6H。(2)C語(yǔ)言編程實(shí)現(xiàn)1ms延時(shí)函數(shù)voiddelay1ms(){unsignedchari;TMOD=0X20;TH0=0x06;//設(shè)置定時(shí)器初值為06HTL0=0x06;for(i=0;i<2;i++);//設(shè)置2次循環(huán)次數(shù){TR1=1;//啟動(dòng)T1While(!TF1);//查詢計(jì)數(shù)是否溢出,即定時(shí)500us時(shí)間到,TF1=1TF1=0;//500us定時(shí)時(shí)間到,將T1溢出標(biāo)志位TF1清零}}例3.5設(shè)f=6MHZ,用定時(shí)器1方式2實(shí)現(xiàn)1ms的延時(shí)

3.方式3方式3只適應(yīng)于定時(shí)/計(jì)數(shù)器T0,當(dāng)TMOD的M1M0為11時(shí),定時(shí)/計(jì)數(shù)器工作于方式3時(shí),其邏輯結(jié)構(gòu)圖如圖所示。T0方式3時(shí)的邏輯結(jié)構(gòu)3.方式3方式3只適應(yīng)于定時(shí)/計(jì)數(shù)器T例3.6用定時(shí)器T0方式3實(shí)現(xiàn)P1.0端口指示燈間隔1s的閃爍。解:根據(jù)題意分析,定時(shí)器T0中的TH0只能為定時(shí)器,定時(shí)時(shí)間設(shè)為250s;TL0設(shè)置為計(jì)數(shù)器,計(jì)數(shù)值設(shè)為200。TH0計(jì)滿溢出后,用軟件復(fù)位的方法使T0(P3.4)引腳產(chǎn)生負(fù)跳變,TH0每溢出一次,T0引腳便產(chǎn)生一個(gè)負(fù)跳變,TL0便計(jì)數(shù)一次。TL0計(jì)滿溢出時(shí),延時(shí)時(shí)間應(yīng)為50ms,循環(huán)20次則可得到1s的延時(shí)。由上可知,TH0計(jì)數(shù)初值為:X=(256250)=6=06HTL0計(jì)數(shù)初值為:X=(256200)=56=38HTMOD=00000111B=07H1s延時(shí)子程序如下:DELAY:MOVR3,#14H;置100ms計(jì)數(shù)循環(huán)初值

MOVTMOD,#07H;置定時(shí)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論