單片機原理及接口技術(shù)_第1頁
單片機原理及接口技術(shù)_第2頁
單片機原理及接口技術(shù)_第3頁
單片機原理及接口技術(shù)_第4頁
單片機原理及接口技術(shù)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機原理及接口技術(shù)第二李全利C的中斷系統(tǒng)及定計數(shù)器80C51中斷系統(tǒng)的結(jié)構(gòu)5個中斷源、2個優(yōu)先級2024/4/72中斷源5.1.280C51的中斷源外部中斷0(INT0)外部中斷1(INT1)T0溢出中斷(TF0)T1溢出中斷(TF1)串行口中斷(RI或TI)2024/4/73觸發(fā)方式設置及中斷標志

76543210TCONTF1TR1TF0TR0IE1IT1IE0IT0字節(jié)地址:88H電平方式(ITx=0),INTx引腳低電平時IEx=1,響應中斷后IEx不自動清0(INTx引腳狀態(tài))。邊沿方式(ITx=1),INTx引腳負跳變時IEx=1,響應中斷后IEx自動清0。外部中斷標志IE1、IE0(用IEx表示)2024/4/74兩種觸發(fā)方式比較:電平方式時,INTx低電平必須保持到響應時,否則就會漏掉;在中斷服務結(jié)束前,INTx低電平必須撤除,否則中斷返回之后將再次產(chǎn)生中斷。例,8255的中斷請求線在接受讀或?qū)懖僮骱蠹幢粡臀?,因此以其去請求電平觸發(fā)方式的中斷比較方便。邊沿方式時,采樣到有效下降沿后,在IEx中將鎖存一個1。若CPU暫時不能響應,申請標志也不會丟失,直到響應時才清0。例,ADC0809的轉(zhuǎn)換結(jié)束信號EOC為正脈沖,經(jīng)反相后就可以作為80C51的INTx信號。2024/4/75溢出中斷標志TF1、TF0(用TFx表示)

溢出中斷請求標志TFx,Tx啟動后就開始由初值進行加1計數(shù),直至最高位產(chǎn)生溢出使TFx=1向CPU請求中斷。CPU響應中斷后TFx自動清0。

SCON的中斷標志76543210SCONTIRI字節(jié)地址:98HRI:串口接收中斷標志,響應中斷時不能自動清除TI:串口發(fā)送中斷標志,響應中斷時不能自動清除2024/4/765.1.380C51中斷的控制中斷允許控制中斷源的開放和屏蔽由IE控制(1,開放;0,禁止)

76543210IEEAESET1EX1ET0EX0字節(jié)地址:A8HEX0:外中斷0允許ET0:T0中斷允許

EX1:外中斷1允許ET1:T1中斷允許ES:串口中斷允許EA:CPU中斷允許

2024/4/77中斷優(yōu)先級控制中斷優(yōu)先級由IP控制(1,高級;0,低級)

76543210IPPSPT1PX1PT0PX0字節(jié)地址:B8HPX0:外中斷0優(yōu)先級

PT0:T0中斷優(yōu)先級PX1:外中斷1優(yōu)先級PT1:T1中斷優(yōu)先級PS:串口中斷優(yōu)先級同一優(yōu)先級的自然順序:自高至低:INT0、TO、INT1、T1、串口。

2024/4/78中斷優(yōu)先級遵循的原則幾個中斷同時申請,先響應高級的中斷正進行的中斷服務,同級或低級中斷不能對其中斷,但可以被高級中斷所中斷。

為此,中斷系統(tǒng)內(nèi)設有對應高、低2個優(yōu)先級狀態(tài)觸發(fā)器(用戶不能尋址)。狀態(tài)觸發(fā)器的復位由中斷返回指令RETI控制。2024/4/795.2

80C51單片機中斷處理過程5.2.1中斷響應條件和時間中斷響應條件有中斷請求

相應的中斷允許位為1CPU開中斷(即EA=1)

遇下面情況之一將不被響應(此間中斷條件失效,中斷丟失)正在處理同級或高級中斷

當前查詢周期不是所執(zhí)行指令的最后一個機器周期

正在執(zhí)行RETI或訪問IE或IP的指令

