版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、5.1 MCS-51單片機(jī)并行I/O口5.2 MCS-51單片機(jī)中斷系統(tǒng)5.3 MCS-51單片機(jī)定時(shí)器/計(jì)數(shù)器5.4 MCS-51單片機(jī)串行接口5.5 思考與練習(xí)題第五章 MCS-51單片機(jī)的功能模塊第五章 MCS-51單片機(jī)的功能模塊主要內(nèi)容:介紹51系列單片機(jī)主要內(nèi)部功能模塊:有并行I/O口、中斷系統(tǒng)、定時(shí)/計(jì)數(shù)器和串行接口。 要求: 1、掌握51系列單片機(jī)的各功能模塊的結(jié)構(gòu)和工作原理; 2、各模塊應(yīng)用程序的編寫。5.1 MCS-51單片機(jī)并行I/O口 I/O口的作用:1 實(shí)現(xiàn)CPU與外設(shè)間的速度匹配;2 改變數(shù)據(jù)的傳送方式(并行、串行);3 改變信號(hào)的性質(zhì)(A/D)和信號(hào)的電平(TTL
2、電平與RS232電平)外設(shè)的編址:獨(dú)立編址 編址范圍0000H0FFFFH,有專有的傳送指令;與存儲(chǔ)器統(tǒng)一編址 編址范圍0FF00H0FFFFH,傳送指令 MOVX A,DPTR MOVX DPTR,A5.1 MCS-51單片機(jī)并行I/O口 I/O 數(shù)據(jù)的四種傳送方式無(wú)條件傳送(同步傳送)條件傳送(異步傳送)中斷傳送DMA傳送5.1 MCS-51單片機(jī)并行I/O口 MCS-51單片機(jī)具有4個(gè)雙向的8位I/O口P0P3,P0口為三態(tài)雙向口,負(fù)載能力為8個(gè)TTL電路,P1P3口為準(zhǔn)雙向口(用作輸入時(shí),口線被拉成高電平,故稱為準(zhǔn)雙向口),負(fù)載能力為4個(gè)TTL電路。各口中的每一位都是由鎖存器(稱特殊功
3、能寄存器SFR)、輸出驅(qū)動(dòng)器和輸入緩沖器組成。這種結(jié)構(gòu),在數(shù)據(jù)輸出時(shí)可鎖存,但對(duì)輸入信息是不鎖存的,所以從外部輸入的信息必須保持到取數(shù)指令執(zhí)行完為止。 5.1.1 P0口 P0口是一個(gè)三態(tài)雙向口,在系統(tǒng)擴(kuò)展時(shí),可作為低8位地址線和數(shù)據(jù)總線的分時(shí)復(fù)用口,在其他狀態(tài)下可作為通用I/O接口,其1位的結(jié)構(gòu)原理如圖5.1所示,P0口由8個(gè)這樣的電路組成。 5.1.1 P0口 圖5.15.1.1 P0口 P0口是一個(gè)多功能8位口,可以字節(jié)訪問(wèn),也可位訪問(wèn),字節(jié)訪問(wèn)地址為80H,位訪問(wèn)地址為80H87H。(1) P0口用于I/O口是準(zhǔn)雙向I/O口。 作為I/O口使用時(shí),控制信號(hào)應(yīng)為“0”,多路開(kāi)關(guān)接通輸出鎖
4、存器的 端。同時(shí)與門關(guān)閉,上拉FET截止,形成P0口的輸出電路為漏極開(kāi)路輸出。需要外接上拉電阻。a)作輸出口時(shí): 不需要條件,可以正確的輸出b)作輸入口時(shí):當(dāng)CPU復(fù)位后進(jìn)行輸入操作時(shí),輸入信息是正確的。 當(dāng)P0口的某位(或整個(gè)P0口)先進(jìn)行了輸出操作,而后要由輸出變成輸入操作方式時(shí),必須先用輸出指令將鎖存器置“1”,才能保證輸入信息正確。 (即是準(zhǔn)雙向的含義)5.1.1 P0口(2)P0口用于地址/數(shù)據(jù)分時(shí)復(fù)用時(shí)是真正雙向I/O口。當(dāng)控制=1時(shí),MUX接通地址/數(shù)據(jù)輸出端。a)當(dāng)?shù)刂?數(shù)據(jù)輸出線置1時(shí),“與”門輸出為1,上拉FET導(dǎo)通,同時(shí)地址/數(shù)據(jù)輸出通過(guò)反相器輸出0,控制下拉FET截止,
5、這樣A點(diǎn)電位上拉,地址/數(shù)據(jù)輸出線為1。b)當(dāng)?shù)刂?數(shù)據(jù)輸出線置0時(shí),“與”門輸出為0,上拉FET截止,同時(shí)地址/數(shù)據(jù)輸出通過(guò)反相器輸出1,控制下拉FET導(dǎo)通,這樣A點(diǎn)電位下拉,地址/數(shù)據(jù)輸出線為0。輸入數(shù)據(jù),控制=0,分析同(1)中的輸入中的第一種情況。 通過(guò)上述分析可以看出,此時(shí)的輸出狀態(tài)隨地址/數(shù)據(jù)線而變。因此,P0口可以作為地址/數(shù)據(jù)復(fù)用總線使用(需要加地址鎖存器)。此時(shí)的P0口相當(dāng)一個(gè)雙向口。5.1.2 P1口P1口是一個(gè)8位口,可以字節(jié)也可按位訪問(wèn),其字節(jié)地址為90H,位訪問(wèn)地址為90H97H。P1口是一個(gè)準(zhǔn)雙向I/O口,其1位的內(nèi)部結(jié)構(gòu)如圖5.2所示。5.1.2 P1口圖5.25
6、.1.2 P1口 它在結(jié)構(gòu)上與P0口的區(qū)別在于輸出驅(qū)動(dòng)部分,其輸出驅(qū)動(dòng)部分由場(chǎng)效應(yīng)管V1與內(nèi)部上拉電阻組成。當(dāng)其某位輸出為1時(shí),使輸出驅(qū)動(dòng)器中的場(chǎng)效應(yīng)管截止,該位的輸出由內(nèi)部等效的上拉電阻拉成高電平,輸出1。當(dāng)輸出為0時(shí),輸出場(chǎng)效應(yīng)管導(dǎo)通則輸出引腳為低電平,輸出為0。不必像P0口那樣需要外接上拉電阻。5.1.2 P1口在8051/80C51單片機(jī)中,P1口只有通用I/O接口一種功能,它的每一位可以分別定義為輸入或輸出,其輸入輸出原理特性與P0口作為通用I/O接口使用時(shí)一樣。P1口具有驅(qū)動(dòng)4個(gè)LSTTL負(fù)載的能力。在8052/80C52單片機(jī)中,P1口P1.0與P1.1除作為通用I/O接口線外,
7、還具有第二功能,即P1.0可作為定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)脈沖輸入端T2,P1.1可作為定時(shí)器/計(jì)數(shù)器2的外部控制輸入端T2EX。5.1.3 P2口 P2口也是一個(gè)準(zhǔn)雙向I/O口,其1位內(nèi)部結(jié)構(gòu)見(jiàn)圖5.3。在訪問(wèn)外部存儲(chǔ)器時(shí),P2口作為高8位地址輸出口,在其他時(shí)候作為一般I/O接口使用。5.1.3 P2口圖5.35.1.3 P2口當(dāng)作為準(zhǔn)雙向通用I/O口使用時(shí),控制信號(hào)為低電平無(wú)效,多路轉(zhuǎn)換器MUX接通鎖存器Q端,鎖存器Q端經(jīng)反相器3接控制場(chǎng)效應(yīng)管V1,其工作原理與P1相同,負(fù)載能力也與P1相同。當(dāng)作為外部擴(kuò)展存儲(chǔ)器的高8位地址總線使用時(shí),控制信號(hào)應(yīng)為高電平“1”有效,多路轉(zhuǎn)換開(kāi)關(guān)MUX接通地
8、址信號(hào),來(lái)自程序計(jì)數(shù)器PC的高8位地址PCH,或數(shù)據(jù)指針DPTR的高8位地址DPH經(jīng)反相器3和V1反相后復(fù)原在P2.x口的引腳上,輸出高8位地址A8A15。在上述情況下,口鎖存器的內(nèi)容不受影響,所以,取指或訪問(wèn)外部存儲(chǔ)器結(jié)束后,由于轉(zhuǎn)換開(kāi)關(guān)又接至左側(cè),使輸出驅(qū)動(dòng)器與鎖存器Q端相連,引腳上將恢復(fù)原來(lái)的數(shù)據(jù)。5.1.4 P3口 P3口是一個(gè)多功能的8位口,可以字節(jié)訪問(wèn)也可位訪問(wèn),其字節(jié)訪問(wèn)地址為B0H,位訪問(wèn)地址為B0HB7H。P3口的功能: (1)可作I/O口使用,為準(zhǔn)雙向口。這方面的功能與P1口一樣。 (2)每一位均具有第2功能。 5.1.4 P3口圖5.45.1.4 P3口當(dāng)P3口作為通用I
9、/O接口時(shí),要求第2功能輸出線保持高電平,使與非門3的輸出取決于口鎖存器的狀態(tài)。在這種情況下,P3口仍是1個(gè)準(zhǔn)雙向口,它的工作方式、負(fù)載能力均與P1、P2口相同。 當(dāng)P3口作為第2功能(各引腳功能見(jiàn)表5.1)使用時(shí)就不能再做通用輸出口使用,其鎖存器Q端必須為高電平,以允許第2功能輸出,在做第2功能輸入時(shí),雖仍做通用輸入口,但已無(wú)實(shí)際意義。 5.1.5 接口的使用原則1. I/O接口的讀、寫、修改每個(gè)I/O口均有兩種“讀”方式:讀引腳和讀鎖存器。讀引腳:是讀外部接口的電平信號(hào),讀引腳信號(hào)有效。真正讀引腳的指令只有 MOV A,Px讀鎖存器:是將接口鎖存器的Q端信號(hào)讀回,寫鎖存器信號(hào)有效。 讀鎖存
10、器指令主要用于讀修改寫指令。如下列這些指令:如: ORL 、XRL 、JBC 、CPL 、INC 、DEC 、DJNZ 、MOV Px ,y 、 CLR Px.y和SET Px.y。5.1.5 接口的使用原則2. 使用原則MCS-51單片機(jī)中的4個(gè)I/O口在實(shí)際使用中,一般遵循以下用法:P0口一般做系統(tǒng)擴(kuò)展地址低8位/數(shù)據(jù)復(fù)用口,P1口一般做I/O擴(kuò)展口,P2口做系統(tǒng)擴(kuò)展地址高8位和I/O口擴(kuò)展的地址譯碼用,P3口做中斷輸入、串行通用口使用。在各個(gè)口的帶負(fù)載能力和接口要求上,由于P0口的輸出級(jí)與P1P3口的輸出級(jí)在結(jié)構(gòu)上不同,所以,要求也不同。P0口的每一位可驅(qū)動(dòng)8個(gè)TTL輸入,在做通用I/O
11、口使用時(shí),輸出級(jí)是開(kāi)漏電路,故需外部加上拉電阻。在做地址/數(shù)據(jù)總線使用時(shí),不需要外接上拉電阻。P1P3的輸出級(jí)內(nèi)部有高效的上拉電阻,每一位輸出可驅(qū)動(dòng)4個(gè)TTL輸入。在實(shí)際使用中,一般用戶在I/O擴(kuò)展時(shí),很難計(jì)算I/O的負(fù)載能力。對(duì)擴(kuò)展集成芯片,如74LS系列的一些大規(guī)模集成芯片(如8155、8255、8253、8259等),都可與MCS-51直接接口。其他一些擴(kuò)展用芯片,使用中可參考器件手冊(cè)及典型電路。對(duì)于一些線性元件,如鍵盤、碼盤及LED顯示等輸入/輸出設(shè)備,由于MCS-51單片機(jī)提供不了足夠的驅(qū)動(dòng)電流,應(yīng)盡量設(shè)計(jì)驅(qū)動(dòng)部分。5.1.5 接口的使用原則5.2 MCS-51單片機(jī)中斷系統(tǒng) 5.2
12、 MCS-51單片機(jī)中斷系統(tǒng)一、中斷的基本概念“中斷”是處理事件的一個(gè)“過(guò)程”,這一過(guò)程一般是由計(jì)算機(jī)內(nèi)部或外部某種緊急事件引起并向主機(jī)發(fā)出請(qǐng)求處理的信號(hào),主機(jī)在允許情況下響應(yīng)請(qǐng)求,暫停正在執(zhí)行的程序,保存好“斷點(diǎn)”處的現(xiàn)場(chǎng),轉(zhuǎn)去執(zhí)行中斷處理程序,處理完后恢復(fù)現(xiàn)場(chǎng),自動(dòng)返回到原斷點(diǎn)處,繼續(xù)執(zhí)行原程序。這一處理過(guò)程就稱為“中斷”。 5.2 MCS-51單片機(jī)中斷系統(tǒng)中斷程序與子程序的區(qū)別:調(diào)用中斷服務(wù)程序的過(guò)程類似于調(diào)用子程序,其區(qū)別在于調(diào)用子程序在程序中是事先安排好的,而何時(shí)調(diào)用中斷服務(wù)程序事先卻無(wú)法確定,因?yàn)椤爸袛唷钡陌l(fā)生是由外部因素決定的,程序中無(wú)法事先安排調(diào)用指令,因此,調(diào)用中斷服務(wù)程序
13、的過(guò)程是由硬件自動(dòng)完成的。5.2.1 中斷的基本概念圖5.5 中斷執(zhí)行過(guò)程1. 中斷源:中斷源就是中斷請(qǐng)求信號(hào)的來(lái)源。2. 中斷響應(yīng)與返回3. 優(yōu)先級(jí)控制圖5.6 二級(jí)中斷嵌套的中斷過(guò)程5.2.1 中斷的基本概念二、 中斷源和中斷請(qǐng)求標(biāo)志 中斷源是指在計(jì)算機(jī)系統(tǒng)中向CPU發(fā)出中斷請(qǐng)求的來(lái)源, 中斷可以人為設(shè)定, 也可以是為響應(yīng)突發(fā)性隨機(jī)事件而設(shè)置。通常有I/O設(shè)備、實(shí)時(shí)控制系統(tǒng)中的隨機(jī)參數(shù)和信息故障源等??煞譃橥獠恐袛嗪蛢?nèi)部中斷。5.2.2 中斷源和中斷請(qǐng)求標(biāo)志5.2.2 中斷源和中斷請(qǐng)求標(biāo)志圖5.7 中斷系統(tǒng)結(jié)構(gòu)IT0(IT1):外部中斷0(或1)觸發(fā)方式控制位。IT0(或IT1)=0,則選
14、擇外部中斷為電平觸發(fā)方式,低電平有效;IT0(或IT1)=1,則選擇外部中斷為邊沿觸發(fā)方式,負(fù)跳沿有效。這兩位由用戶用根據(jù)需要用軟件編程寫入“1”或“0”,進(jìn)而控制外中斷請(qǐng)求信號(hào)方式??梢允褂米止?jié)操指令,也可用位操作指令:CLR IT0 ; 定義外中斷0為電平觸發(fā)方式。ORL TCON ,#05H; 定義兩外中斷均為脈沖觸發(fā)方式5.2.2 中斷源和中斷請(qǐng)求標(biāo)志1外部中斷由P3.2、 P3.3輸入中斷請(qǐng)求信號(hào),外部中斷請(qǐng)求有兩種觸發(fā)方式:電平觸發(fā)及邊沿觸發(fā)。用戶可以通過(guò)對(duì)特殊功能寄存器TCON中IT0和IT1位的編程來(lái)選擇。相應(yīng)位定義格式如下: IE0(IE1):外部中斷0(或1)的中斷請(qǐng)求標(biāo)志
15、位。(硬件置位、硬件復(fù)位) IE0(IE1)=1,表示 ( )檢測(cè)到有效的中斷請(qǐng)求信號(hào); IE0(IE1)=0,表示 ( )上無(wú)有效的中斷請(qǐng)求信號(hào)。5.2.2 中斷源和中斷請(qǐng)求標(biāo)志2內(nèi)部中斷內(nèi)部中斷有:定時(shí)器/計(jì)數(shù)器T0/T1的溢出中斷,串行口的發(fā)送/接收中斷。 T0/T1的溢出中斷標(biāo)志位TF0、 TF1 :對(duì)外部脈沖計(jì)數(shù)由P3.4 、P3.5輸入脈沖信號(hào)。當(dāng)T0/T1計(jì)數(shù)到由全1變?yōu)槿?時(shí),由硬件自動(dòng)置位TCON的TF0或TF1,向CPU申請(qǐng)中斷。 CPU響應(yīng)中斷后能自動(dòng)撤除中斷請(qǐng)求信號(hào)(硬件復(fù)位)。 5.2.2 中斷源和中斷請(qǐng)求標(biāo)志 串行口的中斷標(biāo)志位TI 、RI :當(dāng)串行口發(fā)送完或接收完
16、一幀信息后,通過(guò)接口硬件自動(dòng)置位SCON的TI或RI位向CPU申請(qǐng)的。當(dāng)CPU響應(yīng)中斷后,需用戶采用軟件方法清零,以便撤除中斷請(qǐng)求信號(hào)。5.2.2 中斷源和中斷請(qǐng)求標(biāo)志串行口控制器SCONTI:串行口發(fā)送中斷源。發(fā)送完一幀,由硬件置位。響應(yīng)中斷后,必須用軟件清0。RI:串行口接收中斷源。接收完一幀,由硬件置位。響應(yīng)中斷后,必須用軟件清0。5.2.2 中斷源和中斷請(qǐng)求標(biāo)志三、 中斷系統(tǒng)控制1中斷允許控制寄存器 MCS-51單片機(jī)對(duì)各中斷源的中斷開(kāi)放(允許)或關(guān)閉(屏蔽)是由內(nèi)部的中斷允許寄存器IE的各位來(lái)進(jìn)行兩級(jí)控制的。所謂兩級(jí)控制是指各個(gè)中斷源的允許控制位與一個(gè)中斷允許總控位EA配合實(shí)現(xiàn)對(duì)中斷
17、請(qǐng)求的控制。 EA(IE.7):允許禁止全部中斷。當(dāng)EA=0,則禁止所有中斷的響應(yīng);當(dāng)EA1,則各中斷源的響應(yīng)與否取決于各自的中斷控制位的狀態(tài)。5.2.3 中斷系統(tǒng)控制5.2.3 中斷系統(tǒng)控制 X(IE.6):保留位,無(wú)意義。ET2(IE.5):定時(shí)計(jì)數(shù)器2(8052型單片機(jī))的溢出或捕獲中斷響應(yīng)控制位。ET2=0則禁止中斷響應(yīng)(關(guān)中斷);ET2=1為允許中斷響應(yīng)(開(kāi)中斷)。ES(IE.4):串行通信接收發(fā)送中斷響應(yīng)控制位。ES0,禁止中斷響應(yīng)(關(guān)中斷) ; ES=1,允許中斷響應(yīng)(開(kāi)中斷) 。ETi(IE.3, IE.1 ):定時(shí)器計(jì)數(shù)器i(i=0、1)的溢出中斷響應(yīng)控制位。ETi=0,禁止
18、中斷響應(yīng)(關(guān)中斷) ;ETi=1,則允許中斷響應(yīng)(開(kāi)中斷) 。EXi(IE.2 、IE.0 ):外部中斷i( )中斷響應(yīng)控制位。 EXi=0,禁止中斷響應(yīng)(關(guān)中斷) ; EXi=1則允許中斷響應(yīng)(開(kāi)中斷) 。5.2.3 中斷系統(tǒng)控制例如:要使INT0開(kāi)中(其余關(guān)中),可執(zhí)行下列指令: MOV IE,#1000000lB ; 或者: SETB EA ; SETB EX0 ; 5.2.3 中斷系統(tǒng)控制 2中斷優(yōu)先級(jí)控制 CPU同一時(shí)間只能響應(yīng)一個(gè)中斷請(qǐng)求。若同時(shí)來(lái)了兩個(gè)或兩個(gè)以上中斷請(qǐng)求,就必須有先有后。MCS-51單片機(jī)的中斷源有兩個(gè)用戶可控的中斷優(yōu)先級(jí),即高、低中斷優(yōu)先級(jí),從而實(shí)現(xiàn)中斷嵌套。5
19、.2.3 中斷系統(tǒng)控制CPU響應(yīng)中斷的原則是:1)先高后低 如果多個(gè)中斷請(qǐng)求同時(shí)出現(xiàn),CPU首先響應(yīng)優(yōu)先級(jí)別最高的中斷請(qǐng)求;2)高可斷低 高優(yōu)先級(jí)的中斷請(qǐng)求可中斷正在執(zhí)行的低優(yōu)先級(jí)中斷服務(wù)程序,實(shí)現(xiàn)中斷嵌套;3)同低不斷 同級(jí)或低優(yōu)先級(jí)的中斷請(qǐng)求不能中斷正在執(zhí)行的中斷服務(wù)程序。如果有兩個(gè)或兩個(gè)以上的同一優(yōu)先級(jí)別的中斷源同時(shí)向CPU申請(qǐng)中斷,則這些同級(jí)中斷源的中斷優(yōu)先權(quán)按CPU對(duì)內(nèi)部硬件的查詢次序決定 。5.2.3 中斷系統(tǒng)控制IP寄存器的格式如下: (可通過(guò)軟件設(shè)置,定義各中斷源的中斷優(yōu)先級(jí)別)、(IP.6、IP.7):保留位,無(wú)定義。PT2(IP.5):T2的中斷優(yōu)先級(jí)設(shè)置位。通過(guò)編程設(shè)置
20、PT2=1,則定義為高優(yōu)先級(jí)中斷;設(shè)置PT2=0,則定義為低優(yōu)先級(jí)中斷。PS(IP.4):串行通信中斷優(yōu)先級(jí)設(shè)置位。軟件設(shè)置 PS=1,則定義為高優(yōu)先級(jí)中斷;設(shè)PS=0,則定義為低優(yōu)先級(jí)中斷。5.2.3 中斷系統(tǒng)控制PTi(IP.3、IP.1):Ti中斷優(yōu)先級(jí)設(shè)置位。軟件設(shè)置PTi=1,則定義為高優(yōu)先級(jí)中斷;設(shè)置PTi=0,則定義為低優(yōu)先級(jí)中斷。 PXi(IP.2、IP.0):外部中斷i中斷優(yōu)先級(jí)設(shè)置位。軟件設(shè)置PXi=1,則定義為高優(yōu)先級(jí)中斷;設(shè)置PXi=0,則定義為低優(yōu)先級(jí)中斷。例如:若要將INT1、串行口設(shè)置為高優(yōu)先級(jí),其余中斷源設(shè)置為低優(yōu)先級(jí),可執(zhí)行下列指令: MOV IP,#0001
21、0100B;5.2.3 中斷系統(tǒng)控制 當(dāng)同時(shí)有兩個(gè)或兩個(gè)以上優(yōu)先級(jí)相同的中斷請(qǐng)求時(shí),則由內(nèi)部按查詢優(yōu)先順序來(lái)確定該響應(yīng)的中斷請(qǐng)求,其優(yōu)先順序由高向低順序排列。優(yōu)先順序排列如下: 中斷優(yōu)先原則:1、低級(jí)不打斷高級(jí)2、高級(jí)不睬低級(jí)3、同級(jí)不能打斷4、同級(jí)、同時(shí)中斷,事先約定。 5.2.4 中斷處理過(guò)程四、 中斷處理過(guò)程中斷處理過(guò)程大致可分為四步:中斷請(qǐng)求、中斷響應(yīng)、中斷服務(wù)、中斷返回。1. 中斷請(qǐng)求 中斷源發(fā)出中斷請(qǐng)求信號(hào),相應(yīng)的中斷請(qǐng)求標(biāo)志位(在中斷允許控制寄存器IE中)置“1”。5.2.4 中斷處理過(guò)程2中斷響應(yīng)1)響應(yīng)的條件 CPU在每個(gè)機(jī)器周期的S6按照優(yōu)先級(jí)查詢中斷標(biāo)志位,當(dāng)相應(yīng)中斷源有
22、中斷請(qǐng)求且滿足如下條件之一時(shí),MSC-51單片機(jī)響應(yīng)中斷。(1)無(wú)同級(jí)或高級(jí)中斷正在處理或CPU處在非中斷響應(yīng)狀態(tài),CPU處于開(kāi)中斷(即EA=1)狀態(tài)且相應(yīng)中斷是開(kāi)放的(中斷允許寄存器IE相應(yīng)位置1)。(2)若CPU正在響應(yīng)某一中斷請(qǐng)求時(shí)又來(lái)了新的中斷請(qǐng)求,則應(yīng)滿足高級(jí)中斷可以中斷低級(jí)中斷,實(shí)現(xiàn)中斷嵌套;低級(jí)中斷只能等待現(xiàn)有中斷服務(wù)完成后再被響應(yīng)的原則。(3)若CPU現(xiàn)行執(zhí)行的指令為RETI或任何訪問(wèn)IE、IP(如SETB EA)的指令時(shí),則執(zhí)行完該指令且緊隨其后的另一條指令也已執(zhí)行完畢后才響應(yīng)該中斷請(qǐng)求。5.2.4 中斷處理過(guò)程2)中斷響應(yīng)過(guò)程 首先,根據(jù)中斷源的優(yōu)先級(jí)高低,對(duì)相應(yīng)的優(yōu)先級(jí)狀
23、態(tài)觸發(fā)器置1; 然后,保護(hù)斷點(diǎn),把當(dāng)前程序計(jì)數(shù)器PC的內(nèi)容壓入堆棧。 其次,封鎖同級(jí)和低級(jí)中斷,以防在響應(yīng)中斷期間受其他中斷的干擾,清除相應(yīng)的中斷請(qǐng)求標(biāo)志位(串行口中斷請(qǐng)求標(biāo)志RI和TI除外) ; 最后,根據(jù)中斷源入口地址,轉(zhuǎn)入執(zhí)行相應(yīng)中斷服務(wù)程序,各中斷服務(wù)程序的入口地址見(jiàn)表5.1。 5.2.4 中斷處理過(guò)程中斷源入口地址INT00003HT0000BHINT10013HT1001BHRI/TI0023H表5.1 中斷源入口地址5.2.4 中斷處理過(guò)程3)中斷響應(yīng)時(shí)間 所謂中斷響應(yīng)時(shí)間是指CPU檢測(cè)到中斷請(qǐng)求信號(hào)到轉(zhuǎn)入中斷服務(wù)程序入口所需要的機(jī)器周期數(shù)。 MCS-51單片機(jī)響應(yīng)中斷的最短時(shí)間
24、為3個(gè)機(jī)器周期,時(shí)間最長(zhǎng)需要8個(gè)機(jī)器周期。 5.2.4 中斷處理過(guò)程3 執(zhí)行中斷服務(wù)程序 中斷服務(wù)程序應(yīng)包含以下幾部分: 保護(hù)現(xiàn)場(chǎng): 中斷時(shí)刻單片機(jī)存儲(chǔ)單元中的數(shù)據(jù)或狀態(tài). (2)允許中斷和禁止中斷 在CPU執(zhí)行當(dāng)前中斷服務(wù)程序的過(guò)程中,往往又會(huì) 有其它中斷源的中斷請(qǐng)求出現(xiàn)。 (3)執(zhí)行中斷服務(wù)程序主體,完成相應(yīng)操作 (4)恢復(fù)現(xiàn)場(chǎng)5.2.4 中斷處理過(guò)程4 中斷返回 在中斷服務(wù)程序最后,必須安排一條中斷返回指令RETI,當(dāng)CPU執(zhí)行RETI指令后,自動(dòng)完成下列操作: 恢復(fù)斷點(diǎn)地址。 開(kāi)放同級(jí)中斷,以便允許同級(jí)中斷源請(qǐng)求中斷。5.2.5 中斷請(qǐng)求的撤除五、中斷請(qǐng)求的撤除 中斷源發(fā)出中斷請(qǐng)求,相
25、應(yīng)中斷請(qǐng)求標(biāo)志置“1”。 CPU響應(yīng)中斷后,必須清除中斷請(qǐng)求“1”標(biāo)志。否則中斷響應(yīng)返回后,將再次進(jìn)入該中斷,引起死循環(huán)出錯(cuò)。 對(duì)定時(shí)/計(jì)數(shù)器T0、T1中斷,外中斷邊沿觸發(fā)方式,CPU響應(yīng)中斷時(shí)就用硬件自動(dòng)清除了相應(yīng)的中斷請(qǐng)求標(biāo)志。 對(duì)外中斷電平觸發(fā)方式,需要采取軟硬結(jié)合的方法消除后果。 對(duì)串行口中斷,用戶應(yīng)在串行中斷服務(wù)程序中用軟件清除TI或RI。5.2.6 中斷的應(yīng)用及編程六、中斷的應(yīng)用及編程 中斷初始化 設(shè)置堆棧指針SP 定義中斷優(yōu)先級(jí) 定義外中斷觸發(fā)方式 開(kāi)放中斷 安排好等待中斷或中斷發(fā)生前主程序應(yīng)完成的操作內(nèi)容。5.2.6 中斷的應(yīng)用及編程 中斷服務(wù)主程序 在中斷服務(wù)入口地址設(shè)置一條
26、跳轉(zhuǎn)指令,轉(zhuǎn)移到中斷服務(wù)程序的實(shí)際入口處。 根據(jù)需要保護(hù)現(xiàn)場(chǎng)。 中斷源請(qǐng)求中斷服務(wù)要求的操作。 恢復(fù)現(xiàn)場(chǎng)。與保護(hù)現(xiàn)場(chǎng)相對(duì)應(yīng),注意先進(jìn)后出、后進(jìn)先出操作原則。 中斷返回,最后一條指令必須是RETI。5.2.6 中斷的應(yīng)用及編程例5-1 若要求外部中斷 引腳為邊沿觸發(fā)方式,以及處于高中斷優(yōu)先級(jí),編寫中斷系統(tǒng)初始化程序。解:程序的編制有兩種方法,一種是采用位操作指令進(jìn)行編制,另一種是字節(jié)型指令編制。程序分別如下。方法一:SETB EASETBEX1;開(kāi)INT1中斷SETB PX1;令I(lǐng)NT1為高優(yōu)先級(jí)SETBIT1;令I(lǐng)NT1為邊沿觸發(fā)方式方法二:MOVIE,#84H;開(kāi)INT1中斷ORLIP,#0
27、4H;令I(lǐng)NT1為高優(yōu)先級(jí)ORL TCON, #04H;令I(lǐng)NT1為邊沿觸發(fā)方式5.2.6 中斷的應(yīng)用及編程例5-2: 單片機(jī)通過(guò)P1口以中斷方式向外設(shè)輸出數(shù)據(jù),當(dāng)外設(shè)準(zhǔn)備好接收數(shù)據(jù)時(shí),就發(fā)出選通信號(hào),經(jīng)觸發(fā)器和非門至INT0,如下圖所示。請(qǐng)編制相應(yīng)程序。P1口P3.0QDCP SD外設(shè)選通信號(hào)接地INT0數(shù)據(jù)至外設(shè)80315.2.6 中斷的應(yīng)用及編程解:當(dāng)外設(shè)準(zhǔn)備好接收一個(gè)數(shù)據(jù)后,發(fā)出選通信號(hào),使觸發(fā)器輸出高電平后經(jīng)非門至INT0引腳,向CPU發(fā)出中斷請(qǐng)求,CPU響應(yīng)這個(gè)中斷請(qǐng)求后,在中斷處理程序中先撤除中斷請(qǐng)求信號(hào),(通過(guò)P3.0=1,使INT0=1)再由P1口將單片機(jī)內(nèi)部的數(shù)據(jù)輸出到外設(shè)
28、。 ORG 0000HSTART: LJMP MAIN ORG 0003H LJMP IINT0 ORG 0030H ;主程序MAIN: CLR IT0 ;低電平觸發(fā) SETB EA SETB EX0 ;開(kāi)中斷 SETB PX0 ;優(yōu)先級(jí)設(shè)置 MOV DPTR, #1000H ;外設(shè)首地址 .5.2.6 中斷的應(yīng)用及編程 ORG 0100HIINT0: PUSH PSW ;中斷處理程序 PUSH ACC CLR P3.0 NOP NOP SETB P3.0 ;撤除INT0 MOV A, P1 ;輸入數(shù)據(jù) MOVX DPTR, A ;保存數(shù)據(jù) INC DPTR . POP ACC ;恢復(fù)現(xiàn)場(chǎng) P
29、OP PSW RETI ;返回主程序5.3 MCS-51單片機(jī)定時(shí)器/計(jì)數(shù)器5.3 MCS-51單片機(jī)定時(shí)器/計(jì)數(shù)器軟件定時(shí):循環(huán)程序,定時(shí)準(zhǔn)確,無(wú)需硬件電路,但增加CPU開(kāi)銷硬件定時(shí):硬件電路實(shí)現(xiàn),不占用CPU時(shí)間,使用不夠方便可編程定時(shí)/計(jì)數(shù)器:對(duì)系統(tǒng)時(shí)鐘脈沖的計(jì)數(shù)定時(shí),計(jì)數(shù)值通過(guò)程序設(shè)定,定時(shí)準(zhǔn)確,使用靈活方便5.3 MCS-51單片機(jī)定時(shí)器/計(jì)數(shù)器 定時(shí)器/計(jì)數(shù)器可以是獨(dú)立的集成芯片,也可以構(gòu)成于單片機(jī)內(nèi)部,但無(wú)論何種形式都具有以下共性:1、定時(shí)、計(jì)數(shù)器的核心部件是一個(gè)加1計(jì)數(shù)器。兩種工作方式的區(qū)別在于計(jì)數(shù)脈沖來(lái)源,定時(shí)器/計(jì)數(shù)器可以工作于計(jì)數(shù)方式也可以工作于定時(shí)方式。書P812、定時(shí)
30、器/計(jì)數(shù)器的計(jì)數(shù)值在范圍內(nèi)是可變的,這取決于計(jì)數(shù)器的位數(shù)。計(jì)數(shù)的最大值也就限定了定時(shí)的最大值。書P853、在到達(dá)設(shè)定的定時(shí)或計(jì)數(shù)值時(shí)發(fā)出溢出中斷申請(qǐng),實(shí)現(xiàn)定時(shí)控制。PPT 5.2節(jié)5.3 MCS-51單片機(jī)定時(shí)器/計(jì)數(shù)器 在MCS-51單片機(jī)內(nèi)部有兩個(gè)16位定時(shí)器/計(jì)數(shù)器T0和T1,它們均可作為定時(shí)器或計(jì)數(shù)器使用,均具有4種不同的工作方式,用戶可通過(guò)對(duì)特殊功能寄存器的編程,方便地選擇適當(dāng)?shù)墓ぷ鞣绞郊霸O(shè)定T0或T1工作于定時(shí)器還是計(jì)數(shù)器。(1):何時(shí)控制啟動(dòng)計(jì)數(shù)器? 問(wèn)題: (2):如何控制是定時(shí)還是計(jì)數(shù)?(3):如何控制定時(shí)/計(jì)數(shù)的長(zhǎng)短?5.3.1 T0、T1的結(jié)構(gòu)一、T0、T1的結(jié)構(gòu)1內(nèi)部結(jié)
31、構(gòu)外部輸入脈沖圖5.8 1 加法計(jì)數(shù)器的初值可以由程序設(shè)定,設(shè)置的初值不同,加法器達(dá)到溢出所需的計(jì)數(shù)值或定時(shí)時(shí)間就不同。 2 對(duì)定時(shí)器/計(jì)數(shù)器工作模式、工作方式的設(shè)定及控制是通過(guò)方式選擇寄存器TMOD和控制寄存器TCON這兩個(gè)特殊功能寄存器來(lái)完成的。 5.3.1 T0、T1的結(jié)構(gòu)2定時(shí)器/計(jì)數(shù)器方式選擇寄存器TMOD 定時(shí)器/計(jì)數(shù)器T0、T1都有4種工作方式,可通過(guò)程序?qū)MOD的編程來(lái)設(shè)置。其位定義如下:5.3.1 T0、T1的結(jié)構(gòu)C/ :定時(shí)或計(jì)數(shù)功能選擇位,“1”時(shí)為計(jì)數(shù)方式;“0”時(shí)為定時(shí)方式。M1、M0:定時(shí)器/計(jì)數(shù)器工作方式選擇位,5.3.1 T0、T1的結(jié)構(gòu)5.3.1 T0、T1
32、的結(jié)構(gòu)GATE:門控位,用于控制定時(shí)器/計(jì)數(shù)器的啟動(dòng)是否受外部引腳中斷請(qǐng)求信號(hào)的影響。當(dāng)GATE=0時(shí),TRx=1,啟動(dòng)Tx計(jì)數(shù);TRx=0,停止Tx計(jì)數(shù)。當(dāng)GATE=1時(shí),僅當(dāng)TRx=1且 =1時(shí),才允許Tx計(jì)數(shù),該位由軟件進(jìn)行設(shè)置。 GATE=0 TRx=1 一般情況下,選用該方法 3定時(shí)器/計(jì)數(shù)器控制寄存器TCONTF0(TF1):T0(T1)溢出中斷標(biāo)志位。當(dāng)T0/T1啟動(dòng)計(jì)數(shù)后,從初值開(kāi)始加1計(jì)數(shù),當(dāng)T0(T1)計(jì)數(shù)溢出時(shí),由硬件將該位置位,并在允許中斷的情況下,向CPU發(fā)出中斷請(qǐng)求信號(hào),CPU響應(yīng)中斷轉(zhuǎn)向中斷服務(wù)程序時(shí),由硬件自動(dòng)將該位清零,TF0(TF1)也可以由程序查詢或清零。
33、5.3.1 T0、T1的結(jié)構(gòu)5.3.1 T0、T1的結(jié)構(gòu)TR0(TR1):T0(T1)運(yùn)行控制位。當(dāng)GATE=0時(shí),TRx=1,啟動(dòng)Tx計(jì)數(shù);TRx=0,停止計(jì)數(shù)。當(dāng)GATE=1時(shí),僅當(dāng)TRx=1且 =1時(shí),才允許Tx計(jì)數(shù),該位由軟件進(jìn)行設(shè)置??刂谱种衅溆嘤糜?中斷控制。5.3.2 T0、T1的4種工作方式 二、T0、T1的4種工作方式 T0和T1都具有4種工作方式,當(dāng)工作于方式0、1、2時(shí),T0和T1功能相同,但工作在3時(shí),其功能不同。下面分別介紹這4種工作方式。1工作方式0(M1M0=00) 定時(shí)/計(jì)數(shù)方式0是13位計(jì)數(shù)器,即THx高8位(作計(jì)數(shù)器)和TLx的低5位(32分頻的定標(biāo)器)構(gòu)成
34、, TLx的高3位未用。(x=0或1) 計(jì)數(shù)時(shí),TLx的低5位溢出后向THx進(jìn)位, THx溢出后將TFx置位,并向CPU申請(qǐng)中斷。圖5.9 定時(shí)/計(jì)數(shù)方式0:13位計(jì)數(shù)器示意圖5.3.2 T0、T1的4種工作方式2工作方式1 (M1M0=01) 由THx和TLx組成16位計(jì)數(shù)器。其組成結(jié)構(gòu)與定時(shí)計(jì)數(shù)方式0完全相同,但計(jì)數(shù)范圍比定時(shí)計(jì)數(shù)方式0擴(kuò)大了很多。 計(jì)數(shù)信號(hào)從TLx的低位輸入,計(jì)數(shù)每溢出一次,THx計(jì)數(shù)器加1。當(dāng)16位由全“1”變成全“0”時(shí),最高位產(chǎn)生溢出,置位TFx,向主機(jī)請(qǐng)求中斷。圖5.10 定時(shí)計(jì)數(shù)方式1:16位計(jì)數(shù)器示意圖5.3.2 T0、T1的4種工作方式5.3.2 T0、T1
35、的4種工作方式模式0、1的特點(diǎn):13位和16位的計(jì)數(shù)器模式。啟動(dòng)后,從某一個(gè)初值的基礎(chǔ)上進(jìn)行“加一”計(jì)數(shù)。當(dāng)計(jì)到“全”時(shí)再來(lái)一個(gè)計(jì)數(shù)脈沖,計(jì)數(shù)器就會(huì)產(chǎn)生一個(gè)“溢出”即TFx=1,此時(shí)計(jì)數(shù)器本身為“全零”。如果需要重復(fù)性的完成某一值的定時(shí)或計(jì)數(shù),需要在每一次計(jì)數(shù)前不斷的重新預(yù)裝初值,稱之為“軟件重裝初值”。5.3.2 T0、T1的4種工作方式3工作方式2 (M1M0=10) TLx自動(dòng)設(shè)置初始值由TLx作為8位計(jì)數(shù)器,THx作為計(jì)數(shù)初值寄存器,設(shè)置初值時(shí)同時(shí)送THx和TLx。TLx進(jìn)行加1計(jì)數(shù),在計(jì)數(shù)溢出時(shí),不僅置溢出標(biāo)志TFx,還自動(dòng)將THx中的內(nèi)容自動(dòng)送入TLx,使TLx重新從初值開(kāi)始計(jì)數(shù)。
36、THx的內(nèi)容可由軟件置入,且在計(jì)數(shù)器工作期間其值不變。非常適合進(jìn)行重復(fù)性定時(shí)的場(chǎng)合,如產(chǎn)生連續(xù)方波信號(hào)等。編成中省去了軟件重裝初值的麻煩 。方式2適用于產(chǎn)生固定時(shí)間間隔的控制脈沖,也可以做為串口波特率發(fā)生器。5.3.2 T0、T1的4種工作方式圖5.11 定時(shí)/計(jì)數(shù)方式2:8位自動(dòng)再裝入計(jì)數(shù)器示意圖5.3.2 T0、T1的4種工作方式4工作方式3 (M1M0=11)(只有T0有方式3)將定時(shí)器計(jì)數(shù)器T0分成兩個(gè)獨(dú)立的8位計(jì)數(shù)器,用TL0組成完整的8位定時(shí)器計(jì)數(shù)器(既可以定時(shí),又可以計(jì)數(shù)),用TH0組成只能定時(shí)的8位定時(shí)器。TL0占用原T0的各個(gè)控制位、引腳和中斷標(biāo)志;TH0分別借用了定時(shí)器T1
37、的TR1、TF1和ET1為自己服務(wù),使TH0能象TL0那樣用TR1啟動(dòng)定時(shí),并用TF1來(lái)作為TH0的溢出中斷的標(biāo)志。T1無(wú)方式3,若硬設(shè)為方式3,則T1立即停止計(jì)數(shù)。 T0為方式3時(shí),T1可為方式02,僅用T1的C/T位進(jìn)行控制,計(jì)數(shù)器溢出時(shí),只能將輸出送入串口或不用于中斷的場(chǎng)合。適用場(chǎng)合:T0較少選用方式3,只在T1用作波特率發(fā)生器時(shí),T0才選作方式3,T1常設(shè)為方式2的波特率發(fā)生器。5.3.2 T0、T1的4種工作方式圖5.12 定時(shí)/計(jì)數(shù)方式3:二個(gè)8位計(jì)數(shù)器示意圖5.3.2 T0、T1的4種工作方式圖5.13 計(jì)數(shù)格式5.3.3 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例三、定時(shí)器/計(jì)數(shù)器應(yīng)用舉例1. 初
38、始化步驟通常情況下設(shè)置順序大致如下:(1)工作方式控制字(TMOD)的設(shè)置;(2)計(jì)數(shù)初值的計(jì)算及裝入TLx、THx;(3)中斷允許位ETx、EA的設(shè)置,使主機(jī)開(kāi)放中斷;(4)給中斷優(yōu)先級(jí)寄存器IP選送中斷優(yōu)先級(jí)字,以設(shè)定中斷優(yōu)先級(jí) ;(5)啟停位TRx的設(shè)置等。 5.3.3 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例2. 計(jì)數(shù)器初值計(jì)算方法 假設(shè)將計(jì)數(shù)器計(jì)滿為0所需要的計(jì)數(shù)值為N,應(yīng)裝入的計(jì)數(shù)初值為X,n為計(jì)數(shù)器的位數(shù),則:X=2n-N 其中n與計(jì)數(shù)器工作方式有關(guān)。在方式0時(shí)n=13,在方式1時(shí)n=16,在方式2和方式3時(shí)n=8。5.3.3 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例3. 定時(shí)器初值計(jì)算方法假設(shè)定時(shí)時(shí)間為T,機(jī)器周
39、期為Tp,即12/晶振頻率。X為定時(shí)器的定時(shí)初值,則: T=(2n-X)Tp X=2n-T/Tp (n同上) 再將計(jì)算出的初值轉(zhuǎn)換為二進(jìn)制數(shù)TB,然后再分別送入THi、TLi(對(duì)于T0,i=0;對(duì)于T1,i=1)5.3.3 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例例5-3:設(shè)定時(shí)時(shí)間T=5ms,機(jī)器周期Tp=2s,則可求得計(jì)數(shù)次數(shù)(T/TP)為5ms/2 s=2500次。P85 例5-2選用方式0: n=13,應(yīng)設(shè)置計(jì)數(shù)初值X=213-(T/Tp)=8192-2500=5692,變成二進(jìn)制數(shù)為(1011000111100)B MOV THi,#0B1H ;送高8位 MOV TLi,#1CH ;送低5位(高3位為
40、0)5.3.3 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例選用方式1: n=16,設(shè)置計(jì)數(shù)初值為:X=216-(T/Tp)=65536-2500=63036,變成二進(jìn)制數(shù)為(1111011000111100)B MOV THi,#F6H;送高8位 MOV TLi,#3CH;送低8位5.3.3 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例在本例中,不能選方式2,因?yàn)?28=2562500。 假設(shè)需要計(jì)數(shù)100次,則可選方式2:256-100=156,變成二進(jìn)制數(shù)為(10011100)B,變成十六進(jìn)制數(shù)為9CH,MOV THi,#9CH;送高8位 MOV TLi,#9CH;送低8位5.3.3 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例例5-4 :方式0應(yīng)用:
41、利用定時(shí)器/計(jì)數(shù)器T0在P1.0引腳輸出周期為2ms的方波,設(shè)時(shí)鐘頻率為6MHz,編寫相應(yīng)的程序。P86 例5-4可采用定時(shí)中斷的方式,每1ms產(chǎn)生一次中斷,在中斷服務(wù)程序中將輸出信號(hào)取反即可。定時(shí)器T0的中斷入口地址為000BH。初值計(jì)算。 因T=(2n-X)/Tp,則計(jì)數(shù)初值為:X=2n-T/Tp=213-500=8192-500=7692=1111000001100B則TH0=F0H,TL0=0CH。5.3.3 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例確定初始化控制字。主要對(duì)IP,IE,TCON,TMOD的相應(yīng)位進(jìn)行正確的設(shè)置,本例假設(shè)從系統(tǒng)復(fù)位開(kāi)始。 TMOD=00000000B=00H,TCON=0。
42、程序設(shè)計(jì):T0的中斷服務(wù)程序,除了產(chǎn)生要求的方波外,還要注意將時(shí)間常數(shù)送入定時(shí)器中,為下一次產(chǎn)生中斷做準(zhǔn)備。5.3.3 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例ORG 000BH ;T0中斷服務(wù)程序入口LJMP ZD ;轉(zhuǎn)至INT處ORG 2000H ;主程序MOV TMOD,00H ;置T0為定時(shí)方式0 MOV TH0,0F0H ;設(shè)置計(jì)數(shù)初值 MOV TL0,0CHSETB EA ;CPU開(kāi)中斷SETB ET0 ;允許T0中斷SETB TR0 ;啟動(dòng)T0HALT:SJMP $ ;暫停,等待中斷 ZD: CPL P1.0 ;輸出方波MOV TH0,0F0H ;重新裝入計(jì)數(shù)初值MOV TL0,0CHRETI ;
43、中斷返回5.3.3 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例例5-5 方式2應(yīng)用: 假設(shè),有一個(gè)周期為10ms的脈沖信號(hào),加在引腳T0/P3.4上?,F(xiàn)要求該引腳每發(fā)生一次負(fù)跳變,P1.0端就輸出1個(gè)2ms脈寬的同步負(fù)脈沖,如圖所示。假設(shè)單片機(jī)晶振頻率為12MHz。5.3.3 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例解:可將T0設(shè)定為方式2計(jì)數(shù)方式,初值可設(shè)為FFH,即外部脈沖由P3.4口發(fā)生一次負(fù)跳變時(shí),計(jì)數(shù)器加1即產(chǎn)生溢出,并向CPU發(fā)中斷。程序在T0產(chǎn)生一次負(fù)跳變后,使P1.0產(chǎn)生2ms的同步負(fù)脈沖,可利用T1采用方式1產(chǎn)生2ms定時(shí)生成(初值計(jì)算)。程序如下(中斷方式):ORG 0000H AJMP MAINORG000B
44、H;T0中斷入口地址AJMPLOOP1ORG 001BH ;T1中斷入口地址AJMPITIPORG MAINMAIN: MOV TMOD, #16H ;T0初始化程序MOV TL0, #0FFH ;T0初值MOV TH0, #0FFHSETB TR0 ;啟動(dòng)T0T1T0000101105.3.3 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例SETB ET0 ;允許T0中斷SETB EA ;開(kāi)中斷MOV TL1, #30H ;T1置初值MOV TH1, #0F8H SETBP1.0;P1.0初始為高電平MOV IP,HERE: AJMP HERE ;等待TL0/T1中斷 LOOP1:CPL P1.0 ;T0中斷服務(wù)程
45、序SETB TR1 ;啟動(dòng)T1SETB ET1 ;允許T1中斷RETIITIP: MOV TL1, #30H;T1中斷服務(wù)程序MOV TH1, #F8HCPL P1.0 ;P1.0取反 CLRET1;屏蔽T1中斷RETI5.3.3 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例程序如下(查詢方式):首先選T0為方式2,外部事件計(jì)數(shù)方式。當(dāng)P3.4(T0)引腳上的電平發(fā)生負(fù)跳變時(shí),T0計(jì)數(shù)器加1,溢出標(biāo)志TF0置1;然后改變T0為2ms定時(shí)功能,采用方式1,使P1.0輸出由1變?yōu)?。T0定時(shí)到產(chǎn)生溢出,使P1.0引腳恢復(fù)輸出高電平。T0先計(jì)數(shù),后定時(shí),分時(shí)操作。 START:MOV TMOD,#06H ;T0方式2,外
46、部計(jì)數(shù)方式 MOV TH0,#0FFH ;T0計(jì)數(shù)初值 MOV TL0,#0FFH SETB TR0 ;啟動(dòng)T0計(jì)數(shù) MOV IE,#00H ;關(guān)中斷 SETBP1.0 ;P1.0初始為高電平LOOPl:JBC TF0,PTF01 ;查詢T0溢出標(biāo)志,TF01時(shí)轉(zhuǎn)移,且TF00(查P3.4負(fù)跳變)5.3.3 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例 SJMP LOOPl ;等待T0計(jì)數(shù)溢出中斷PTF01:CLR TR0 ;停止計(jì)數(shù) MOV TMOD,#01H ;T0方式1,定時(shí) MOV TH0,#0F8H ;T0定時(shí)2ms初值 MOV TL0,#30H CLR P1.0 ;P1.0清0 SETB TR0 ;啟動(dòng)
47、定時(shí)2msLOOP2:JBC TF0,PTF02;查詢溢出標(biāo)志,定時(shí)到TF0=l轉(zhuǎn)移,且TF00(第一個(gè)2ms到否?) SJMP LOOP2 ;等待T0定時(shí)溢出中斷PTF02:SETB P1 ;P1.0置1(到了第一個(gè)500s) CLR TR0 ;停止計(jì)數(shù) SJMP START5.3.3 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例例5-6 方式3應(yīng)用:設(shè)晶振頻率為6MHz,定時(shí)/計(jì)數(shù)器T0工作于方式3,TL0和TH0作為兩個(gè)獨(dú)立的8位定時(shí)器,通過(guò)TL0和TH0的中斷分別使P1.0和P1.1產(chǎn)生400s和800s的方波。解:當(dāng)采用方式3時(shí),對(duì)于TH0來(lái)說(shuō),需要借用定時(shí)器T1的控制信號(hào)。計(jì)算計(jì)數(shù)初值:X0=28-20
48、0/2=156=9CHX1=28-400/2=56=38H確定TMOD方式字:對(duì)定時(shí)器T0來(lái)說(shuō),M1M0=11、C/T=0、GATE=0,定時(shí)器T1不用,取為全0。則TMOD=00000011B=03H。5.3.3 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例程序如下: ORG MAIN ;主程序MAIN: MOV TMOD, 03H;T0工作于方式3MOV TL0, 9CH;置計(jì)數(shù)初值MOV TH0, 38HSETB TR0 ;啟動(dòng)TL0SETB ET0 ;允許T0中斷(用于TL0) SETB TR1 ;啟動(dòng)TH0SETB ET1 ;允許T1中斷(用于TH0)SETB EA ;CPU開(kāi)中斷HALT: SJMP H
49、ALT ;暫停,等待中斷ORG 000BH ;TL0中斷服務(wù)程序CPL P1.0 ;P1.0取反 MOV TL0, 9CH ;重新裝入計(jì)數(shù)初值 RETI;中斷返回 ORG 001BH;TH0中斷服務(wù)程序 CPL P1.1 ;P1.1取反 MOV TH0, 38H;重新裝入計(jì)數(shù)初值 RETI ;中斷返回5.3.3 定時(shí)器/計(jì)數(shù)器應(yīng)用舉例注意:運(yùn)行中讀定時(shí)計(jì)數(shù)器可隨時(shí)讀寫THx和TLx,比如實(shí)時(shí)顯示計(jì)數(shù)值等,但要注意讀取時(shí)由于分時(shí)讀THx和TLx所帶來(lái)的特殊性,例如先讀THx再讀TLx,由于讀取過(guò)程中Tx一直在計(jì)數(shù),可能會(huì)出現(xiàn)TLx向THx進(jìn)位的情況,讀的值就不正確。反之亦然,因此,先讀THx再讀
50、TLx,然后再重讀THx,若兩次讀取的THx一致,則正確,反之要全部重讀。5.4 MCS-51單片機(jī)串行接口 5.4 MCS-51單片機(jī)串行接口基礎(chǔ)知識(shí) 所謂通信是指計(jì)算機(jī)與計(jì)算機(jī)或計(jì)算機(jī)與外設(shè)之間的數(shù)據(jù)傳輸,這里的“信”是指信息,即是由數(shù)字和構(gòu)成一個(gè)或一批數(shù)據(jù)。數(shù)據(jù)通信通常有兩種方式,即并行通信和串行通信。并行通信的特點(diǎn)是所有的數(shù)據(jù)位被同時(shí)發(fā)送或接收,數(shù)據(jù)傳送速度快,但并行通信需要多條(8、16條)數(shù)據(jù)線和控制線,傳送成本高,傳送距離短;串行通信的數(shù)據(jù)傳送是按位進(jìn)行傳送的,只需兩條線,一條用于發(fā)送數(shù)據(jù),另一條用于接收數(shù)據(jù),傳送成本很低,且通信距離遠(yuǎn),但比并行通信傳輸速度慢。5.4 .0 MC
51、S-51單片機(jī)的串行口 按數(shù)據(jù)的通路和傳送方向不同,串行通信可分為單工、半雙工、全雙工3種方式。書P169 單工方式(simplex) :數(shù)據(jù)僅向一個(gè)方向傳送,即一方始終為發(fā)送端,另一方始終為接收端,中需一根數(shù)據(jù)線即可完成數(shù)據(jù)傳送。 半雙工方式(half duplex) :數(shù)據(jù)可雙向傳送,但在任一時(shí)刻只能由其中的一方發(fā)送數(shù)據(jù),另一方接收數(shù)據(jù),即發(fā)送和接收數(shù)據(jù)不能同時(shí)進(jìn)行。半雙工方式可用一條線或兩條線實(shí)現(xiàn)。 全雙工方式(full duplex) :數(shù)據(jù)可以同時(shí)雙向傳送,即發(fā)送和接收數(shù)據(jù)同時(shí)進(jìn)行,必須用兩條線才能實(shí)現(xiàn)。5.4 .0 MCS-51單片機(jī)的串行口發(fā)送方A接收方BTXDRXD發(fā)送方A接收
52、方BTXDRXDTXDRXD發(fā)送方A接收方BTXDRXDTXDRXD5.4 .0 MCS-51單片機(jī)的串行口按傳送的數(shù)據(jù)格式不同,串行通信又可分成異步串行通信和同步串行通信。異步通信傳送方式:在物理結(jié)構(gòu)上,異步通信的雙方只有數(shù)據(jù)線而沒(méi)有時(shí)鐘傳輸線。A、B雙方都以自己的時(shí)鐘源控制著發(fā)送的速率或?qū)邮者M(jìn)行采樣;由于通訊雙方系統(tǒng)時(shí)鐘往往不同,所以在異步通信中,要想保證通信的成功必須保證兩點(diǎn):通信雙方必須保持相同的傳送、接收速率(波特率);雙方必須遵守相同的數(shù)據(jù)格式(字符幀)。5.4 .0 MCS-51單片機(jī)的串行口將要傳送的數(shù)據(jù)由一個(gè)0點(diǎn)平的“起始位”引導(dǎo),中間為8位(或9位)的數(shù)據(jù)位,后面有一個(gè)高
53、電平的“停止位”數(shù)據(jù)幀格式。異步通信的字符幀格式由于添加了“起始位”和“停止位”,占用了傳輸時(shí)間,降低了傳輸效率,因此僅適用于遠(yuǎn)距離的數(shù)據(jù)通信。D0D1D2D3D4D5D6D7起始位停止位01MCS-51單片機(jī)的一個(gè)字符幀的格式5.4 .0 MCS-51單片機(jī)的串行口同步傳送模式:在物理結(jié)構(gòu)上,通信雙方除了通信的數(shù)據(jù)線外還增加了一個(gè)通信用的“時(shí)鐘傳輸線clock”。由主控方提供時(shí)鐘信號(hào)clock。由于有了時(shí)鐘信號(hào)來(lái)“同步”發(fā)送或接收操作,所以被傳送的數(shù)據(jù)不再使用“起始位”和“停止位”,因而提高了傳送速度。因此同步通信常被用于系統(tǒng)內(nèi)部各芯片之間的接口設(shè)計(jì)。由于同步通信多了一條“時(shí)鐘線”,因此不太
54、適合遠(yuǎn)距離的通信。5.4 .0 MCS-51單片機(jī)的串行口同步發(fā)送、接收示意圖主控方被控方dataclock主控方被控方dataclock主控方發(fā)送數(shù)據(jù) 主控方接收數(shù)據(jù) 5.4 .0 MCS-51單片機(jī)的串行口串行通信的傳輸速率:用于表征串行通信速率的參數(shù)稱為“波特率”;波特率的單位為:位/秒(bit / s);波特率取值范圍一般為: 0 9600 bit/s。影響波特率的主要因素取決于傳輸線的分布電容、通信電平標(biāo)準(zhǔn)和傳送距離;5.4 .0 MCS-51單片機(jī)的串行口串行通信的電平標(biāo)準(zhǔn):書P172為了增加串行通信的距離,可以采用RS-232、RS-485的通信標(biāo)準(zhǔn)。其中:TTL電平(05V):
55、10英尺以內(nèi)。RS-232標(biāo)準(zhǔn)(+12V-12V):50英尺。RS-485標(biāo)準(zhǔn)(差分輸入輸出):1000英尺以上。5.4 .0 MCS-51單片機(jī)的串行口MCS-51 TXD(甲) RXD RXD MCS-51 TXD (乙)TXDRXDRXDTXDRS-232或485RS-232或485TXDRXDRS-232PC機(jī)COM1,COM2單片機(jī)甲、乙之間近距離的直接通訊單片機(jī)甲乙兩地之間遠(yuǎn)距離通訊單片機(jī)與PC機(jī)之間的數(shù)據(jù)通訊5.4 .0 MCS-51單片機(jī)的串行口 MCS-51系列單片機(jī)內(nèi)部有1個(gè)功能很強(qiáng)的全雙工串行口,可同時(shí)發(fā)送和接收數(shù)據(jù)。它具有4種工作方式,可應(yīng)用于所需的不同場(chǎng)合。串行通信所
56、需的波特率可由片內(nèi)定時(shí)/計(jì)數(shù)器或系統(tǒng)時(shí)鐘產(chǎn)生并可通過(guò)軟件設(shè)置波特率值。接收、發(fā)送過(guò)程均可工作在查詢方式或中斷方式,使用十分靈活。MCS-51的串行口既可以做UART(通過(guò)異步接收發(fā)送器)使用,也可以作為同步移位寄存器使用,方便地構(gòu)成1個(gè)或多個(gè)并行輸入/輸出口,或作串并轉(zhuǎn)換,用來(lái)驅(qū)動(dòng)鍵盤與顯示器。5.4.1 MCS-51單片機(jī)的串行口一、 串行口的基本構(gòu)成 MCS-51單片機(jī)串行口的結(jié)構(gòu)主要由數(shù)據(jù)發(fā)送/接收部分、波特率發(fā)生器和串行通信控制寄存器等組成。圖5.14給出了串行口內(nèi)部結(jié)構(gòu)框圖。5.4.1 MCS-51單片機(jī)的串行口圖5.14 MCS-51系列單片機(jī)串行口內(nèi)部結(jié)構(gòu)圖框圖檢測(cè)起始停止位MO
57、V SBUF, AMOV A,SBUF5.4.1 MCS-51單片機(jī)的串行口圖5.15 串行口信號(hào)采樣圖 P172 圖10.45.4.1 MCS-51單片機(jī)的串行口 1 數(shù)據(jù)發(fā)送和接收部分 如圖5.14所示,數(shù)據(jù)發(fā)送部分主要由發(fā)送數(shù)據(jù)緩沖寄存器“SBUF(發(fā)送)”、“零檢測(cè)器”和“發(fā)送控制器”等部分組成;數(shù)據(jù)接收部分由接收數(shù)據(jù)緩沖寄存器“SBUF(接收)”、“接收移位寄存器”、“接收控制器”及“位檢測(cè)器”等組成。 在串行接收時(shí),串行數(shù)據(jù)經(jīng)過(guò)RXD(P3.0)引腳進(jìn)入,經(jīng)過(guò)接收移位寄存器將串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)后,移入SBUF(接收),此時(shí),CPU可執(zhí)行MOV A, SBUF指令,產(chǎn)生“讀SBU
58、F(接收)”脈沖,把“SBUF(接收)”中接收到的數(shù)據(jù)通過(guò)內(nèi)部總線并行傳送到累加器A中,完成數(shù)據(jù)在此部分的串入并出。數(shù)據(jù)接收部分采用雙緩沖結(jié)構(gòu),避免了接收過(guò)程中出現(xiàn)數(shù)據(jù)重疊錯(cuò)誤。5.4.1 MCS-51單片機(jī)的串行口 在串行發(fā)送時(shí),串行數(shù)據(jù)通過(guò)TXD(P3.1)引腳送出,與接收不同,發(fā)送數(shù)據(jù)過(guò)程CPU是主動(dòng)的,當(dāng)CPU執(zhí)行MOV SBUF, A指令時(shí),產(chǎn)生“寫SBUF(發(fā)送)”脈沖,累加器A中的字符數(shù)據(jù)寫入SBUF(發(fā)送)緩沖寄存器。在發(fā)送控制器的作用下,將數(shù)據(jù)串行發(fā)出。完成數(shù)據(jù)在此部分的并入串出。為提高數(shù)據(jù)發(fā)送速度,發(fā)送器采用單緩沖結(jié)構(gòu)。 在接收和發(fā)送部分包含有兩個(gè)SBUF,一個(gè)是“SBUF
59、(發(fā)送)”,用于存放將要發(fā)送的字符數(shù)據(jù);另一個(gè)是“SBUF (接收)”用于存放接收到的字符數(shù)據(jù)。它們是在物理結(jié)構(gòu)上完全獨(dú)立的兩個(gè)8位緩沖寄存器,但共用一個(gè)端口地址SBUF(99H),這個(gè)重疊地址靠CPU執(zhí)行不同指令區(qū)分。同時(shí),串行口對(duì)外也有兩條獨(dú)立的收發(fā)信號(hào)線RXD和TXD,因此可以同時(shí)發(fā)送和接收數(shù)據(jù),實(shí)現(xiàn)全雙工傳送。5.4.1 MCS-51單片機(jī)的串行口 波特率發(fā)生器主要由內(nèi)部定時(shí)器/計(jì)數(shù)器、系統(tǒng)時(shí)鐘信號(hào)及一些控制開(kāi)關(guān)和分頻器組成。它提供串行口的發(fā)送時(shí)鐘TXC和接收時(shí)鐘RXC。但值得注意的是,波特率發(fā)生器產(chǎn)生的采樣脈沖須經(jīng)16倍頻,才是串行口的發(fā)送和接收移位時(shí)鐘。 串行口的接收過(guò)程基于采樣脈
60、沖(接收時(shí)鐘的16倍)對(duì)RXD線的監(jiān)視。當(dāng)“1到0跳變檢測(cè)器”連續(xù)8次采樣到RXD線上為低電平時(shí),則可確認(rèn)RXD線上出現(xiàn)了接收數(shù)據(jù)的起始位。隨后,接收控制器就從下一個(gè)數(shù)據(jù)位開(kāi)始對(duì)第7、8、9三個(gè)脈沖即信號(hào)中央采樣RXD線(圖5.15),并遵守三中去二的原則來(lái)決定數(shù)據(jù)值。 5.4.1 MCS-51單片機(jī)的串行口 2. 串行口通信控制寄存器在MCS-51系列單片機(jī)的特殊功能寄存器中,有4個(gè)與串行通信有關(guān),分別為SCON,PCON,IE和IP,它們對(duì)應(yīng)的地址分別是98H,87H,A8H和B8H,其中SCON和PCON直接控制串行口的工作方式。 串行控制寄存器SCON串行口控制寄存器SCON的格式如下
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026河南漯河市交通運(yùn)輸局所屬事業(yè)單位人才引進(jìn)2人備考題庫(kù)及一套完整答案詳解
- 2025天津海順物業(yè)管理有限公司社會(huì)招聘2人備考題庫(kù)參考答案詳解
- 2025云南麗江寧蒗彝族自治縣群團(tuán)聯(lián)盟公益性崗位招聘2人備考題庫(kù)及1套參考答案詳解
- 2026年扶余市事業(yè)單位公開(kāi)選拔招聘工作人員備考題庫(kù)(35人)及答案詳解一套
- 2025廣東交通職業(yè)技術(shù)學(xué)院招聘12人備考題庫(kù)(含答案詳解)
- 2026廣東清遠(yuǎn)市佛岡縣石角鎮(zhèn)招聘新城社區(qū)專職網(wǎng)格員1人備考題庫(kù)及答案詳解(易錯(cuò)題)
- 2025年秋季泉州市豐澤區(qū)云山實(shí)驗(yàn)小學(xué)語(yǔ)文頂崗教師招聘?jìng)淇碱}庫(kù)及答案詳解(易錯(cuò)題)
- 2025北京徽銀理財(cái)有限責(zé)任公司實(shí)習(xí)生招聘?jìng)淇碱}庫(kù)及一套答案詳解
- (2025年)心臟瓣膜病理論考核試題附答案
- 2026云南臨滄市臨翔區(qū)政務(wù)服務(wù)管理局面向社會(huì)招聘城鎮(zhèn)公益性崗位1人備考題庫(kù)完整參考答案詳解
- 語(yǔ)音廳新人培訓(xùn)課件
- 北京市通州區(qū)2024-2025學(xué)年七年級(jí)下學(xué)期期末道德與法治試題(含答案)
- 地質(zhì)年代學(xué)-洞察及研究
- 兒童游樂(lè)園安全知識(shí)培訓(xùn)課件
- 員工心理健康疏導(dǎo)培訓(xùn)
- TCFLP0030-2021國(guó)有企業(yè)網(wǎng)上商城采購(gòu)交易操作規(guī)范
- 儀表設(shè)備管理規(guī)劃
- 手外傷課件教學(xué)課件
- 假肢器械基礎(chǔ)知識(shí)培訓(xùn)課件
- 可摘局部義齒印模技術(shù)
- 觀賞魚水族箱制造創(chuàng)新創(chuàng)業(yè)項(xiàng)目商業(yè)計(jì)劃書
評(píng)論
0/150
提交評(píng)論