




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1第第3章章 MCS-51單片機(jī)的內(nèi)部資源及應(yīng)用單片機(jī)的內(nèi)部資源及應(yīng)用主要內(nèi)容:主要內(nèi)容:MCS-51單片機(jī)內(nèi)部各器件的具體結(jié)構(gòu)、組成原理、單片機(jī)內(nèi)部各器件的具體結(jié)構(gòu)、組成原理、工作方式的設(shè)置及典型應(yīng)用,為讀者后續(xù)學(xué)習(xí)單片工作方式的設(shè)置及典型應(yīng)用,為讀者后續(xù)學(xué)習(xí)單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)、充分利用單片機(jī)內(nèi)部資源解決工機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)、充分利用單片機(jī)內(nèi)部資源解決工程實(shí)際問題奠定基礎(chǔ)。程實(shí)際問題奠定基礎(chǔ)。重重 點(diǎn):點(diǎn):單片機(jī)內(nèi)部各器件工作方式的設(shè)置及靈活應(yīng)用。單片機(jī)內(nèi)部各器件工作方式的設(shè)置及靈活應(yīng)用。難難 點(diǎn):點(diǎn):中斷系統(tǒng)和定時(shí)器中斷系統(tǒng)和定時(shí)器/計(jì)數(shù)器的應(yīng)用。計(jì)數(shù)器的應(yīng)用。 2第第3章章 MCS-51單片
2、機(jī)的內(nèi)部資源及應(yīng)用單片機(jī)的內(nèi)部資源及應(yīng)用3.1 MCS-51單片機(jī)的并行單片機(jī)的并行I/O口口3.2 MCS-51單片機(jī)的中斷系統(tǒng)單片機(jī)的中斷系統(tǒng) 3.3 MCS-51單片機(jī)的定時(shí)器單片機(jī)的定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器3.4 MCS-51 MCS-51 單片機(jī)的串行通信單片機(jī)的串行通信33.1 MCS-51單片機(jī)的并行單片機(jī)的并行I/O口口3.1.1 MCS-513.1.1 MCS-51內(nèi)部并行內(nèi)部并行I/OI/O口口 8051有有4個(gè)個(gè)8位并行位并行I/O口,分別命名為口,分別命名為P0, P1, P2和和P3口。口。1P0口口 P0口為雙向三態(tài)輸入口為雙向三態(tài)輸入/輸出口,輸出口, P0口既可作為
3、地址口既可作為地址/數(shù)據(jù)總線口,數(shù)據(jù)總線口,又可作為通用又可作為通用I/O口,可驅(qū)動口,可驅(qū)動8個(gè)個(gè)TTL輸入。在訪問外部存儲器時(shí),輸入。在訪問外部存儲器時(shí),P0口作地址口作地址/數(shù)據(jù)總線存儲器時(shí)。數(shù)據(jù)總線存儲器時(shí)。P0口作地址口作地址/數(shù)據(jù)總線復(fù)用口,數(shù)據(jù)總線復(fù)用口,是一個(gè)真正的雙向口,并分時(shí)送是一個(gè)真正的雙向口,并分時(shí)送出地址的低出地址的低8位和送出(或接收)位和送出(或接收)相應(yīng)存儲單元的數(shù)據(jù)。相應(yīng)存儲單元的數(shù)據(jù)。作通用作通用I/O口時(shí),口時(shí),P0口只是一個(gè)準(zhǔn)雙向口只是一個(gè)準(zhǔn)雙向口,需要在外部引腳處外接上拉口,需要在外部引腳處外接上拉電阻。電阻。 P0口的位結(jié)構(gòu)如右圖所口的位結(jié)構(gòu)如右圖所
4、示。示。42 2P2P2口口 P2口常用做口常用做外部存儲器的高外部存儲器的高8位地位地址址口。當(dāng)不用做地址口時(shí),口。當(dāng)不用做地址口時(shí),P2口也可口也可作為通用作為通用I/O口,這時(shí)它也是一個(gè)準(zhǔn)雙口,這時(shí)它也是一個(gè)準(zhǔn)雙向向I/O口??凇2槐赝饨由侠娮璨槐赝饨由侠娮杈涂梢则?qū)就可以驅(qū)動任何動任何MOS驅(qū)動電路,且只能驅(qū)動驅(qū)動電路,且只能驅(qū)動4個(gè)個(gè)TTL輸入。輸入。P2口的位結(jié)構(gòu)如右圖所示。口的位結(jié)構(gòu)如右圖所示。3 3P1P1口口 P1口常用做通用口常用做通用I/O口,它也是口,它也是一個(gè)標(biāo)準(zhǔn)的準(zhǔn)雙向一個(gè)標(biāo)準(zhǔn)的準(zhǔn)雙向I/O口,口,不必外接上不必外接上拉電阻拉電阻就可以驅(qū)動任何就可以驅(qū)動任何MOS
5、驅(qū)動電路,驅(qū)動電路,且只能驅(qū)動且只能驅(qū)動4個(gè)個(gè)TTL輸入。輸入。P1口的位結(jié)口的位結(jié)構(gòu)如右圖所示。構(gòu)如右圖所示。54 4P3P3口口 P3口是一個(gè)雙功能口,第口是一個(gè)雙功能口,第一功能與一功能與P1口一樣可用做通用口一樣可用做通用I/O口,也是一個(gè)準(zhǔn)雙向口,也是一個(gè)準(zhǔn)雙向I/O口,口,不必外接上拉電阻,不必外接上拉電阻,能驅(qū)動能驅(qū)動4個(gè)個(gè)TTL輸入。另外還具有輸入。另外還具有第二功能第二功能。P3口工作在第二功能時(shí)各管腳定口工作在第二功能時(shí)各管腳定義如下表所示。義如下表所示。 P3口的位結(jié)構(gòu)圖口的位結(jié)構(gòu)圖如右圖所示。如右圖所示。 63.1.2 MCS-513.1.2 MCS-51內(nèi)部并行內(nèi)部并
6、行I/OI/O口的應(yīng)用口的應(yīng)用 MCS-51I/OMCS-51I/O端口的操作方式:端口的操作方式:(1 1)輸出數(shù)據(jù)方式:)輸出數(shù)據(jù)方式:CPU通過一條數(shù)據(jù)傳送指令就可以把輸通過一條數(shù)據(jù)傳送指令就可以把輸出數(shù)據(jù)寫入出數(shù)據(jù)寫入P0P3的端口鎖存器,然后通過輸出驅(qū)動器送的端口鎖存器,然后通過輸出驅(qū)動器送到端口引腳線。例如,下面的指令均可在到端口引腳線。例如,下面的指令均可在P0口輸出數(shù)據(jù)。口輸出數(shù)據(jù)。 MOV P0, AP0 = a; ANL P0, #data ORL P0, A(2 2)讀端口數(shù)據(jù)方式:)讀端口數(shù)據(jù)方式: CPU讀入的這個(gè)數(shù)據(jù)并非端口引腳線讀入的這個(gè)數(shù)據(jù)并非端口引腳線上的數(shù)據(jù)
7、。讀端口數(shù)據(jù)可以直接讀端口。例如,下面的指上的數(shù)據(jù)。讀端口數(shù)據(jù)可以直接讀端口。例如,下面的指令均可以從令均可以從P1口輸入數(shù)據(jù)。口輸入數(shù)據(jù)。 MOV A, P1a = P1; MOV 20H, P1 MOV R0, P1 MOV R0, P17(3 3)讀端口引腳方式:)讀端口引腳方式:讀端口引腳方式可以從端口引腳上讀入信讀端口引腳方式可以從端口引腳上讀入信息。在這種方式下,息。在這種方式下,CPU首先必須使欲讀端口引腳所對應(yīng)的鎖首先必須使欲讀端口引腳所對應(yīng)的鎖存器置存器置1,然后才能讀端口引腳。因此,用戶在讀引腳時(shí)必須先,然后才能讀端口引腳。因此,用戶在讀引腳時(shí)必須先置位鎖存器后讀,連續(xù)使用
8、兩條指令。例如,下面的程序可以置位鎖存器后讀,連續(xù)使用兩條指令。例如,下面的程序可以讀讀P1引腳上的低引腳上的低4位信號。位信號。 MOV P1, #0FH ; 置位置位P1引腳的低引腳的低4位鎖存器位鎖存器 MOV A, P1 ; 讀讀P1引腳上的低引腳上的低4位信號送累加器位信號送累加器A8 在在I/O口直接用做輸入口直接用做輸入/輸出時(shí),輸出時(shí),CPU既可以把它們看做數(shù)據(jù)口,也可以既可以把它們看做數(shù)據(jù)口,也可以看做狀態(tài)口,這是由用戶決定的??醋鰻顟B(tài)口,這是由用戶決定的。 例題例題11要求將兩個(gè)要求將兩個(gè)BCD撥碼開關(guān)的數(shù)字和,在撥碼開關(guān)的數(shù)字和,在LED數(shù)碼管上顯示出來。數(shù)碼管上顯示出來
9、。(用(用CD4511驅(qū)動驅(qū)動LED)(開關(guān)閉合為)(開關(guān)閉合為1,斷開為,斷開為0) 解:解:CD4511是是BCD鎖存鎖存段碼譯碼段碼譯碼共陰共陰LED驅(qū)動集成電路,其引腳如右圖驅(qū)動集成電路,其引腳如右圖所示,各引腳功能如下:所示,各引腳功能如下: VCC:接正電源;接正電源; Vss:接地;接地; A, B, C, D:BCD碼輸入腳(碼輸入腳(A為最低位,為最低位,D為最高位);為最高位); QaQg:段碼輸出腳,高電平有效,最大可輸出段碼輸出腳,高電平有效,最大可輸出25mA電流;電流; EI:熄滅,接低電平,則熄滅,接低電平,則QaQg全部輸出低電平;全部輸出低電平; LC:點(diǎn)亮測
10、試,接低電平,則點(diǎn)亮測試,接低電平,則QaQg全部輸出高電平;全部輸出高電平; LE:鎖存允許,接高電平鎖存,則輸出不會隨鎖存允許,接高電平鎖存,則輸出不會隨BCD碼輸入改變。碼輸入改變。1 1I/OI/O口直接用于輸入口直接用于輸入/ /輸出輸出 9硬件電路設(shè)計(jì):硬件電路設(shè)計(jì):BCD撥碼開關(guān)為撥碼開關(guān)為4位,兩個(gè)位,兩個(gè)BCD撥碼開關(guān)分別接撥碼開關(guān)分別接至至P3口的高四位和低四位(注意:應(yīng)連接上拉電阻),由口的高四位和低四位(注意:應(yīng)連接上拉電阻),由P1口口的高四位和低四位通過兩片的高四位和低四位通過兩片CD4511分別擴(kuò)展兩位分別擴(kuò)展兩位LED。硬件電。硬件電路如右圖所示。路如右圖所示。
11、 軟件設(shè)計(jì)思想:軟件設(shè)計(jì)思想:讀讀P3口口引腳,得到輸入數(shù)據(jù),引腳,得到輸入數(shù)據(jù),將數(shù)據(jù)分成將數(shù)據(jù)分成2個(gè)個(gè)4位位BCD碼,求碼,求BCD碼和,輸出碼和,輸出到到P1口,通過口,通過CD4511驅(qū)驅(qū)動動LED顯示。顯示。10112 2I/OI/O口擴(kuò)展外部存儲器口擴(kuò)展外部存儲器 數(shù)據(jù)總線數(shù)據(jù)總線 寬度為寬度為8 8位,由位,由P0P0口提供。口提供。地址總線地址總線寬度為寬度為1616位,低位,低8 8位位A7-A0A7-A0由由P0P0口提供,高口提供,高8 8位位A15-A8A15-A8由由P2P2口提供。口提供。P0P0口數(shù)據(jù)地址分時(shí)復(fù)用,所以口數(shù)據(jù)地址分時(shí)復(fù)用,所以P0P0口輸出的低口
12、輸出的低8 8位地址必須用地址鎖位地址必須用地址鎖存器鎖存存器鎖存( (一般選用一般選用8D8D鎖存器鎖存器74LS373)74LS373)??刂瓶偩€控制總線: :RD RD 讀控制讀控制WR WR 寫控制寫控制PSEN PSEN 片外片外ROMROM選通選通ALE ALE 地址鎖存控制地址鎖存控制EA EA 片外片外ROMROM選擇選擇12 片外ROM或EEPROM的擴(kuò)展(地址范圍0000HFFFFH)13 片外RAM的擴(kuò)展(地址范圍0000H7FFFH)143.2 MCS-51單片機(jī)的中斷系統(tǒng)單片機(jī)的中斷系統(tǒng) 計(jì)算機(jī)通過外部設(shè)備(也稱為外設(shè)、輸入計(jì)算機(jī)通過外部設(shè)備(也稱為外設(shè)、輸入/輸出設(shè)
13、備或輸出設(shè)備或I/O設(shè)備)設(shè)備)與外界聯(lián)系。計(jì)算機(jī)與外設(shè)之間不是直接相連的,而是通過不同的接口與外界聯(lián)系。計(jì)算機(jī)與外設(shè)之間不是直接相連的,而是通過不同的接口電路來達(dá)到彼此間的信息傳送的目的。電路來達(dá)到彼此間的信息傳送的目的。計(jì)算機(jī)與外設(shè)之間交換信息的方式:計(jì)算機(jī)與外設(shè)之間交換信息的方式: (1)無條件傳送方式:)無條件傳送方式:外設(shè)對計(jì)算機(jī)來說總是準(zhǔn)備好的。外設(shè)對計(jì)算機(jī)來說總是準(zhǔn)備好的。 (2)查詢傳送方式:)查詢傳送方式:傳送前計(jì)算機(jī)先查詢外設(shè)的狀態(tài),若已經(jīng)準(zhǔn)備好傳送前計(jì)算機(jī)先查詢外設(shè)的狀態(tài),若已經(jīng)準(zhǔn)備好就傳送,否則就繼續(xù)查詢就傳送,否則就繼續(xù)查詢/等待。等待。 (3)中斷傳送方式:)中斷傳
14、送方式:外設(shè)通過申請中斷的方式與計(jì)算機(jī)進(jìn)行數(shù)據(jù)傳送。外設(shè)通過申請中斷的方式與計(jì)算機(jī)進(jìn)行數(shù)據(jù)傳送。 (4)直接存儲器存取方式)直接存儲器存取方式(DMA):傳送數(shù)據(jù)的雙方直接通過總線傳送傳送數(shù)據(jù)的雙方直接通過總線傳送數(shù)據(jù)數(shù)據(jù), 不經(jīng)不經(jīng)CPU中轉(zhuǎn)。中轉(zhuǎn)。153.2 MCS-51單片機(jī)的中斷系統(tǒng)單片機(jī)的中斷系統(tǒng)3.2.1 3.2.1 中斷的基本概念中斷的基本概念3.2.2 MCS-513.2.2 MCS-51的中斷系統(tǒng)的中斷系統(tǒng)3.2.3 MCS-513.2.3 MCS-51中斷系統(tǒng)的編程中斷系統(tǒng)的編程3.2.4 MCS-513.2.4 MCS-51擴(kuò)展外部中斷請求輸入口擴(kuò)展外部中斷請求輸入口16
15、3.2.1 3.2.1 中斷的基本概念中斷的基本概念 1中斷的定義中斷的定義 所謂所謂“中斷中斷”,是指,是指CPU執(zhí)行正常程序時(shí),系統(tǒng)中出現(xiàn)特執(zhí)行正常程序時(shí),系統(tǒng)中出現(xiàn)特殊請求,殊請求,CPU暫時(shí)中止當(dāng)前的程序,轉(zhuǎn)去處理更緊急的事件暫時(shí)中止當(dāng)前的程序,轉(zhuǎn)去處理更緊急的事件(執(zhí)行中斷服務(wù)程序),處理完畢(中斷服務(wù)完成)后,(執(zhí)行中斷服務(wù)程序),處理完畢(中斷服務(wù)完成)后,CPU自動返回原程序的過程。自動返回原程序的過程。作用:作用:采用中斷技術(shù)可以提高采用中斷技術(shù)可以提高CPU效率、解決速度矛盾、實(shí)現(xiàn)效率、解決速度矛盾、實(shí)現(xiàn)并行工作、分時(shí)操作、實(shí)時(shí)處理、故障處理、應(yīng)付突發(fā)事件,可并行工作、分時(shí)
16、操作、實(shí)時(shí)處理、故障處理、應(yīng)付突發(fā)事件,可使多項(xiàng)任務(wù)共享一個(gè)資源(使多項(xiàng)任務(wù)共享一個(gè)資源(CPU)。)。 中斷與子程序的最主要區(qū)別:中斷與子程序的最主要區(qū)別:子程序是預(yù)先安排好的,中斷是隨子程序是預(yù)先安排好的,中斷是隨機(jī)發(fā)生的。機(jī)發(fā)生的。中斷涉及的幾個(gè)環(huán)節(jié):中斷涉及的幾個(gè)環(huán)節(jié):中斷源、中斷源、 中斷申請、開放中斷、保護(hù)現(xiàn)中斷申請、開放中斷、保護(hù)現(xiàn)場、中斷服務(wù)、恢復(fù)現(xiàn)場、中斷返回。場、中斷服務(wù)、恢復(fù)現(xiàn)場、中斷返回。172. 中斷源中斷源 中斷源是指引起中斷的設(shè)備或事件,或發(fā)出中斷請求的源頭。中斷源是指引起中斷的設(shè)備或事件,或發(fā)出中斷請求的源頭。 3. 中斷的分類中斷的分類 中斷按功能通??煞譃榭?/p>
17、屏蔽中斷、非屏蔽中斷和軟件中斷中斷按功能通常可分為可屏蔽中斷、非屏蔽中斷和軟件中斷三類。三類。 可屏蔽中斷可屏蔽中斷是指是指CPU可以通過指令來允許或屏蔽中斷的請求??梢酝ㄟ^指令來允許或屏蔽中斷的請求。 非屏蔽中斷非屏蔽中斷是指是指CPU對中斷請求是不可屏蔽的,一旦出現(xiàn),對中斷請求是不可屏蔽的,一旦出現(xiàn),CPU必須響應(yīng)。必須響應(yīng)。 軟件中斷軟件中斷則是指通過相應(yīng)的中斷指令使則是指通過相應(yīng)的中斷指令使CPU響應(yīng)中斷。響應(yīng)中斷。4. 中斷優(yōu)先權(quán)與中斷嵌套中斷優(yōu)先權(quán)與中斷嵌套 中斷優(yōu)先級中斷優(yōu)先級(也稱為中斷優(yōu)先權(quán)):(也稱為中斷優(yōu)先權(quán)):給每個(gè)中斷源指定中斷給每個(gè)中斷源指定中斷響應(yīng)的優(yōu)先級別,響應(yīng)
18、的優(yōu)先級別, CPU按中斷源的優(yōu)先級高低順序響應(yīng)各中斷源按中斷源的優(yōu)先級高低順序響應(yīng)各中斷源發(fā)出的中斷請求。發(fā)出的中斷請求。18中斷嵌套:中斷嵌套:在某一瞬間,在某一瞬間,CPU因響應(yīng)某一中斷源的中斷請求而因響應(yīng)某一中斷源的中斷請求而正在執(zhí)行它的中斷服務(wù)程序時(shí),若又有一級別高的中斷源向正在執(zhí)行它的中斷服務(wù)程序時(shí),若又有一級別高的中斷源向CPU發(fā)出中斷請求,且發(fā)出中斷請求,且CPU的中斷是開放的,的中斷是開放的,CPU可以把正在可以把正在執(zhí)行的中斷服務(wù)程序暫停下來,轉(zhuǎn)而響應(yīng)和處理優(yōu)先權(quán)更高的執(zhí)行的中斷服務(wù)程序暫停下來,轉(zhuǎn)而響應(yīng)和處理優(yōu)先權(quán)更高的中斷源的中斷請求,等處理完后再轉(zhuǎn)回來,繼續(xù)執(zhí)行原來的
19、中中斷源的中斷請求,等處理完后再轉(zhuǎn)回來,繼續(xù)執(zhí)行原來的中斷服務(wù)程序,這就是中斷嵌套。斷服務(wù)程序,這就是中斷嵌套。 中斷嵌套的過程和子程序嵌套過程類似,子程序的返回指中斷嵌套的過程和子程序嵌套過程類似,子程序的返回指令是令是RET,而中斷服務(wù)程序的返回指令是,而中斷服務(wù)程序的返回指令是RETI。5. 5. 中斷響應(yīng)及處理過程中斷響應(yīng)及處理過程 保護(hù)斷點(diǎn)保護(hù)斷點(diǎn) 尋找中斷源尋找中斷源 中斷處理中斷處理 中斷返回中斷返回 保護(hù)斷點(diǎn)和尋找中斷源都是由硬件保護(hù)斷點(diǎn)和尋找中斷源都是由硬件自動自動完成的,用戶不用完成的,用戶不用考慮考慮。196. 中斷系統(tǒng)的功能中斷系統(tǒng)的功能中斷系統(tǒng):中斷系統(tǒng):能夠?qū)崿F(xiàn)中斷
20、功能的硬件電路和軟件程序。能夠?qū)崿F(xiàn)中斷功能的硬件電路和軟件程序。中斷系統(tǒng)的功能:中斷系統(tǒng)的功能:能夠?qū)崿F(xiàn)中斷優(yōu)先權(quán)排隊(duì)、中斷嵌套、自動能夠?qū)崿F(xiàn)中斷優(yōu)先權(quán)排隊(duì)、中斷嵌套、自動響應(yīng)中斷和中斷返回等功能。響應(yīng)中斷和中斷返回等功能。 MCS-51單片機(jī)的大部分中斷電路都是集成在芯片內(nèi)部的,單片機(jī)的大部分中斷電路都是集成在芯片內(nèi)部的,只有外部中斷請求信號產(chǎn)生電路才分散在各中斷源電路和接口只有外部中斷請求信號產(chǎn)生電路才分散在各中斷源電路和接口電路中。電路中。203.2.2 MCS-513.2.2 MCS-51的中斷系統(tǒng)的中斷系統(tǒng) MCS-51提供了提供了5個(gè)中斷源,個(gè)中斷源,2個(gè)中斷優(yōu)先級控制,可實(shí)現(xiàn)個(gè)中
21、斷優(yōu)先級控制,可實(shí)現(xiàn)2個(gè)中斷服務(wù)嵌套??赏ㄟ^程序設(shè)置中斷的允許或屏蔽,設(shè)置中個(gè)中斷服務(wù)嵌套。可通過程序設(shè)置中斷的允許或屏蔽,設(shè)置中斷的優(yōu)先級。斷的優(yōu)先級。1 1MCS-51MCS-51的中斷源的中斷源 80518051允許允許5 5個(gè)中斷源:個(gè)中斷源:(1 1)外部中斷源(中斷標(biāo)志為)外部中斷源(中斷標(biāo)志為IE0和和IE1 ) 由由 ( P3.2 )端口線引入,低電平或下降沿引起。)端口線引入,低電平或下降沿引起。 由由 ( P3.3 )端口線引入,低電平或下降沿引起。)端口線引入,低電平或下降沿引起。(2 2)內(nèi)部中斷源)內(nèi)部中斷源 (中斷標(biāo)志為(中斷標(biāo)志為TF0、TF1和和TI/RI )
22、T0T0:定時(shí):定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器0 0中斷,由中斷,由T0T0回零溢出引起?;亓阋绯鲆?。 T1T1:定時(shí):定時(shí)/ /計(jì)數(shù)器計(jì)數(shù)器1 1中斷,由中斷,由T1T1回零溢出引起。回零溢出引起。 TI/RITI/RI:串行:串行I/OI/O中斷,完成一幀字符發(fā)送中斷,完成一幀字符發(fā)送/ /接收引起。接收引起。0INT1INT218051的中斷結(jié)構(gòu)如下圖所示。的中斷結(jié)構(gòu)如下圖所示。 22CPU識別中斷申請的依據(jù):識別中斷申請的依據(jù): CPU在每個(gè)機(jī)器周期的在每個(gè)機(jī)器周期的S5P2期間,會自動查詢各個(gè)中斷申期間,會自動查詢各個(gè)中斷申請標(biāo)志位,若查到某標(biāo)志位被置位,將啟動中斷機(jī)制。請標(biāo)志位,若查到某
23、標(biāo)志位被置位,將啟動中斷機(jī)制。2 2中斷控制中斷控制 MCS-51單片機(jī)設(shè)置了單片機(jī)設(shè)置了4個(gè)專用寄存器用于中斷控制,用個(gè)專用寄存器用于中斷控制,用戶通過設(shè)置其狀態(tài)來管理中斷系統(tǒng)。戶通過設(shè)置其狀態(tài)來管理中斷系統(tǒng)。(1)定時(shí)器控制寄存器)定時(shí)器控制寄存器TCON (88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TF0/TF1:定時(shí)器溢出中斷申請標(biāo)志位定時(shí)器溢出中斷申請標(biāo)志位(由硬件自動置位)(由硬件自動置位)。 =0:定時(shí)器未溢出;定時(shí)器未溢出; =1:定時(shí)器溢出定時(shí)器溢出(由全(由全“1”變成全變成全“0”)時(shí)由硬件自動置位時(shí)由硬件自動置位,申請中斷,申請中斷,中斷被
24、中斷被CPU響應(yīng)后由硬件自動清零響應(yīng)后由硬件自動清零。23TR0/TR1:定時(shí)器運(yùn)行啟??刂莆欢〞r(shí)器運(yùn)行啟停控制位(可由用戶通過軟件設(shè)置(可由用戶通過軟件設(shè)置 )。 =0:定時(shí)器停止運(yùn)行;定時(shí)器停止運(yùn)行; =1:定時(shí)器啟動運(yùn)行。定時(shí)器啟動運(yùn)行。IE0/IE1:外部中斷申請標(biāo)志位外部中斷申請標(biāo)志位(由硬件自動置位(由硬件自動置位 ,中斷響應(yīng)后,中斷響應(yīng)后轉(zhuǎn)向中斷服務(wù)程序時(shí),由硬件自動清轉(zhuǎn)向中斷服務(wù)程序時(shí),由硬件自動清0 0 )。 =0:沒有外部中斷申請;沒有外部中斷申請; =1:有外部中斷申請。有外部中斷申請。IT0/IT1:外部中斷請求的觸發(fā)方式控制位外部中斷請求的觸發(fā)方式控制位(可由用戶通過
25、軟件設(shè)(可由用戶通過軟件設(shè)置置 )。 =0:在在INT0/INT1端申請中斷的信號低電平有效;端申請中斷的信號低電平有效; =1:在在INT0/INT1端申請中斷的信號負(fù)跳變有效。端申請中斷的信號負(fù)跳變有效。24(2 2)串行口控制寄存器)串行口控制寄存器SCON SCON (98H98H) TI/RI:串行口發(fā)送串行口發(fā)送/接收中斷申請標(biāo)志位(接收中斷申請標(biāo)志位(由硬件自動置位,必由硬件自動置位,必須由用戶在中斷服務(wù)程序中用軟件清須由用戶在中斷服務(wù)程序中用軟件清0)。)。 =0:沒有串行口發(fā)送沒有串行口發(fā)送/接收中斷申請;接收中斷申請; =1:有串行口發(fā)送有串行口發(fā)送/接收中斷申請。接收中斷
26、申請。 SCON的高的高6位用于串行口工作方式設(shè)置和串行口發(fā)送位用于串行口工作方式設(shè)置和串行口發(fā)送/接收控接收控制。制。 SM0 SM1 SM2 REN TB8 RB8 TI RISM0 SM1 SM2 REN TB8 RB8 TI RI25(3)中斷允許控制寄存器)中斷允許控制寄存器IE (0A8H) EAEA ES ET1 EX1 ET0 EX0ES ET1 EX1 ET0 EX0EX0/EX1/ET1/ET0/ES 位:位:分別是分別是 / ,T0/T1,串行,串行口的中斷允許控制位??诘闹袛嘣试S控制位。 =0 :禁止中斷;禁止中斷; =1 :允許中斷。允許中斷。EA:總的中斷允許控制位
27、(總開關(guān)):總的中斷允許控制位(總開關(guān)): =0 :禁止全部中斷;禁止全部中斷; =1 :允許中斷。允許中斷。0INT1INT26(4 4)中斷優(yōu)先級控制寄存器)中斷優(yōu)先級控制寄存器IP IP (0B8H0B8H) 8051有兩個(gè)中斷優(yōu)先級:高優(yōu)先級和低優(yōu)先級。每個(gè)中斷源都可設(shè)置為有兩個(gè)中斷優(yōu)先級:高優(yōu)先級和低優(yōu)先級。每個(gè)中斷源都可設(shè)置為高或低中斷優(yōu)先級,以便高或低中斷優(yōu)先級,以便CPU對所有的中斷實(shí)現(xiàn)兩級中斷嵌套。對所有的中斷實(shí)現(xiàn)兩級中斷嵌套。 8051內(nèi)部中斷系統(tǒng)對各中斷源的中斷優(yōu)先級有一個(gè)統(tǒng)一的規(guī)定,稱為自然內(nèi)部中斷系統(tǒng)對各中斷源的中斷優(yōu)先級有一個(gè)統(tǒng)一的規(guī)定,稱為自然優(yōu)先級(也稱為系統(tǒng)缺
28、省優(yōu)先級)。如下表所示。優(yōu)先級(也稱為系統(tǒng)缺省優(yōu)先級)。如下表所示。 8051單片機(jī)的中斷優(yōu)先級采用了自然優(yōu)先級和人工設(shè)置高、低優(yōu)先級的單片機(jī)的中斷優(yōu)先級采用了自然優(yōu)先級和人工設(shè)置高、低優(yōu)先級的策略,中斷處于同一級別時(shí),就由自然優(yōu)先級確定。開機(jī)時(shí),每個(gè)中斷都處策略,中斷處于同一級別時(shí),就由自然優(yōu)先級確定。開機(jī)時(shí),每個(gè)中斷都處于低優(yōu)先級,中斷優(yōu)先級可以通過程序來設(shè)定,由中斷優(yōu)先級寄存器于低優(yōu)先級,中斷優(yōu)先級可以通過程序來設(shè)定,由中斷優(yōu)先級寄存器IP來統(tǒng)來統(tǒng)一管理。一管理。 中中 斷斷 源源 中中 斷斷 標(biāo)標(biāo) 志志 缺省優(yōu)先級缺省優(yōu)先級 外中斷外中斷IE0最高最高最低最低 定時(shí)器定時(shí)器T0 TF0
29、 外中斷外中斷IE1定時(shí)器定時(shí)器T1TF1串行口中斷串行口中斷TI, RI0INT1INT27(4 4)中斷優(yōu)先級控制寄存器)中斷優(yōu)先級控制寄存器IP IP (0B8H0B8H) PS PT1PS PT1 PX1 PX1 PT0 PX0PT0 PX00INT1INTPX0/PX1: / 優(yōu)先級控制位:優(yōu)先級控制位: =0 :屬低優(yōu)先級;屬低優(yōu)先級; =1 :屬高優(yōu)先級。屬高優(yōu)先級。PT0/PT1:T0/T1中斷優(yōu)先級控制位:中斷優(yōu)先級控制位: =0 :屬低優(yōu)先級;屬低優(yōu)先級; =1 :屬高優(yōu)先級。屬高優(yōu)先級。PS1:串行口中斷優(yōu)先級控制位:串行口中斷優(yōu)先級控制位: =0 :屬低優(yōu)先級;屬低優(yōu)先
30、級; =1 :屬高優(yōu)先級。屬高優(yōu)先級。28中斷優(yōu)先級處理原則:中斷優(yōu)先級處理原則: 對對同時(shí)發(fā)生多個(gè)中斷申請時(shí):同時(shí)發(fā)生多個(gè)中斷申請時(shí): 不同優(yōu)先級的中斷同時(shí)申請:先高后低不同優(yōu)先級的中斷同時(shí)申請:先高后低 相同優(yōu)先級的中斷同時(shí)申請:按序執(zhí)行(自然優(yōu)先級)相同優(yōu)先級的中斷同時(shí)申請:按序執(zhí)行(自然優(yōu)先級) 正處理低優(yōu)先級中斷又接到高級別中斷:高打斷低正處理低優(yōu)先級中斷又接到高級別中斷:高打斷低 正處理高優(yōu)先級中斷又接到低級別中斷:高不理低正處理高優(yōu)先級中斷又接到低級別中斷:高不理低293中斷響應(yīng)中斷響應(yīng) (1 1)中斷響應(yīng)的條件)中斷響應(yīng)的條件 MCS-51單片機(jī)工作時(shí),在每個(gè)機(jī)器周期中都會去查
31、詢各個(gè)單片機(jī)工作時(shí),在每個(gè)機(jī)器周期中都會去查詢各個(gè)中斷標(biāo)志,如果有中斷請求。必須滿足下列條件單片機(jī)才能響中斷標(biāo)志,如果有中斷請求。必須滿足下列條件單片機(jī)才能響應(yīng)中斷。應(yīng)中斷。 相應(yīng)的中斷是開放的;相應(yīng)的中斷是開放的; 沒有同級的中斷或更高級別的中斷正在處理;沒有同級的中斷或更高級別的中斷正在處理; 正在執(zhí)行的指令必須執(zhí)行完最后正在執(zhí)行的指令必須執(zhí)行完最后 1個(gè)機(jī)器周期;個(gè)機(jī)器周期; 若正在執(zhí)行若正在執(zhí)行RETI,或正在訪問,或正在訪問IE或或IP寄存器寄存器,則必須執(zhí)行完則必須執(zhí)行完當(dāng)前指令的下一條指令后當(dāng)前指令的下一條指令后方能響應(yīng)中斷。方能響應(yīng)中斷。30(2)中斷響應(yīng)的過程)中斷響應(yīng)的過程
32、 中斷過程包括中斷請求、中斷響應(yīng)、中斷服務(wù)、中斷返回中斷過程包括中斷請求、中斷響應(yīng)、中斷服務(wù)、中斷返回四個(gè)階段。四個(gè)階段。中斷請求:中斷請求:中斷源將相應(yīng)請求中斷的標(biāo)志位置中斷源將相應(yīng)請求中斷的標(biāo)志位置 “1”,表示發(fā)出,表示發(fā)出請求,并由請求,并由CPU 查詢。查詢。中斷響應(yīng):中斷響應(yīng):在中斷允許條件下響應(yīng)中斷。斷點(diǎn)入棧在中斷允許條件下響應(yīng)中斷。斷點(diǎn)入棧撤除中斷撤除中斷標(biāo)志標(biāo)志關(guān)閉低、同級中斷允許關(guān)閉低、同級中斷允許中斷入口地址送中斷入口地址送PC。 這些工作這些工作都是由硬件自動完成的。都是由硬件自動完成的。中斷服務(wù):中斷服務(wù):根據(jù)入口地址轉(zhuǎn)中斷服務(wù)程序,包含保護(hù)現(xiàn)場、執(zhí)根據(jù)入口地址轉(zhuǎn)中斷
33、服務(wù)程序,包含保護(hù)現(xiàn)場、執(zhí)行中斷主體、恢復(fù)現(xiàn)場。行中斷主體、恢復(fù)現(xiàn)場。中斷返回:中斷返回:執(zhí)行中斷返回執(zhí)行中斷返回RETI指令指令斷點(diǎn)出棧送斷點(diǎn)出棧送PC 開放中開放中斷允許斷允許返回原程序。返回原程序。31中斷服務(wù)程序入口地址:中斷服務(wù)程序入口地址: 中斷響應(yīng)的主要內(nèi)容就是由硬件中斷響應(yīng)的主要內(nèi)容就是由硬件自動自動生成一條長調(diào)用指令生成一條長調(diào)用指令(LCALL addr16),),CPU執(zhí)行這條長調(diào)用指令便響應(yīng)中斷,轉(zhuǎn)執(zhí)行這條長調(diào)用指令便響應(yīng)中斷,轉(zhuǎn)入相應(yīng)的中斷服務(wù)程序。這里的入相應(yīng)的中斷服務(wù)程序。這里的addr16就是程序存儲器中相應(yīng)的就是程序存儲器中相應(yīng)的中斷服務(wù)程序的入口地址,中斷服
34、務(wù)程序的入口地址,MCS-51的的5個(gè)中斷源的中斷服務(wù)程序個(gè)中斷源的中斷服務(wù)程序入口地址是固定的,如下表所示。入口地址是固定的,如下表所示。0023H串行口中斷串行口中斷001BH定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1中斷中斷0013H 外中斷外中斷000BH定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0中斷中斷0003H 外中斷外中斷入口地址入口地址中斷源中斷源1INT0INTC51中的中斷號中的中斷號1024332 8051的的5個(gè)中斷源的中斷服務(wù)入口地址之間相差個(gè)中斷源的中斷服務(wù)入口地址之間相差8個(gè)單元。這個(gè)單元。這8個(gè)存儲單元用來存儲中斷服務(wù)程序一般來說是不夠的。用戶常個(gè)存儲單元用來存儲中斷服務(wù)程序一般來說是
35、不夠的。用戶常在中斷服務(wù)程序地址入口處放一條三字節(jié)的長轉(zhuǎn)移指令。一般地,在中斷服務(wù)程序地址入口處放一條三字節(jié)的長轉(zhuǎn)移指令。一般地,主程序從主程序從0030H單元以后開始存放。例如:單元以后開始存放。例如:ORG 0000HLJMP START ; 轉(zhuǎn)入主程序,轉(zhuǎn)入主程序,START為主程序地址標(biāo)號為主程序地址標(biāo)號ORG 0003HLJMP INT0 ; 轉(zhuǎn)外中斷中斷服務(wù)程序轉(zhuǎn)外中斷中斷服務(wù)程序ORG 000BHLJMP T0 ; 轉(zhuǎn)定時(shí)器轉(zhuǎn)定時(shí)器T0中斷服務(wù)程序中斷服務(wù)程序ORG 0030HSTART: ; 主程序開始主程序開始(3)中斷響應(yīng)時(shí)間)中斷響應(yīng)時(shí)間 正常中斷響應(yīng)時(shí)間至少為正常中斷響
36、應(yīng)時(shí)間至少為38個(gè)機(jī)器周期,如果有同級或高個(gè)機(jī)器周期,如果有同級或高級中斷服務(wù),將延長中斷響應(yīng)時(shí)間。級中斷服務(wù),將延長中斷響應(yīng)時(shí)間。334中斷請求的撤除中斷請求的撤除 為了避免中斷請求標(biāo)志沒有及時(shí)撤除而造成的重復(fù)響應(yīng)同一為了避免中斷請求標(biāo)志沒有及時(shí)撤除而造成的重復(fù)響應(yīng)同一中斷請求的錯(cuò)誤,中斷請求的錯(cuò)誤, CPU在相應(yīng)中斷時(shí)必須及時(shí)將其中斷請求標(biāo)在相應(yīng)中斷時(shí)必須及時(shí)將其中斷請求標(biāo)志位撤除。志位撤除。 8051的的5個(gè)中斷源的中斷請求撤除的方法是不同的。個(gè)中斷源的中斷請求撤除的方法是不同的。(1 1)定時(shí)器溢出中斷請求的撤除)定時(shí)器溢出中斷請求的撤除 定時(shí)器溢出中斷得到響應(yīng)后,其中斷請求的標(biāo)志位定
37、時(shí)器溢出中斷得到響應(yīng)后,其中斷請求的標(biāo)志位TF0和和TF1由硬件由硬件自動自動復(fù)位。復(fù)位。(2 2)串行口中斷請求的撤除)串行口中斷請求的撤除 串行口中斷得到響應(yīng)后,其中斷請求的標(biāo)志位串行口中斷得到響應(yīng)后,其中斷請求的標(biāo)志位TI和和RI不能由不能由硬件自動復(fù)位,必須由用戶在中斷服務(wù)程序的適當(dāng)位置通過如下硬件自動復(fù)位,必須由用戶在中斷服務(wù)程序的適當(dāng)位置通過如下指令指令將它們撤除。將它們撤除。 CLR TI ; 撤除發(fā)送中斷請求標(biāo)志(撤除發(fā)送中斷請求標(biāo)志( TI = 0;);) CLR RI ; 撤除接收中斷請求標(biāo)志(撤除接收中斷請求標(biāo)志( RI = 0;);) 或采用字節(jié)型指令:或采用字節(jié)型指令
38、:ANL SCON, #0FCH34(3)外部中斷請求的撤除)外部中斷請求的撤除 外部中斷請求的兩種觸發(fā)方式(電平觸發(fā)和負(fù)邊沿觸發(fā))的外部中斷請求的兩種觸發(fā)方式(電平觸發(fā)和負(fù)邊沿觸發(fā))的中斷請求撤除的方法是不同的。中斷請求撤除的方法是不同的。負(fù)邊沿觸發(fā)方式:負(fù)邊沿觸發(fā)方式:CPU在前一機(jī)器周期采到在前一機(jī)器周期采到 / 引腳為高引腳為高,后后一機(jī)器周期采到為低才認(rèn)為是一次中斷請求,即依靠一機(jī)器周期采到為低才認(rèn)為是一次中斷請求,即依靠CPU兩次檢兩次檢測測 (或(或 )上的負(fù)邊沿觸發(fā)電平狀態(tài)而置位外部中斷標(biāo)志位)上的負(fù)邊沿觸發(fā)電平狀態(tài)而置位外部中斷標(biāo)志位IE0或或IE1 。CPU 可記憶申請、可
39、由硬件可記憶申請、可由硬件自動自動撤除中斷申請。撤除中斷申請。電平觸發(fā)方式:電平觸發(fā)方式: / / 引腳上的低電平須持續(xù)到中斷發(fā)生。若引腳上的低電平須持續(xù)到中斷發(fā)生。若中斷返回前仍未及時(shí)撤除低電平,雖然中斷返回前仍未及時(shí)撤除低電平,雖然CPU在響應(yīng)中斷時(shí)能由硬在響應(yīng)中斷時(shí)能由硬件自動復(fù)位件自動復(fù)位IE0或或IE1,但引腳上的低電平仍會使已經(jīng)復(fù)位的,但引腳上的低電平仍會使已經(jīng)復(fù)位的IE0或或IE1再次置位,產(chǎn)生重復(fù)中斷的錯(cuò)誤。再次置位,產(chǎn)生重復(fù)中斷的錯(cuò)誤。 0INT0INT1INT1INT0INT1INT35 電平觸發(fā)型外部中斷請求的撤除必須由外部硬件使(或)上的低電平電平觸發(fā)型外部中斷請求的撤
40、除必須由外部硬件使(或)上的低電平隨著其中斷被響應(yīng)而變?yōu)楦唠娖?。其中斷請求撤除的電路如下圖所示。隨著其中斷被響應(yīng)而變?yōu)楦唠娖?。其中斷請求撤除的電路如下圖所示。 外來的低電平外來的低電平反相反相CP端產(chǎn)生上跳沿端產(chǎn)生上跳沿 D端的端的“0”輸出到輸出到Q端端申請申請中斷,中斷,中斷服務(wù)返回前對中斷服務(wù)返回前對P1.0P1.0送送“0 0” 令令Q Q端變?yōu)槎俗優(yōu)椤? 1”(SDSD位置位置1 1端)。端)。 指令如下:指令如下: ANL P1,#0FEH (或(或CLR P1.0 ) ;令;令Q端置端置“1” ORL P1, #01H ( SETB P1.0 ) ;令;令SD端置端置“1”,以免
41、下次以免下次 中斷來時(shí)中斷來時(shí)Q端不能變端不能變“0”363.2.3 MCS-513.2.3 MCS-51中斷系統(tǒng)的編程中斷系統(tǒng)的編程 (1 1)中斷初始化設(shè)置:)中斷初始化設(shè)置:開相應(yīng)中斷允許(開相應(yīng)中斷允許( IE )、根據(jù)需要選擇)、根據(jù)需要選擇優(yōu)先級(優(yōu)先級( IP )和選擇外中斷觸發(fā)方式()和選擇外中斷觸發(fā)方式(TCON),設(shè)置計(jì)數(shù)器、),設(shè)置計(jì)數(shù)器、串行口的有關(guān)參數(shù)。串行口的有關(guān)參數(shù)。(2 2)中斷服務(wù)程序的編寫:)中斷服務(wù)程序的編寫:中斷入口、保護(hù)現(xiàn)場、關(guān)中斷、中中斷入口、保護(hù)現(xiàn)場、關(guān)中斷、中斷服務(wù)主體程序、恢復(fù)現(xiàn)場、開中斷、設(shè)置計(jì)數(shù)器、串行口的有斷服務(wù)主體程序、恢復(fù)現(xiàn)場、開中斷
42、、設(shè)置計(jì)數(shù)器、串行口的有關(guān)參數(shù)、中斷返回指令關(guān)參數(shù)、中斷返回指令RETI 。 例題例題2 2 設(shè)設(shè)8051外部中斷源接引腳外部中斷源接引腳 ,中斷觸發(fā)方式為電平觸,中斷觸發(fā)方式為電平觸發(fā),試編制發(fā),試編制8051中斷系統(tǒng)的初始化程序。中斷系統(tǒng)的初始化程序。解:解:采用位操作指令實(shí)現(xiàn)(也可以采用傳送指令和邏輯指令)。采用位操作指令實(shí)現(xiàn)(也可以采用傳送指令和邏輯指令)。 SETB EA ; 開總中斷開總中斷EA = 1; SETB EX0 ; 開中斷開中斷 EX0 = 1; SETB PX0 ; 設(shè)置為高優(yōu)先級設(shè)置為高優(yōu)先級 PX0 = 1; CLR IT0 ; 設(shè)置為電平觸發(fā)方式設(shè)置為電平觸發(fā)方
43、式 IT0 = 1;0INT37 例題例題3 3 通過通過外部中斷控制外部中斷控制8盞燈循環(huán)點(diǎn)亮。盞燈循環(huán)點(diǎn)亮。解:解:通過通過P1口擴(kuò)展八盞燈,在口擴(kuò)展八盞燈,在 引腳接一個(gè)按鈕開關(guān)到地,引腳接一個(gè)按鈕開關(guān)到地,每按一下按鈕就申請一次中斷,點(diǎn)亮一盞燈,中斷服務(wù)則是:依每按一下按鈕就申請一次中斷,點(diǎn)亮一盞燈,中斷服務(wù)則是:依次點(diǎn)亮次點(diǎn)亮8盞燈中的一盞。采用邊沿觸發(fā)。盞燈中的一盞。采用邊沿觸發(fā)。1INT38程序如下:程序如下: ORG 0000H LJMP MAIN ORG 0013H ; 中斷服務(wù)程序入口地址中斷服務(wù)程序入口地址 LJMP IN11 ORG 0030H MAIN:MOV SP
44、, #60H SETB EA ; 開總中斷允許開總中斷允許“開關(guān)開關(guān)” SETB EX1 ; 開分中斷允許開分中斷允許“開關(guān)開關(guān)” CLR PX1 ; 低低 優(yōu)先級(也可不要此句)優(yōu)先級(也可不要此句) SETB IT1 ; 邊沿觸發(fā)邊沿觸發(fā) MOV A , #01H ; 給累加器給累加器A賦初值賦初值 SJMP $ ; 原地等待中斷申請?jiān)氐却袛嗌暾?IN11:MOV P1,A ; 輸出到輸出到P1口口 RL A ; 左環(huán)移一次左環(huán)移一次 RETI ; 中斷返回中斷返回 END#include reg51.hunsigned char a;void main() EA = 1; / 開總中
45、斷允許開總中斷允許“開關(guān)開關(guān)” EX1 = 1; / 開外部中斷開外部中斷 1 允許允許“開關(guān)開關(guān)” PX1 = 0; / 低優(yōu)先級(也可不要此句)低優(yōu)先級(也可不要此句) IT1 = 1; / 下降沿觸發(fā)下降沿觸發(fā) a = 1; / 給變量給變量 a 賦初值賦初值 while(1); / 原地等待中斷申請?jiān)氐却袛嗌暾坴oid int1() interrupt 2 P1 = a; a = a 1; if(a=0) a = 1;393.2.4 MCS-51擴(kuò)展外部中斷請求輸入口擴(kuò)展外部中斷請求輸入口 8051單片機(jī)只提供了兩個(gè)外部中斷請求輸入端,如果需要單片機(jī)只提供了兩個(gè)外部中斷請求輸入端,
46、如果需要使用多于兩個(gè)的中斷源,就必須擴(kuò)展外部中斷請求輸入口使用多于兩個(gè)的中斷源,就必須擴(kuò)展外部中斷請求輸入口。1 1定時(shí)器定時(shí)器/ /計(jì)數(shù)器用于擴(kuò)展外部中斷請求輸入口計(jì)數(shù)器用于擴(kuò)展外部中斷請求輸入口 8051單片機(jī)有兩個(gè)定時(shí)器單片機(jī)有兩個(gè)定時(shí)器/計(jì)數(shù)器,它們作為計(jì)數(shù)器使用時(shí),計(jì)數(shù)器,它們作為計(jì)數(shù)器使用時(shí),計(jì)數(shù)輸入端計(jì)數(shù)輸入端T0(或(或T1)發(fā)生負(fù)跳變將使計(jì)數(shù)器加)發(fā)生負(fù)跳變將使計(jì)數(shù)器加1,利用此特,利用此特性,適當(dāng)設(shè)置計(jì)數(shù)初值,就可以把計(jì)數(shù)輸入端性,適當(dāng)設(shè)置計(jì)數(shù)初值,就可以把計(jì)數(shù)輸入端T0(或(或T1)作為)作為外部中斷請求輸入口。其特點(diǎn)是以占用內(nèi)部定時(shí)中斷為代價(jià)的。外部中斷請求輸入口。其特
47、點(diǎn)是以占用內(nèi)部定時(shí)中斷為代價(jià)的。中斷服務(wù)程序的入口地址仍然為中斷服務(wù)程序的入口地址仍然為000BH或或001BH。402 2查詢方式擴(kuò)展外部中斷請求輸入口查詢方式擴(kuò)展外部中斷請求輸入口 把多個(gè)中斷源通過硬件(如與非門)引入外部中斷輸入端,把多個(gè)中斷源通過硬件(如與非門)引入外部中斷輸入端,同時(shí)又連到某個(gè)同時(shí)又連到某個(gè)I/O口。當(dāng)有中斷源申請中斷時(shí),在中斷服務(wù)程口。當(dāng)有中斷源申請中斷時(shí),在中斷服務(wù)程序中通過軟件查詢可確定哪一個(gè)是正在申請的中斷源,其查詢的序中通過軟件查詢可確定哪一個(gè)是正在申請的中斷源,其查詢的次序可由中斷優(yōu)先級決定。其特點(diǎn)是中斷響應(yīng)速度較慢。次序可由中斷優(yōu)先級決定。其特點(diǎn)是中斷響
48、應(yīng)速度較慢。 適用于適用于外部中斷源較多的場合。外部中斷源較多的場合。3 3使用專用芯片擴(kuò)展外部中斷請求輸入口使用專用芯片擴(kuò)展外部中斷請求輸入口 當(dāng)外部中斷源較多,同時(shí)又要求中斷響應(yīng)速度很高時(shí),查詢當(dāng)外部中斷源較多,同時(shí)又要求中斷響應(yīng)速度很高時(shí),查詢方式擴(kuò)展外部中斷請求輸入口的方法很難滿足要求。這時(shí)可以使方式擴(kuò)展外部中斷請求輸入口的方法很難滿足要求。這時(shí)可以使用專用接口芯片進(jìn)行外部中斷請求輸入口的擴(kuò)展。用專用接口芯片進(jìn)行外部中斷請求輸入口的擴(kuò)展。74LS148優(yōu)先優(yōu)先級編碼器和可編程中斷控制器級編碼器和可編程中斷控制器8259均可以實(shí)現(xiàn)該任務(wù)。均可以實(shí)現(xiàn)該任務(wù)。 41對流水燈實(shí)驗(yàn)的改進(jìn)對流水燈
49、實(shí)驗(yàn)的改進(jìn)void delay(void)void delay(void) unsigned int i, j, k, l;unsigned int i, j, k, l; for(i = 0; i 27000; i+)for(i = 0; i 27000; i+) j+; k+; l+; ; j+; k+; l+; ; #include #include void main (void)void main (void) unsigned char i,c4 = 0 xef, 0 xdf, 0 xbf, 0 x7f;unsigned char i,c4 = 0 xef, 0 xdf, 0 xb
50、f, 0 x7f;i = 0;i = 0;while(1)while(1) P3 = ci & 3; P3 = ci & 3; i+; i+; delay();delay(); 42 不占用硬件資源,但占用不占用硬件資源,但占用CPU時(shí)間,降低時(shí)間,降低CPU效率。效率。 如采用如采用555電路,但定時(shí)值與定時(shí)范圍不能由軟件修電路,但定時(shí)值與定時(shí)范圍不能由軟件修改,即不可編程。改,即不可編程。 采用可編程計(jì)時(shí)器,其定時(shí)范圍很容易用軟件控制。采用可編程計(jì)時(shí)器,其定時(shí)范圍很容易用軟件控制。433.3.1 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器3.3.2 定時(shí)器定時(shí)器/計(jì)數(shù)器的工作方式計(jì)數(shù)器的工
51、作方式3.3.3 定時(shí)器定時(shí)器/計(jì)數(shù)器的應(yīng)用計(jì)數(shù)器的應(yīng)用3.3 MCS-51單片機(jī)的定時(shí)器單片機(jī)的定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器 44 8051內(nèi)部有兩個(gè)內(nèi)部有兩個(gè)16位二進(jìn)制計(jì)數(shù)器,它們有兩個(gè)功能位二進(jìn)制計(jì)數(shù)器,它們有兩個(gè)功能 -計(jì)數(shù)計(jì)數(shù) 和和 定時(shí)定時(shí)(1 1)計(jì)數(shù))計(jì)數(shù):對對 外外 部事件(脈沖)的個(gè)數(shù)進(jìn)行計(jì)數(shù)。部事件(脈沖)的個(gè)數(shù)進(jìn)行計(jì)數(shù)。(2 2)定時(shí):)定時(shí):對對 內(nèi)內(nèi) 部事件(脈沖)的個(gè)數(shù)進(jìn)行計(jì)數(shù)。部事件(脈沖)的個(gè)數(shù)進(jìn)行計(jì)數(shù)。定時(shí)定時(shí)/計(jì)數(shù)器計(jì)數(shù)器 T0 和和 T145 兩個(gè)兩個(gè)16位可編程的定時(shí)器位可編程的定時(shí)器/計(jì)數(shù)器,它們均是二進(jìn)制計(jì)數(shù)器,它們均是二進(jìn)制加法計(jì)數(shù)器加法計(jì)數(shù)器,當(dāng)計(jì)數(shù)
52、器計(jì)滿回零時(shí)能自動產(chǎn)生溢出中,當(dāng)計(jì)數(shù)器計(jì)滿回零時(shí)能自動產(chǎn)生溢出中斷請求。斷請求。l 計(jì)數(shù)器:計(jì)數(shù)器:對引腳對引腳T0(P 3.4 )和)和T1(P3.5)輸入的外部脈沖)輸入的外部脈沖信號的下降沿計(jì)數(shù),計(jì)數(shù)的最高頻率為信號的下降沿計(jì)數(shù),計(jì)數(shù)的最高頻率為OSC的的1/24。l 定時(shí)器:定時(shí)器:對對OSC的的12分頻輸出進(jìn)行計(jì)數(shù)。分頻輸出進(jìn)行計(jì)數(shù)。 2MCS-51內(nèi)部定時(shí)器內(nèi)部定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器 46l 工作方式寄存器工作方式寄存器 TMODl 控制寄存器控制寄存器 TCONl T0計(jì)數(shù)單元計(jì)數(shù)單元 TH0 和和 TL0l T1計(jì)數(shù)單元計(jì)數(shù)單元 TH1 和和 TL147(2)控制寄存器)控制寄存
53、器TCON (88H) l 標(biāo)志位和控制位均為標(biāo)志位和控制位均為1有效。有效。l 標(biāo)志位由硬件置標(biāo)志位由硬件置1,響應(yīng)中斷時(shí)由硬件自動清零。,響應(yīng)中斷時(shí)由硬件自動清零。l IE0/IE1和和IT0/IT1:用于管理外部中斷。:用于管理外部中斷。TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0T1/T0計(jì)數(shù)溢出標(biāo)志位計(jì)數(shù)溢出標(biāo)志位T1/T0啟動停止控制位啟動停止控制位48 M1, M0:工作方式選擇位工作方式選擇位 l 00:13位定時(shí)器位定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器l 01:16位定時(shí)器位定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器l 10:可自動重裝的可自動重裝的8位定時(shí)器位定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器l 11:T0
54、 分為分為2個(gè)個(gè)8位定時(shí)器位定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器, 僅適用于僅適用于T0 (3 3)工作方式寄存器)工作方式寄存器TMOD (89H) T1T0GATEC/TM1M0GATEC/TM1M0C/T:定時(shí)方式定時(shí)方式/計(jì)數(shù)方式選擇位計(jì)數(shù)方式選擇位l 1: 計(jì)數(shù)器工作方式,對來自計(jì)數(shù)器工作方式,對來自T0/T1腳的外部脈沖計(jì)數(shù)腳的外部脈沖計(jì)數(shù)l 0 :定時(shí)器工作方式,對機(jī)器周期脈沖數(shù)計(jì)數(shù)定時(shí)器工作方式,對機(jī)器周期脈沖數(shù)計(jì)數(shù)49l 0 :軟件控制軟件控制,只由,只由TCON中的啟中的啟/??刂莆煌?刂莆籘R0/TR1控制控制 定時(shí)器定時(shí)器/計(jì)數(shù)器的啟計(jì)數(shù)器的啟/停。停。l 1 :硬件控制硬件控制,由外
55、部中斷請求信號,由外部中斷請求信號 / 和和TCON 中的啟中的啟/??刂莆煌?刂莆籘R0/TR1組合狀態(tài)控制定時(shí)器組合狀態(tài)控制定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器 的啟的啟/停。停。0INT1INTGATE:門控位門控位503.3.2 3.3.2 定時(shí)器定時(shí)器/ /計(jì)數(shù)器的工作方式計(jì)數(shù)器的工作方式 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器 T0 有四種工作模式,有四種工作模式,T1 有三種工作模式有三種工作模式1方式方式0( M1M0 = 00 ,13 位定時(shí)器位定時(shí)器/計(jì)數(shù)器)計(jì)數(shù)器)2方式方式1 ( M1M0 = 01 ,16 位定時(shí)器位定時(shí)器/計(jì)數(shù)器)計(jì)數(shù)器) 由由 TH0 和和 TL0 構(gòu)成構(gòu)成 16 位加位加
56、1 計(jì)數(shù)器,其他特性與方式計(jì)數(shù)器,其他特性與方式 0 相同相同TH0TL0TF0TH0TL0TF0513方式方式2 (M1M0 =10,自動重裝初值的,自動重裝初值的 8 位定時(shí)器位定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器) 16位定時(shí)器位定時(shí)器/計(jì)數(shù)器被拆成兩個(gè)計(jì)數(shù)器被拆成兩個(gè)8位寄存器位寄存器TH0和和TL0,CPU在對它們初始化時(shí)必須裝入相同的定時(shí)器在對它們初始化時(shí)必須裝入相同的定時(shí)器/計(jì)數(shù)器初值。以計(jì)數(shù)器初值。以TL0作計(jì)數(shù)器,而作計(jì)數(shù)器,而TH0作為預(yù)置寄存器。當(dāng)計(jì)數(shù)滿溢出時(shí),作為預(yù)置寄存器。當(dāng)計(jì)數(shù)滿溢出時(shí),TF0置置“1”,同時(shí),同時(shí)TH0將計(jì)數(shù)初值以硬件方法自動裝入將計(jì)數(shù)初值以硬件方法自動裝入TL0
57、。這種工。這種工作方式很適合于那些重復(fù)計(jì)數(shù)的應(yīng)用場合(如串行數(shù)據(jù)通信的作方式很適合于那些重復(fù)計(jì)數(shù)的應(yīng)用場合(如串行數(shù)據(jù)通信的波特率發(fā)生器)。波特率發(fā)生器)。TH0TL0TF0524工作方式工作方式3 ( M1M0=11 , 2個(gè)個(gè)8位定時(shí)器位定時(shí)器/計(jì)數(shù)器,僅適用于計(jì)數(shù)器,僅適用于T0)TL0:8位定時(shí)器位定時(shí)器/計(jì)數(shù)器,使用計(jì)數(shù)器,使用T0原有控制資源原有控制資源TR0和和TF0,其,其功能和操作與方式功能和操作與方式0或方式或方式1完全相同。完全相同。TH0:只能作為只能作為8位定時(shí)器,借用位定時(shí)器,借用T1的控制位的控制位TR1和和TF1,只能,只能對片內(nèi)機(jī)器周期脈沖計(jì)數(shù)。對片內(nèi)機(jī)器周期
58、脈沖計(jì)數(shù)。 在方式在方式3模式下,定時(shí)器模式下,定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器0可以構(gòu)成兩個(gè)定時(shí)器或者可以構(gòu)成兩個(gè)定時(shí)器或者一個(gè)定時(shí)器和一個(gè)計(jì)數(shù)器。一個(gè)定時(shí)器和一個(gè)計(jì)數(shù)器。 T0方式方式3下的下的T1方式方式2,因定時(shí)初值能自動恢復(fù),用作波,因定時(shí)初值能自動恢復(fù),用作波特率發(fā)生器更為合適。特率發(fā)生器更為合適。53 定時(shí)器定時(shí)器/計(jì)數(shù)器可按片內(nèi)機(jī)器周期定時(shí),也可對由計(jì)數(shù)器可按片內(nèi)機(jī)器周期定時(shí),也可對由T0/T1引引腳輸入一個(gè)負(fù)脈沖進(jìn)行加法計(jì)數(shù)。在應(yīng)用時(shí),其工作方式和工腳輸入一個(gè)負(fù)脈沖進(jìn)行加法計(jì)數(shù)。在應(yīng)用時(shí),其工作方式和工作過程均可通過程序設(shè)定和控制,因此,定時(shí)器作過程均可通過程序設(shè)定和控制,因此,定時(shí)器/
59、計(jì)數(shù)器在工作計(jì)數(shù)器在工作前必須先對其進(jìn)行初始化,計(jì)算和設(shè)置初值。前必須先對其進(jìn)行初始化,計(jì)算和設(shè)置初值。 1. 定時(shí)器定時(shí)器T0/T1 中斷申請過程中斷申請過程 (1)在已經(jīng)開放)在已經(jīng)開放T0/T1中斷允許且已被啟動的前提下,中斷允許且已被啟動的前提下,T0/T1加加1計(jì)滿溢出時(shí)計(jì)滿溢出時(shí) TF0/TF1標(biāo)志位自動置標(biāo)志位自動置“1” ; (2)CPU 檢測到檢測到TCON中中TF0/TF1變變“1”后,將產(chǎn)生指令:后,將產(chǎn)生指令:LCALL 000BH/LCALL 001BH 執(zhí)行中斷服務(wù)程序;執(zhí)行中斷服務(wù)程序; (3)TF0/TF1標(biāo)志位由硬件自動清標(biāo)志位由硬件自動清“0”,以備下次中斷
60、申請。,以備下次中斷申請。3.3.3 定時(shí)器定時(shí)器/計(jì)數(shù)器的應(yīng)用計(jì)數(shù)器的應(yīng)用 542. 定時(shí)器定時(shí)器/計(jì)數(shù)器初始化的步驟計(jì)數(shù)器初始化的步驟 (1)寫)寫TMOD,設(shè)置定時(shí)器,設(shè)置定時(shí)器/計(jì)數(shù)器的工作方式;計(jì)數(shù)器的工作方式; (2)計(jì)算定時(shí)器)計(jì)算定時(shí)器/計(jì)數(shù)器的初值,寫入計(jì)數(shù)器的初值,寫入TH0/TH1、TL0/TL1。 (3)設(shè)置)設(shè)置IE、IP,以開放相應(yīng)的中斷和設(shè)定中斷優(yōu)先級。,以開放相應(yīng)的中斷和設(shè)定中斷優(yōu)先級。 (4)置位)置位TR0/TR1,啟動計(jì)數(shù)。,啟動計(jì)數(shù)。 3. 定時(shí)器定時(shí)器/計(jì)數(shù)器的定時(shí)器計(jì)數(shù)器的定時(shí)器/計(jì)數(shù)器范圍計(jì)數(shù)器范圍 (1 1)工作方式工作方式0 0:13位定時(shí)器位定時(shí)器/計(jì)數(shù)器方
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中班健康扭秧歌教學(xué)實(shí)踐
- 設(shè)備管理發(fā)展歷史
- 幼兒園安全教育內(nèi)容講座
- 趕走污染守護(hù)大班健康
- 教育專家核心能力與發(fā)展路徑
- 煤改氣安全管理經(jīng)驗(yàn)
- 2025年應(yīng)急救生系統(tǒng)項(xiàng)目提案報(bào)告
- 2025年混合式步進(jìn)電機(jī)項(xiàng)目立項(xiàng)申請報(bào)告模板
- 2025年腈類項(xiàng)目提案報(bào)告
- 【蕪湖】2025年安徽蕪湖南陵縣農(nóng)技推廣服務(wù)特聘人員招募3人筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 2023年《刑事影像技術(shù)》專業(yè)知識考試題庫及答案(含各題型)
- (正式版)HGT 20593-2024 鋼制化工設(shè)備焊接與檢驗(yàn)工程技術(shù)規(guī)范
- 售后服務(wù)質(zhì)量管理體系培訓(xùn)課程
- 醫(yī)院隨訪工作總結(jié)
- 美標(biāo)護(hù)板-培訓(xùn)資料
- 高血脂的藥物治療研究
- 設(shè)備拆除工作總結(jié)匯報(bào)
- 辦公室安全教育培訓(xùn)培訓(xùn)
- 胎心監(jiān)護(hù)醫(yī)學(xué)宣教
- 2024屆四川省成都市溫江區(qū)八年級語文第二學(xué)期期末達(dá)標(biāo)測試試題含解析
- 中小學(xué)《戲曲》校本教材
評論
0/150
提交評論