2024/4/710中斷響應時間中斷響應至少需要3個完整的機器周期(3~8個)!受阻時要附加3~5個機器周期(無同級或高級中斷正進行)查詢周期不是當前指令的最后機器周期(如MUL,+3)查詢周期恰逢RETI類指令(且后跟MUL指令+5)2024/4/7115.2.2中斷響應過程

CPU響應中斷過程將相應優(yōu)先級狀態(tài)觸發(fā)器置1(阻斷后來同級或低級中斷)執(zhí)行硬件LCALL指令(PC入棧,中斷服務程序入口址送PC

)執(zhí)行中斷服務程序

編寫中斷服務程序注意中斷服務程序入口存放指令LJMP或AJMP現(xiàn)場保護與現(xiàn)場恢復2024/4/7125.2.3中斷返回中斷服務程序最后指令必須是RETI,其功能:將斷點從堆棧彈送PC,CPU從原斷點繼續(xù)執(zhí)行將相應優(yōu)先級狀態(tài)觸發(fā)器清0,恢復原來工作狀態(tài)注意不能用RET代替RETI中斷服務程序中PUSH和POP必須成對使用2024/4/7135.2.4中斷程序舉例【例5-1】單外部中斷源示例ORG0000HSTART:LJMPMAIN

ORG0003HLJMPINTO

ORG0030HMAIN:CLRIT0;電平

SETBEASETBEX0

MOVDPTR,#1000H

……

主程序:2024/4/714中斷服務程序:ORG0200HINT0:PUSHPSWPUSHACCCLRP3.0;由P3.0輸出0NOPNOPSETBP3.0MOVP1,#0FFH;置P1口為輸入

MOVA,P1;輸入數(shù)據(jù)

MOVX@DPTR,A;存入數(shù)據(jù)存儲器

INCDPTR;修改數(shù)據(jù)指針,指向下一個單元

……POPACC;恢復現(xiàn)場

POPPSWRETI2024/4/715【例5-2】多外部中斷源示例中斷服務程序:

ORG0003HLJMPINSE0

ORG0013HLJMPINSE1

……INSE0:PUSHPSW;XI0中斷服務

PUSHACC……POPACCPOPPSWRETI(轉(zhuǎn)下頁)2024/4/716INSE1:PUSHPSW(接上頁)PUSHACCJBP1.0,DV1;P1.0為1,轉(zhuǎn)XI1中斷服務程序

JBP1.1,DV2;P1.1為1,轉(zhuǎn)XI2中斷服務程序

JBP1.2,DV3;P1.2為1,轉(zhuǎn)XI3中斷服務程序

JBP1.3,DV4;P1.3為1,轉(zhuǎn)XI4中斷服務程序INRET:POPACCPOPPSWRETIDV1:……;XI1中斷服務程序

AJMPINRET……DV4:……;XI4中斷服務程序

AJMPINRET

2024/4/7175.3

80C51單片機的定時/計數(shù)器定時/計數(shù)器的結(jié)構(gòu)基本型:T0,定時、計數(shù)。T1,定時、計數(shù)、串口波特率發(fā)生器。增強型:增加了T2。見5.3.4節(jié)。5.3.1定時/計數(shù)器的結(jié)構(gòu)和工作原理TH1、TL1TH0、TL0TCONTMOD2024/4/718定時/計數(shù)器的工作原理實質(zhì)是16位加1計數(shù)器定時器模式時,是對內(nèi)部機器周期計數(shù)。計數(shù)值乘以機器周期就是定時時間計數(shù)器模式時,是對外部事件計數(shù)。脈沖由T0(P3.4)或T1(P3.5)引腳輸入。

注意:(若計數(shù)值為N,計數(shù)初值為X)溢出信號使TF0或TF1置1,并發(fā)出中斷請求,16位時有:N=65536-X,或X=65536-N12MHz晶振時,計數(shù)頻率低于0.5MHz

2024/4/7195.3.2定時/計數(shù)器的控制工作方式寄存器TMOD

76543210TMODGATEC/TM1M0GATEC/TM1M0字節(jié)地址:89HGATE:門控位。GATE=0時,只要TRx為1,就可啟動計數(shù)器工作;GATA=1時,定時器的啟動還要加上INTx引腳為高電平這一條件。

C/T:模式選擇位。清0為定時模式,置1為計數(shù)方式。M1M0:工作方式設置位??稍O置四種工作方式(見下頁)。2024/4/720M1M0工作方式說明00方式013位定時/計數(shù)器01方式116位定時/計數(shù)器10方式28位自動重裝定時/計數(shù)器11方式3T0分成兩個獨立的8位定時/計數(shù)器;T1此方式停止計數(shù)注意:TMOD不能進行位尋址2024/4/721控制寄存器TCON

76543210TCONTF1TR1TF0TR0字節(jié)地址:88HTFx:Tx溢出標志位。響應中斷后TFx有硬件自動清0。用軟件設置TFx可產(chǎn)生同硬件置1或清0同樣的效果。TRx:Tx運行控制位。置1時開始工作;清0時停止工作。TRx要由軟件置1或清0(即啟動與停止要由軟件控制)。2024/4/7225.3.3定時/計數(shù)器的工作方式T0有方式0、1、2、3;T1有方式0、1、2。以T0為例說明。方式0:13位方式

2024/4/723C/T=1時,則為計數(shù)模式,有:X=213-N=8192-NC/T=0時,則為定時模式,有:X=213-N=8192-N,N=t/Tcy【例5-3】若計數(shù)個數(shù)N為2,求計數(shù)初值。公式法計算:X=8192-2=8190=1FFEH求補法計算:對0000000000010B取反加1為:1111111111110B(1FFEH)初值計算:公式法

求補法:X=對N求補2024/4/724LJMPMAIN【例5-5】有一包裝流水線,產(chǎn)品每計數(shù)24瓶時發(fā)出一個包裝控制信號。與門輸出1時,控制開關(guān)接通,計數(shù)開始;【例5-5】有一包裝流水線,產(chǎn)品每計數(shù)24瓶時發(fā)出一個包裝控制信號。380C51中斷的控制中斷服務程序最后指令必須是RETI,其功能:求補法:X=對N求補使TR0或TR1置位,啟動定時/計數(shù)器工作。DVT0:DJNZR7,NT0T0外部引腳上出現(xiàn)一個下降沿信號時,TL0計數(shù)加1,產(chǎn)生溢出,將TF0置1,向CPU發(fā)出中斷請求……實現(xiàn)方法:一是采用1個定時器定時一定的間隔(如20ms),然后用軟件進行計數(shù);C/T=0時,則為定時模式,有:T1,定時、計數(shù)、串口波特率發(fā)生器。2定時/計數(shù)器的控制LJMPMAIN0為1,轉(zhuǎn)XI1中斷服務程序MOVTH0,#0D8HPOPPSW門控位作用當GATE=0時僅由TR0控制與門的開啟。與門輸出1時,控制開關(guān)接通,計數(shù)開始;當GATE=1時與門的開啟由INT0和TR0共同控制。這種方式可以用來測量INT0引腳上正脈沖的寬度。

注意:方式0的計數(shù)初值高8位和低5位確定麻煩

,實際應用中常由16位的方式1取代。2024/4/725方式1:16位方式

X=216-N=65536-N計數(shù)范圍:1~65536

計數(shù)初值要分成2個字節(jié)分別送入TH0、TL02024/4/726DVT0:CPLP1.7引腳輸出周期為2s的方波。CPU響應中斷后TFx自動清0。觸發(fā)方式設置及中斷標志正在執(zhí)行RETI或訪問IE或IP的指令串行口中斷(RI或TI)LJMPMAINNOP【例5-5】有一包裝流水線,產(chǎn)品每計數(shù)24瓶時發(fā)出一個包裝控制信號。溢出信號使TF0或TF1置1,并發(fā)出中斷請求,16位時有:在中斷服務結(jié)束前,INTx低電平必須撤除,否則中斷返回之后將再次產(chǎn)生中斷。SJMP$;等待中斷C/T=0時,則為定時模式,有:CLRP1.ORG0030H串行口中斷(RI或TI)MAIN:MOVTMOD,#01H;置T0方式1【例5-4】若要求定時器T0工作于方式1,定時時間為1ms,當晶振為6MHz時,求送入TH0和TL0的計數(shù)初值各為多少?應怎樣送入TH0和TL0?由于晶振為6MHz,所以機器周期Tcy為2μS,因此:N=t/Tcy=1×10-3/2×10-6=500X=216-N=65536-500=65036=FE0CH也可以利用以下2條指令完成:MOVTL0,#(65536-500)MOD256;余數(shù)為計數(shù)初值的低字節(jié)MOVTH0,#(65536-500)/256;商為計數(shù)初值的高字節(jié)用傳送指令分別將FEH送入TH0中,0CH送入TL0中即可。2024/4/727方式2:8位自動重裝方式

X=28-N=256-N計數(shù)范圍:1~256

特別適合與脈沖信號發(fā)生器2024/4/728方式3:(僅T0有此方式,T1的方式3將停止計數(shù))

TL0進行8位定時/計數(shù)TH0進行8位定時(T1方式2時,可出借TR1、TF1)2024/4/7295.3.4定時/計數(shù)器用于外部中斷擴展例:用T0擴展一個外部中斷源。將T0設置為計數(shù)器方式,按方式2工作,TH0、TL0的初值均為0FFH,T0允許中斷,CPU開放中斷。其初始化程序如下:

MOVTMOD,#06H;置T0為計數(shù)器方式2MOVTL0,#0FFH;置計數(shù)初值

MOVTH0,#0FFHSETBTR0;啟動T0工作

SETBEA;CPU開中斷

SETBET0;允許T0中斷

……T0外部引腳上出現(xiàn)一個下降沿信號時,TL0計數(shù)加1,產(chǎn)生溢出,將TF0置1,向CPU發(fā)出中斷請求……2024/4/7305.3.5定時/計數(shù)器應用舉例初始化程序應完成:對TMOD賦值,以確定T0和T1的工作方式;求初值,并寫入TH0、TL0或TH1、TL1;中斷方式時,要對IE賦值,開放中斷;使TR0或TR1置位,啟動定時/計數(shù)器工作。2024/4/731計數(shù)應用【例5-5】有一包裝流水線,產(chǎn)品每計數(shù)24瓶時發(fā)出一個包裝控制信號。試編寫程序完成這一計數(shù)任務。用T0完成計數(shù),用P1.0發(fā)出控制信號。確定方式字:T0在計數(shù)的方式2時:M1M0=10,GATE=0,C/T=1方式控制字為06H

求計數(shù)初值X:N=24X=256-24=232=E8H應將E8H送入TH0和TL0中2024/4/732ORG0000HLJMPMAIN

ORG000BHLJMPDVT0

ORG0100HMAIN:MOVTMOD,#06H;置T0計數(shù)方式2MOVTH0,#0E8H;裝入計數(shù)初值

MOVTL0,#0E8HSETBET0;T0開中斷

SETBEA;CPU開中斷

SETBTR0;啟動T0SJMP$;等待中斷DVT0:SETBP1.0NOPNOPCLRP1.0RETIEND主程序

中斷服務程序

2024/4/733定時應用

定時時間較小時(小于65ms)。晶振為12MHz時,Tcy為1μS??芍苯硬捎梅绞?完成定時任務。

【例5-6】利用定時/計數(shù)器T0的方式1,產(chǎn)生10ms的定時,并使P1.0引腳上輸出周期為20ms的方波,采用中斷方式,設系統(tǒng)的晶振頻率為12MHz。確定方式字:T0在定時的方式1時:M1M0=01,GATE=0,C/T=0方式控制字為01H

求計數(shù)初值X:Tcy為1μSN=10ms/1μS=10

000X=65536-10000=D8F0H應將D8送TH0,F0H送TL0

2024/4/734ORG0000HLJMPMAIN

ORG000BHLJMPDVT0

ORG0100HMAIN:MOVTMOD,#01H;置T0方式1MOVTH0,#0D8H;裝入計數(shù)初值

MOVTL0,#0F0HSETBET0;T0開中斷

SETBEA;CPU開中斷

SETBTR0;啟動T0SJMP$;等待中斷DVT0:CPLP1.0MOVTH0,#0D8HMOVTL0,#0F0HRETIEND主程序

中斷服務程序

2024/4/735采用軟件查詢方式完成的源程序如下:ORG0000HLJMPMAIN;跳轉(zhuǎn)到主程序

ORG0100H;主程序

MAIN:MOVTMOD,#01H;置T0工作于方式1LOOP:MOVTH0,#0D8H;裝入計數(shù)初值

MOVTL0,#0F0HSETBTR0;啟動定時器T0JNBTF0,$;TF0=0,查詢等待

CLRTF0;清TF0CPLP1.0

溫馨提示

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

評論

0/150

提交評論