版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
微控制器
——原理及應用——2第四章80C51系列微控制器的功能單元4.1.1I/O接口概述4.1并行I/O接口I/O接口是CPU和外圍設備之間交換信息的連接部件,是CPU與外設之間進行數(shù)據(jù)傳送的橋梁和紐帶。外圍設備種類繁多,工作速度通常比CPU的速度低很多,且不同外圍設備的工作速度、信息類型、傳送方式差別很大,因此導致CPU與外設之間的信息傳送十分復雜,所以CPU和外設之間必須有接口電路,通過它協(xié)調(diào)單片機與外設之間的數(shù)據(jù)傳送。3
在單片機應用中,輸入設備通過I/O接口電路把程序、數(shù)據(jù)或現(xiàn)場采集到的各種信息輸入單片機,單片機的處理結果和控制信息要通過I/O接口電路傳送到輸出裝置,以便顯示、打印或?qū)崿F(xiàn)各種控制。一般來說I/O接口電路的主要功能如下。地址譯碼由譯碼器對地址進行譯碼,選擇外圍設備,以便CPU對被尋址的外設進行讀/寫操作。1.I/O接口的功能42)數(shù)據(jù)緩沖和鎖存
CPU通過總線與多個外設打交道。但是,各輸入設備的數(shù)據(jù)線不能都直接與CPU的數(shù)據(jù)總線相連,必須經(jīng)輸入緩沖器接到數(shù)據(jù)總線上;否則,會出現(xiàn)幾個輸入設備同時占用數(shù)據(jù)總線,發(fā)生“總線沖突”,以致CPU不能正常工作。緩沖電路便于實現(xiàn)在同一時刻CPU只與一個外設交換信息,即只有被選中的外設與CPU交換信息。單片機傳送信息的速度一般遠遠高于外設的工作速度。當單片機向外設輸出信息時,外設還來不及立即將信息處理完畢。例如,點陣式打印機打印一個字符約需10ms,而單片5機輸出一個字符只需10s左右。因此,在輸出接口電路中應設置數(shù)據(jù)鎖存器,以便及時把CPU輸出的數(shù)據(jù)鎖存起來,然后再由外設進行處理。3)信息轉換外設送往單片機的信息應該轉換成單片機所能接收的數(shù)字量,而單片機輸出的信息應該轉換成外設所要求的信號。因此,I/O接口電路應能實現(xiàn)信息的轉換。例如,串行、并行數(shù)據(jù)的互相轉換,電壓、電流的轉換,電平的轉換,模/數(shù)的轉換,數(shù)/模的轉換等。64)通信聯(lián)絡為了協(xié)調(diào)CPU與外設之間的信息交換,CPU需要通過I/O接口電路以一定的方式與外設進行通信聯(lián)絡,以保證不丟失信息。為了進行通信聯(lián)絡,I/O接口電路傳送的信息除了數(shù)據(jù)之外,還要提供外設狀態(tài)信息及CPU對外設的啟??刂菩盘柕?。72.接口與端口I/O接口的功能主要通過電路實現(xiàn),因此也稱之為接口電路。在接口電路中應該包含數(shù)據(jù)寄存器以保存輸入輸出數(shù)據(jù),狀態(tài)寄存器以保存外設的狀態(tài)信息,命令寄存器以保存來自CPU的有關數(shù)據(jù)傳送的控制命令。由于在數(shù)據(jù)的傳送中,CPU需要對這些寄存器的狀態(tài)口和保存命令的命令口尋址,因此通常把接口電路中這些已編址并能進行讀或?qū)懖僮鞯募拇嫫鞣Q為端口(Port),或簡稱口。因此,一個接口電路就對應著多個端口地址,對它們像存儲單元一樣進行編址。83.80C51系列微控制器端口
標準80C51系列微控制器共有4個8位的并行雙向口,有32根輸入/輸出(I/O)口線。各口的每一位均由鎖存器、輸出驅(qū)動器和輸入緩沖器所組成。因為它們在結構上存在一些差異,所以各口的性質(zhì)和功能也就有了差異。下面分別介紹P0~P3這4個端口。94.1.2P0口P0口是一個多功能的8位端口,可以字節(jié)訪問也可以位訪問,其字節(jié)訪問地址為80H,位訪問地址為80H~87H。P0口的各位結構完全相同,但相互之間又是獨立的。P0口的某一位的位電路結構圖如圖4-1所示,其中i的取值范圍為0~7。101.位電路結構
從圖4-1可以看出,P0.i的電路包含以下內(nèi)容:(1)一個數(shù)據(jù)輸出鎖存器,用于輸出數(shù)據(jù)鎖存。(2)兩個三態(tài)緩沖器BUF1、BUF2,分別用于緩沖鎖存器數(shù)據(jù)和引腳數(shù)據(jù);(3)一個2選1的數(shù)據(jù)選擇器MUX21,其中一個輸入來自鎖存器的端,另一個輸入為“地址/數(shù)據(jù)”信號的反相輸入,選擇控制端為“控制”。(4)數(shù)據(jù)輸出的驅(qū)動電路和控制電路,由兩個場效應管T1、T2和一個與門組成。122.工作過程分析1)P0口用作“地址/數(shù)據(jù)”總線
(1)當MUX21的選擇控制端置1時,選擇“地址/數(shù)據(jù)”輸出到T2,此時P0口輸出地址/數(shù)據(jù)。當MUX21的選擇控制端“控制”置1時,“地址/數(shù)據(jù)”信號控制場效應管T1,而“地址/數(shù)據(jù)”信號的反相信號控制場效應管T2。當輸出的地址/數(shù)據(jù)信號為1時,與門輸出為1,場效應管T1導通,場效應管T2截止,P0.i引腳輸出為1;當輸出的地址/數(shù)據(jù)信號為0時,與門輸出為0,場效應管T1截止,場效應管T2導通,P0.i引腳輸出為0。13通過上述分析可以看出,此時的輸出狀態(tài)隨地址/數(shù)據(jù)線變化;而且,場效應管T1、T2輪流導通,構成了推拉式的輸出電路,其負載能力大大增加。場效應管T1起到內(nèi)部上拉電阻的作用。(2)當MUX21的選擇控制端置0時,從P0口輸入數(shù)據(jù)。真正的雙向口是具有高電平、低電平和高阻抗3種狀態(tài)的端口。顯然,此時P0口在不輸入數(shù)據(jù)時處于高阻狀態(tài),因此,P0口作為地址/數(shù)據(jù)總線使用時是一個真正的雙向端口,簡稱雙向口。142)
P0口用作通用I/O口當系統(tǒng)不進行外部程序存儲器和數(shù)據(jù)存儲器擴展時,即不將P0口用作系統(tǒng)的地址/數(shù)據(jù)總線使用時,P0口可作為通用的I/O口使用。當P0口用作通用I/O口時,MUX21的選擇控制端“控制”置0,選擇端輸出到T2,同時與門輸出為0,場效應管T1截止,則P0口的輸出電路為漏極開路輸出,形成OD門。15(1)P0口輸出數(shù)據(jù)。當P0口輸出數(shù)據(jù)時,來自CPU的“寫”脈沖加到鎖存器的CLK端,內(nèi)部總線上的數(shù)據(jù)寫入鎖存器,并通過T2輸出到P0.i引腳。當鎖存器內(nèi)的數(shù)據(jù)為1時,則輸出端為0,場效應管T2截止,由于輸出為漏極開路,此時必須外接上拉電阻才能輸出1(高電平)。當鎖存器內(nèi)的數(shù)據(jù)為0時,場效應管T2導通,P0口輸出為0(低電平)。(2)從P0口輸入數(shù)據(jù)。當從P0口輸入數(shù)據(jù)時,有兩種讀入方式:“讀引腳”和“讀鎖存器”(對應兩種從P0口讀入數(shù)據(jù)指令)。16當CPU發(fā)出“讀引腳”指令時,鎖存器的輸出必須為1(即端輸出為0),從而使場效應管T2截止,引腳的狀態(tài)經(jīng)三態(tài)緩沖器BUF2進入內(nèi)部總線;反之,若“讀引腳”時鎖存器的輸出為0(即端輸出為1),則場效應管T2導通,從而使得P0.i引腳電平被鉗位在0(低電平),使輸入值1(高電平)無法讀入。此外,在場效應管T2導通的狀態(tài)下,P0.i引腳的高電平被強行拉回為低電平,從而可能產(chǎn)生很大的輸入電流,將場效應管T2燒毀。17當CPU發(fā)出“讀鎖存器”指令時,鎖存器內(nèi)的數(shù)據(jù)通過Q輸出端經(jīng)由三態(tài)緩沖器BUF1進入CPU內(nèi)部總線。之所以會有“讀鎖存器”的指令(例如“讀-改-寫”指令ANLP0,A),是因為“讀鎖存器”可以避免一些錯誤的讀操作。例如,用P0.i引腳去驅(qū)動晶體管的基極。當對端口P0.i寫入值1(高電平)時,引腳P0.i為高電平(已外接上拉電阻),則晶體管導通,該引腳被鉗位在低電平。若此時CPU立刻去讀該引腳的值,則由于晶體管導通,讀入CPU的值為0。顯然這個值是錯誤的,因為鎖存器輸出的值為1。18綜上所述,P0口具有以下功能和特點。
(1)作為地址/數(shù)據(jù)復用總線使用。此時,P0相當于一個真正的雙向口,用作與外部存儲器的連接,配合P2口,輸出16位地址的低8位地址和輸入/輸出8位數(shù)據(jù)。當P0口作地址/數(shù)據(jù)復用總線用之后,就再也不能作I/O口使用了。當然,由于現(xiàn)在生產(chǎn)的多種80C51單片機內(nèi)部集成了足夠的ROM和RAM,所以,P0口很少用作地址/數(shù)據(jù)復用總線,大部分情況,P0口僅用作通用I/O口。3.P0口的特點19
(2)作為I/O口使用。此時,P0口需要外接上拉電阻,端口只有兩個狀態(tài):高電平、低電平,是一個準雙向口。為了能夠從引腳讀入正確的數(shù)據(jù),當P0口由輸出狀態(tài)轉變?yōu)檩斎霠顟B(tài)時,應首先向鎖存器P0.i寫1(執(zhí)行指令MOVP0,#0FFH)。當單片機復位后,鎖存器P0.i被自動置1,可立即作輸出口使用。204.1.3P1口P1口只有一個功能:I/O口。對P1口來說,可以字節(jié)訪問也可以位訪問,其字節(jié)訪問地址為90H,位訪問地址為90H~97H。P1口的各位結構完全相同,但相互之間又是獨立的。P1口的某一位的位電路結構圖如圖4-2所示,其中i的取值范圍為0~7。211.位電路結構
從圖4-2可以看出,P1.i的電路包含以下內(nèi)容:(1)一個數(shù)據(jù)輸出鎖存器,用于輸出數(shù)據(jù)鎖存。(2)兩個三態(tài)緩沖器BUF1、BUF2,分別用于緩沖鎖存器數(shù)據(jù)和引腳數(shù)據(jù)。(3)數(shù)據(jù)輸出的驅(qū)動電路,由一個場效應管T2和一個片內(nèi)上拉電阻組成。222.工作過程分析P1口只能作為通用I/O口使用。
(1)
P1口用作輸出口。CPU輸出0時,D=0,=1,場效應管T2導通,P1.i引腳被下拉為低電平,即輸出O;CPU輸出1時,D=1,=0,場效應管T2截止,P1.i引腳被上拉為高電平,即輸出1。23(2)
P1口用作輸入口
此時分為“讀引腳”和“讀鎖存器”兩種方式?!白x引腳”時,與P0口類似,先向P1.i位寫1,使場效應管T2截止,P1.i引腳上的輸入數(shù)據(jù)經(jīng)輸入緩沖器BUF2送入內(nèi)部總線?!白x鎖存器”時,P1.i鎖存器的輸出端Q的狀態(tài)經(jīng)輸入緩沖器BUF1送入內(nèi)部總線。24
P1口由于有片內(nèi)上拉電阻,在作為輸出口時,不需要在片外接上拉電阻;而且由于沒有高阻抗狀態(tài),所以P1口是一個準雙向口。為了能夠從引腳讀入正確的數(shù)據(jù),當P1口由輸出狀態(tài)轉變?yōu)檩斎霠顟B(tài)時,應首先向鎖存器P1.i寫1(執(zhí)行指令MOVP1,#0FFH)。當單片機復位后,P1.i鎖存器被自動置1,可立即作輸出口使用。3.P1口的特點254.1.4P2口P2口是一個多功能的8位端口,可以字節(jié)訪問也可以位訪問,其字節(jié)訪問地址為A0H,位訪問地址為A0H~A7H。P2口的各位結構完全相同,但相互之間又是獨立的。P2口的某一位的位電路結構圖如圖4-3所示,其中i的取值范圍為0~7。261.位電路結構
從圖4-3可以看出,P2.i的電路包含以下內(nèi)容:(1)一個數(shù)據(jù)輸出鎖存器,用于輸出數(shù)據(jù)鎖存。(2)兩個三態(tài)緩沖器BUF1、BUF2,分別用于緩沖鎖存器數(shù)據(jù)和引腳數(shù)據(jù)。(3)一個2選1的數(shù)據(jù)選擇器MUX21,其中一個輸入來自鎖存器的Q端,另一個輸入為“地址”信號,選擇控制端為“控制”。(4)數(shù)據(jù)輸出的驅(qū)動電路和控制電路,由一個場效應管T2和一個片內(nèi)上拉電阻組成。272.工作過程分析P2口有兩個功能:用作地址總線和通用I/O口。
(1)
P2口用作輸出16位地址總線的高8位地址。在內(nèi)部“控制”信號作用下,MAX21選擇“地址”輸出到反相器的輸入端。當“地址”為0時,場效應管T2柵極信號為1,T2導通,P2.i引腳輸出0;當“地址”為1時,場效應管T2截止,P2.i引腳輸出為1。28(2)
P2口用作通用I/O口。
在內(nèi)部“控制”信號作用下,MAX21選擇Q輸出到反相器的輸入端。當CPU輸出0時,Q=0,T2導通,P2.i引腳輸出0;當CPU輸出1時,Q=0,場效應管T2截止,P2.i引腳輸出1。當P2口用作輸入口時,此時分為“讀引腳”和“讀鎖存器”兩種方式?!白x引腳”時,與P0口類似,先向P2.i位寫1,使場效應管T2截止,P2.i引腳上的輸入數(shù)據(jù)經(jīng)輸入緩沖器BUF2送入內(nèi)部總線?!白x鎖存器”時,P2.i鎖存器的輸出端Q的狀態(tài)經(jīng)輸入緩沖器BUF1送入內(nèi)部總線。29當P2口作為地址輸出線使用時,P2口輸出16位地址線的高8位地址,與P0口輸出的低8位地址一起構成16位地址,可以尋址64KB的地址空間。當P2口作為高8位地址輸出時,輸出鎖存器P2.i的內(nèi)容保持不變。當P2作為通用I/O口使用時,P2口為一個準雙向口,功能與P1口相同。3.P2口的特點304.1.5P3口P3口是一個多功能的8位端口,可以字節(jié)訪問也可以位訪問,其字節(jié)訪問地址為B0H,位訪問地址為B0H~B7H。P3口的各位結構完全相同,但相互之間又是獨立的。P3口的某一位的位電路結構圖如圖4-4所示,其中i的取值范圍為0~7。311.位電路結構
從圖4-4可以看出,P3.i的電路包含以下內(nèi)容:
(1)一個數(shù)據(jù)輸出鎖存器,用于輸出數(shù)據(jù)鎖存。
(2)
3個三態(tài)緩沖器BUF1、BUF2和BUF3,分別用于緩沖鎖存器數(shù)據(jù)、引腳數(shù)據(jù)和第二功能數(shù)據(jù)。
(3)數(shù)據(jù)輸出的驅(qū)動電路和控制電路,由一個“與非門”、一個場效應管T2和一個片內(nèi)上拉電阻組成。322.工作過程分析P3口有兩個功能:通用I/O口(第一功能)和第二輸入/輸出功能。
(1)
P3口用作通用I/O口。當P3口用作第一功能通用輸出時,“第二輸出功能”端應置1,使“與非門”處于開啟狀態(tài),輸出由Q端決定。當CPU輸出0時,Q=0,場效應管T2導通,P3.i引腳輸出為0;當CPU輸出1時,Q=1,場效應管T2截止,P3.i引腳輸出為1。當P3口用作第一功能通用輸入時,為了使場效應管T2截止,不影響輸入電平,P3.i鎖存器和“第二輸出功能”均應置1。33此時,在“讀引腳”信號的作用下,P3.i引腳數(shù)據(jù)通過三態(tài)緩沖器BUF3、BUF2進入內(nèi)部總線。與其他口類似,在“讀鎖存器”信號的作用下,P2.i鎖存器的輸出端Q的狀態(tài)經(jīng)輸入緩沖器BUF1送入內(nèi)部總線。(2)
P3口用作第二輸入/輸出功能。與第一功能類似,當選擇第二輸出功能時,P3.i鎖存器置1,使“與非門”處于開啟狀態(tài),輸出由“第二輸出功能”端決定。當“第二輸出功能”端輸出為0時,場效應管T2導通,P3.i引腳輸出為0;當“第二輸出功能”端輸出為1時,場效應管T2截止,P3.i引腳輸出為1。34與第一功能類似,當選擇第二輸入功能時,P3.i鎖存器和“第二輸出功能”均應置1,保證場效應管T2處于截止狀態(tài)。此時,P3.i引腳輸入的“第二功能”信息由輸入緩沖器BUF3的輸出送至內(nèi)部引線“第二輸入功能”。35
P3口片內(nèi)有上拉電阻,無論是第一功能——通用I/O口,還是第二功能,皆為準雙向口。無論P3口用作通用I/O口的輸入口,還是用作第二功能的輸入/輸出口,都需要將P3.i鎖存器置1。在實際應用中,由于復位后P3.i鎖存器的初值為1,所以,P3口可以直接用作第二功能的輸入/輸出口而不需要做任何設置。由于P3口各個位相互獨立,當某一位不作為第二功能使用時,可以作為通用I/O口使用。3.P3口的特點36P3.0——RXD,串行輸入口。P3.1——TXD,串行輸出口。P3.2——INT0,外部中斷0的請求。P3.3——INT1,外部中斷1的請求。P3.4——T0,定時器/計數(shù)器0外部計數(shù)脈沖輸入。P3.5——T1,定時器/計數(shù)器1外部計數(shù)脈沖輸入。P3.6——WR,外部數(shù)據(jù)存儲器寫選通,輸出,低電平有效。P3.7——RD,外部數(shù)據(jù)存儲器讀選通,輸出,低電平有效。P3口的第二功能定義如下:374.1.6并行I/O接口的編程和使用
例4.1P1口輸入/輸出的簡單應用,按鍵控制LED的點亮和熄滅。電路圖如圖4-5所示。38解:程序如下:
ORG 0000H LJMP MAIN ORG 0030HMAIN: MOV P1,#80H;P1.7寫“1”,作為輸入口線ST1: JB P1.7,$;檢測P1.7是否為0,是,則按鍵按下 LCALL DELAY ;延時,去除按鍵抖動 JB P1.7,$;檢測P1.7是否為0,是,則確認按鍵 ;按下39 JNBP1.7,$;檢測按鍵是否抬起 CPL P1.0 ;LED點亮或熄滅 SJMPST1 END404.2.1定時器/計數(shù)器概述4.2定時器/計數(shù)器
定時器/計數(shù)器(Timer/Counter)是單片機中重要的功能部件之一,其工作方式靈活、編程簡單,對減輕CPU的負擔和簡化外圍工作電路有重要意義。以STC89C51系列單片機為例,單片機的定時器/計數(shù)器有以下特點:(1)
STC89C51單片機包含有2個16位的定時器/計數(shù)器:定時器/計數(shù)器T0和定時器/計數(shù)器T1。(2)
STC89C52單片機包含有3個16位的定時器/計數(shù)器:定時器/計數(shù)器T0、定時器/計數(shù)器T1和定時器/計數(shù)器T2。41(3)
定時器/計數(shù)器的核心是一個加1計數(shù)器,其基本功能是加1功能。在單片機的T0、T1或T2引腳上施加一個1到0的跳變,計數(shù)器加1,即為計數(shù)功能;在單片機內(nèi)部對機器周期或其分頻進行計數(shù),計數(shù)值與周期的乘積,即為定時時間。在80C51系列單片機中,定時功能和計數(shù)功能的設定和控制都是通過軟件來進行的。424.2.2定時器/計數(shù)T0、T1
定時器/計數(shù)器T0、T1的內(nèi)部結構簡圖如圖4-6所示。從圖中可以看出,定時器/計數(shù)器T0、T1由以下幾部分組成:(1)計數(shù)器TH0、TL0和TH1、TL1;(2)特殊功能寄存器TMOD和TCON;(3)時鐘分頻器;(4)輸入引腳T0、T1、INT0和INT1。1.定時器/計數(shù)器T0、T1的內(nèi)部結構44
1)定時器/計數(shù)器T0、T1的方式寄存器(TMOD)顧名思義,80C51系列單片機定時器/計數(shù)器的方式寄存器TMOD就是用來選擇定時器/計數(shù)器的工作方式的。方式寄存器TMOD是一個逐位定義的8位寄存器,是只能字節(jié)尋址的寄存器,字節(jié)地址為89H,其格式如圖4-7所示。8位被分作了兩組,高4位定義定時器/計數(shù)器T1的工作方式,低4位定義定時器/計數(shù)器T0的工作方式。下面對TMOD的各位加以說明。2.定時器/計數(shù)器T0、T1的特殊功能寄存器45(1)
GATE門控位。
GATE=0時,僅由運行控制位TRi(i=0,1)來控制定時器/計數(shù)器計數(shù)。
GATE=1時,由外部中斷引腳INT0、INT1和TRi來控制定時器/計數(shù)器計數(shù)。當INT0引腳為高電平時,TR0置位,啟動定時器/計數(shù)器T0計數(shù);當INT1引腳為高電平時,TR1置位來啟動定時器/計數(shù)器T1計數(shù)。46(2)C/T——計數(shù)功能、定時功能選擇位。
C/T=0時,選擇定時功能,定時器/計數(shù)器對單片機的晶振12分頻后得到的信號進行計數(shù),以此得到定時的時間。
C/T=1時,選擇計數(shù)功能,定時器/計數(shù)器對外部輸入引腳T0(P3.4)或T1(P3.5)的輸入脈沖(負跳變)計數(shù)。(3)
M1、M0——工作方式選擇位。由于有M1和M0兩位,所以有四種工作方式見表4-1。47
1)定時器/計數(shù)器T0、T1的控制寄存器(TCON)
80C51系列單片機定時器/計數(shù)器的控制寄存器TCON是用來控制、指示定時器/計數(shù)器的工作狀態(tài)的。控制寄存器TCON是一個逐位定義的8位寄存器,既可字節(jié)尋址,也可位尋址。字節(jié)地址為88H,位尋址的地址為88H~8FH,其格式如圖4-8所示。48下面對TCON的各位加以說明。
(1)TF1、TF0(TCON.7、TCON.5)——定時器/計數(shù)器T1、T0的溢出標志。當定時器/計數(shù)器溢出時,該位由內(nèi)部硬件置位。若中斷開放,則響應中斷,進入中斷服務程序后,由硬件自動清0;若中斷禁止,則此位可用于查詢方式,作為狀態(tài)位供CPU查詢,當查詢有效時,進入處理程序后,及時用軟件將此位清0。(2)
TR1、TR0(TCON.6、TCON.4)——定時器/計數(shù)器T1、T0的運行控制位。用軟件控制,置1時,啟動T1;清0時,停止T1。49TCON的低4位與外部中斷有關,將在后續(xù)章節(jié)中詳細討論。復位后,TCON的所有位均清0。50
3)定時器/計數(shù)器T0、T1的數(shù)據(jù)寄存器(TH1、TL1和TH0、TL0)
定時器/計數(shù)器T0、T1各有1個16位的數(shù)據(jù)寄存器,它們都是由高8位寄存器和低8位寄存器所組成的。這些寄存器不經(jīng)過緩沖,直接顯示當前的計數(shù)值。這4個寄存器都是讀/寫寄存器,任何時候都可對它們進行讀/寫操作。復位后,所有這4個寄存器全部清0。它們都只能字節(jié)尋址,相應的字節(jié)地址見表4-2。51定時器/計數(shù)器T0、T1的工作模式是通過TMOD中的C/T位來選擇的。1)定時器(C/T=0)此時,計數(shù)輸入信號是內(nèi)部時鐘脈沖,每個機器周期使寄存器的值加1。每個機器周期包含12個振蕩周期,故計數(shù)速率為振蕩周期的1/12。當采用12MHz的晶體時,計數(shù)速率為1MHz。定時器的定時時間與系統(tǒng)的振蕩頻率有關,與計數(shù)器的長度和初值有關。3.定時器/計數(shù)器T0、T1的定時、計數(shù)模式選擇52
2)計數(shù)器(C/T=1)這時,通過引腳T0(P3.4)和T1(P3.5)對外部信號進行計數(shù)。在每個機器周期,CPU都采樣引腳的輸入電平。若前一機器周期采樣值為1,下一機器周期采樣值為0,則計數(shù)器加1,此后的機器周期,新的計數(shù)值裝入計數(shù)器,周而復始,直至計數(shù)器溢出。由此可知,在計數(shù)模式下,檢測到一個1到0的跳變(下降沿)需要2個機器周期,故最高計數(shù)頻率為振蕩頻率的1/24。53通過設置M1和M0的值,定時器/計數(shù)器T0、T1可選擇4種不同的工作方式。下面分別介紹。1)方式0當TMOD中的M1M0=00時,定時器/計數(shù)器被設置為工作方式0。這時定時器/計數(shù)器的邏輯結構框圖如圖4-9所示。這種方式下,計數(shù)寄存器由13位組成,即TLi的高3位未用。計數(shù)時,TLi的低5位溢出后向THi進位,THi溢出后使TFi置位,并向CPU申請中斷。如果中斷允許,CPU響應中斷并轉入中斷服務程序,由內(nèi)部硬件清TFi。TFi也可以由程序查詢和清0。4.定時器/計數(shù)器T0、T1的4種工作方式是否計數(shù),由GATE、INTi引腳、TRi三部分決定,一般先設定GATE位。
(1)當GATE=0時,A點為高電平,定時器/計數(shù)器的啟動/停止由TRi決定。TRi=1,定時器/計數(shù)器啟動;TRi=0,定時器/計數(shù)器停止。
(2)當GATE=1時,A點的電位由INTi決定,因而B點的電位由TRi和INTi決定,即定時器/計數(shù)器的啟動/停止由TRi和INTi兩個條件決定。2)方式1當TMOD中的M1M0=01時,定時器/計數(shù)器被設置為工作方式1。這時定時器/計數(shù)器的邏輯結構框圖如圖4-10所示。這種方式下,計數(shù)寄存器由16位組成。圖4-10
定時器/計數(shù)器方式1邏輯結構框圖計數(shù)時,TLi溢出后向THi進位,THi溢出后使TFi置位,并向CPU申請中斷。如果中斷允許,CPU響應中斷并轉入中斷服務程序,由內(nèi)部硬件清TFi。TFi也可以由程序查詢和清0。其他與方式0完全相同。
3)方式2當TMOD中的M1M0=10時,定時器/計數(shù)器被設置為工作方式2。這時定時器/計數(shù)器的邏輯結構框圖如圖4-11所示。這種方式將16位計數(shù)寄存器分為2個8位寄存器,組成一個自動重裝載的8位計數(shù)寄存器。在方式2中,TLi作為8位計數(shù)寄存器,THi作為8位計數(shù)常數(shù)寄存器。當TLi計數(shù)溢出時,一方面將TFi置位,并向CPU申請中斷;另一方面,將THi的內(nèi)容自動加載到TLi中,繼續(xù)計數(shù)。重裝載不影響THi的內(nèi)容,因而可以多次連續(xù)加載。
方式2對定時控制特別有用,它可實現(xiàn)每隔預定時間發(fā)出控制信號,而且特別適合于串行口波特率發(fā)生器的使用。
4)方式3當TMOD中的M1M0=11時,定時器/計數(shù)器被設置為工作方式3。這種方式將定時器/計數(shù)器T0分為一個8位定時器/計數(shù)器和一個8位定時器,TL0用于8位定時器/計數(shù)器,TH0用于8位定時器。這時定時器/計數(shù)器T0的邏輯結構框圖如圖4-12所示。定時器/計數(shù)器方式3下定時器/計數(shù)器T0的工作方式與方式0、1時相同,只是此時的計數(shù)器為8位計數(shù)寄存器TL0,它占用了定時器/計數(shù)器T0的GATE、、TR0、T0引腳以及中斷源等。由于定時器/計數(shù)器T0的資源已被計數(shù)寄存器TL0所占用,所以TH0只能作為定時器用,而且TH0占用了定時器/計數(shù)器T1的啟動/停止控制位TR1、計數(shù)溢出標志位TF1及中斷源。在定時器/計數(shù)器方式3下,定時器/計數(shù)器T1的結構如圖4-13所示。此時定時器/計數(shù)器T1可選方式為0、1或2。因為此時中斷源已被占用,所以僅能作為波特率發(fā)生器或用在其他不用中斷的地方。事實上,只在定時器/計數(shù)器T1用作波特率發(fā)生器時,定時器/計數(shù)器T0才選作方式3。634.2.3定時器/計數(shù)T280C52中有一個功能強大的定時器/計數(shù)器T2,它是一個16位的、具有自動重裝載和捕獲能力的定時器/計數(shù)器。在定時器/計數(shù)器T2的內(nèi)部,除了兩個8位計數(shù)器TL2、TH2和控制寄存器T2CON、方式寄存器T2MOD之外,還設置有捕獲寄存器RCAP2L(低字節(jié))和RCAP2H(高字節(jié))。定時器/計數(shù)器T2的計數(shù)脈沖源可以有兩個:一個是內(nèi)部機器周期,另一個是由T2(P1.0)端輸入的外部計數(shù)脈沖。輸入引腳T2(P1.0)是外部計數(shù)脈沖輸入端。輸入引腳T2EX(P1.1)是外部控制信號輸入端。64
1)定時器/計數(shù)器T2的控制寄存器(T2CON)控制寄存器T2CON是一個逐位定義的8位寄存器,既可字節(jié)尋址,也可位尋址。字節(jié)地址為0C8H,位尋址的地址為0C8H~0CFH,其格式如圖4-14所示。1.定時器/計數(shù)器T2的特殊功能寄存器下面對T2CON的各位加以說明。
(1)
TF2——定時器/計數(shù)器T2溢出標志。定時器/計數(shù)器T2溢出時置位,并申請中斷。只能軟件清除此標志位。當RCLK=l或TCLK=l時,即T2工作在波特率發(fā)生器方式下時,定時器/計數(shù)器T2的溢出不影響TF2,即TF2不置1。(2)
EXF2——定時器/計數(shù)器T2外部標志。當EXEN2=1,且T2EX引腳上出現(xiàn)下降沿而造成捕獲或重裝載時,EXF2置位,并申請中斷。此時若已允許定時器/計數(shù)器T2中斷,則CPU將響應中斷,轉向中斷服務程序。只能軟件清除此標志位。
(3)
RCLK——接收時鐘標志位。此標志位由軟件置位或清0,用以選擇定時器/計數(shù)器T2或T1作串行口接收波特率發(fā)生器。RCLK=1時,用定時器/計數(shù)器T2溢出脈沖作為串行口的接收時鐘;RCLK=0時,用定時器/計數(shù)器T1的溢出脈沖作接收時鐘。(4)
TCLK——發(fā)送時鐘標志位。此標志位由軟件置位或清0,用以選擇定時器/計數(shù)器T2或T1作串行口發(fā)送波特率發(fā)生器。TCLK=l時,用定時器/計數(shù)器T2溢出脈沖作為串行口的發(fā)送時鐘;TCLK=0時,用定時器/計數(shù)器Tl的溢出脈沖作為串行口的發(fā)送時鐘。
(5)
EXEN2——定時器/計數(shù)器T2外部允許標志。此標志位由軟件置位或清0。當EXEN2=1時,允許用外部信號來觸發(fā)捕獲或重裝載操作;若定時器/計數(shù)器T2未用作串行口的波特率發(fā)生器,當在T2EX端出現(xiàn)下降沿信號時,將導致定時器/計數(shù)器T2捕獲或重裝載,并置EXF2標志為1,請求中斷。當EXEN2=0時,禁止用外部信號來觸發(fā)捕獲或重裝載操作,即T2EX端的外部信號不起作用。(6)
TR2——定時器/計數(shù)器T2運行控制位。此標志位由軟件置位或清0,以決定定時器/計數(shù)器T2是否運行。TR2=l,啟動定時器/計數(shù)器T2;TR2=0,則停止定時器/計數(shù)器T2。
(7)
——C/T2定時器/計數(shù)器T2的定時器方式或計數(shù)器方式選擇位。此標志位由軟件置位或清0。C/T2=0,選擇定時器工作方式;C/T2=1,選擇計數(shù)器工作方式,由下降沿觸發(fā)計數(shù)。
(8)
——CP/RL2捕獲/重裝載標志。此標志位由軟件置位或清0。CP/RL2=1,選擇捕獲功能,這時當EXEN2=1且T2EX端出現(xiàn)信號下降沿時,發(fā)生捕獲操作。CP/RL2=0,選擇重裝載功能,這時若定時器/計數(shù)器T2溢出或EXEN2=1,且T2EX端出現(xiàn)下降沿信號,都會導致自動重裝載操作。當RCLK+TCLK=l時,此控制位不起作用,定時器/計數(shù)器T2被強制工作于重裝載方式。重裝載發(fā)生于定時器/計數(shù)器T2溢出時,常用作波特率發(fā)生器。
2)定時器/計數(shù)器T2的方式寄存器(T2MOD)當方式寄存器T2MOD的字節(jié)地址為0C9H,不可位尋址,其格式如圖4-15所示。雖然方式寄存器T2MOD有8位,但只定義了2位,其余位保留,且復位值均為0。下面對T2MOD定義的2位加以說明。
(1)
T2OE:定時/計數(shù)器T2輸出允許控制位。當T2OE=1時,啟動定時器/計數(shù)器T2的可編程時鐘輸出功能,允許時鐘輸出至引腳T2(P1.0);當T2OE=0時,禁止引腳T2(P1.0)輸出。(2)
DCEN:定時/計數(shù)器T2加減計數(shù)控制位。當DCEN=1時,允許T2作為加/減計數(shù)器使用。具體的計數(shù)方向由T2EX引腳來控制,當T2EX=1時,T2進行加計數(shù);當T2EX=O時,T2進行減計數(shù)。DCEN=0時,T2自動加計數(shù)。
3)定時器/計數(shù)器T2的數(shù)據(jù)寄存器(TH2、TL2)定時器/計數(shù)器T2的數(shù)據(jù)寄存器是一個16位寄存器,它由高8位寄存器(TH2)和低8位寄存器(TL2)所組成,相應的字節(jié)地址為OCDH和OCCH,只能字節(jié)尋址。這兩個寄存器都是讀/寫寄存器。復位后,這2個寄存器全部清0。
4)定時器/計數(shù)器T2的捕獲寄存器(RCAP2H、RCAP2L)定時器/計數(shù)器T2中的捕獲寄存器是一個16位寄存器,由高8位寄存器(RCAP2H)和低8位寄存器(RCAP2L)所組成,相應的字節(jié)地址為OCBH和OCAH,只能字節(jié)尋址。RCAP2H、RCAP2L用于捕獲計數(shù)器TL2、TH2的計數(shù)狀態(tài),或用來預置計數(shù)初值。TH2、TL2和RCAP2H、RCAP2L之間接有雙向緩沖器(三態(tài)門),用于捕獲或者重裝載。復位后,這兩個寄存器全部清0。74定時器/計數(shù)器T2的工作模式是通過T2CON中的位C/T2來選擇的。
1)定時器(C/T2=0)此時,T2與T0、T1相似,計數(shù)輸入信號是內(nèi)部時鐘脈沖,計數(shù)速率為振蕩周期的1/12,即每個機器周期使(TH2、TL2)寄存器的值加1。
2)計數(shù)器(C/T2=1)這時,通過引腳T2(P1.0)對外部信號進行計數(shù),T2的工作情況和時序關系與T0、T1完全一樣,對外部計數(shù)脈沖的要2.定時器/計數(shù)器T2的定時、計數(shù)模式選擇75求也相同,即外部脈沖的最高頻率為振蕩頻率的1/24。當有外部脈沖到來時,(TH2、TL2)寄存器的值加1。76通過設置定時器/計數(shù)器T2的控制寄存器T2CON中的CP/RL2和RCLK+TCLK的值,定時器/計數(shù)器T2可選擇3種不同的工作方式(表4-3):捕獲方式、自動重裝載方式和波特率發(fā)生器方式。3.定時器/計數(shù)器T2的3種工作方式771)自動重裝載方式自動重裝載方式是指在一定條件下,自動地將RCAP2H和RCAP2L的數(shù)據(jù)裝入計數(shù)器TH2和TL2中。一般說來,RCAP2H和RCAP2L在這里起預置計數(shù)初值的功能。對于89C52,其工作的邏輯結構框圖如圖4-16所示。當CP/RL2=0時,選擇自動重裝載方式。重裝載操作在下述兩種情況下發(fā)生:(1)當定時器/計數(shù)器T2的寄存器(TH2、TL2)溢出時,打開重裝載三態(tài)緩沖器,把(RCAP2H、RCAP2L)的內(nèi)容自動裝載到(TH2、TL2)中(重裝載操作)。同時,溢出標志TF2置1,申請中斷。79(2)當EXEN2=1且端口T2EX(P1.1)出現(xiàn)下降沿信號時,將發(fā)生重裝載操作。同時,標志位EXF2置1,申請中斷。若定時器/計數(shù)器T2的中斷是被允許的,則無論發(fā)生TF2=1還是EXF2=1,CPU都會響應中斷,此中斷向量的地址為2BH。響應中斷后,應采用軟件方式撤除中斷申請,以正確地響應新的中斷。TF2和EXF2都是直接可尋址位,可采用指令“CLRTF2”和“CLREXF2”撤除中斷申請。802)捕獲方式捕獲方式是指在一定條件下,自動將計數(shù)器TH2和TL2的數(shù)據(jù)讀入RCAP2H和RCAP2L,即TH2和TL2內(nèi)容的捕獲是通過捕獲寄存器RCAP2H和RCAP2L來實現(xiàn)的。對于89C52,其工作的邏輯結構框圖如圖4-17所示。81
當CP/RL2=1時,選擇捕獲方式。中斷和捕獲操作在下述兩種情況下發(fā)生:(1)當定時器/計數(shù)器T2的寄存器(TH2、TL2)溢出時,溢出標志TF2置1,申請中斷。(2)當EXEN2=1且端口T2EX(P1.1)出現(xiàn)下降沿信號時,打開捕獲三態(tài)緩沖器,把(TH2、TL2)的內(nèi)容自動讀入到(RCAP2H、RCAP2L)中(捕獲操作)。同時標志位EXF2置1,申請中斷。
若定時器/計數(shù)器T2的中斷是被允許的,則無論發(fā)生TF2=1還是EXF2=1,CPU都會響應中斷,此中斷向量的地址為2BH。響應中斷后,應采用軟件方式撤除中斷申請,以正確地82響應新的中斷。TF2和EXF2都是直接可尋址位,可采用指令“CLRTF2”和“CLREXF2”撤除中斷申請。833)波特率發(fā)生器方式當T2CON中的RCLK+TCLK=1時,定時器/計數(shù)器T2將工作于波特率發(fā)生器方式,即其溢出脈沖用作串行口的時鐘。定時器/計數(shù)器T2的波特率發(fā)生器方式下的邏輯結構框圖如圖4-18所示。在T2CON中,RCLK選擇串行通信接收波特率發(fā)生器,TCLK選擇串行通信發(fā)送波特率發(fā)生器。因此,發(fā)送和接收的波特率可以不同。此時,定時器/計數(shù)器T2的輸入時鐘脈沖可由內(nèi)部時鐘電路決定,也可由外部時鐘電路決定。(1)若C/T2=0,選用內(nèi)部時鐘,計數(shù)脈沖的頻率為振蕩器頻率的1/2。圖4-18
波特率發(fā)生器方式邏輯結構框圖85(2)若C/T2=1,選用外部時鐘,該時鐘由T2(P1.0)端輸入,每當外部信號產(chǎn)生下降沿時,計數(shù)器值加1。外部脈沖頻率不超過振蕩器頻率的1/24。由于脈沖溢出時,RCAP2H、RCAP2L的內(nèi)容會自動裝載到TH2、TL2中,故波特率的值還決定于RCAP2H、RCAP2L的裝載初值。
RCLK+TCLK還用于選擇定時器/計數(shù)器T1還是T2作串行通信的波特率發(fā)生器。由圖4-18可看出,這兩位的值用來控制兩個電子開關的位置。值為0時,選用定時器/計數(shù)器T1作波特率發(fā)生器;值為1時,選用定時器/計數(shù)器T2作波特率發(fā)生器。86
當定時器/計數(shù)器T2用作波特率發(fā)生器時,TH2的溢出不會使TF2置位,即不會產(chǎn)生中斷請求。因此,可以不禁止中斷。當定時器/計數(shù)器T2用作波特率發(fā)生器時,若EXEN2置1,則端口T2EX的信號產(chǎn)生下降沿時,EXF2將置1,但不會發(fā)生重裝載或捕獲操作。這時,端口T2EX可以作為一個額外的外部中斷源。在波特率發(fā)生器工作方式下,在T2計數(shù)過程中(即在TR2=1之后),不能再讀/寫TH2、TL2的內(nèi)容。如果讀,則讀出的結果不會精確(因為每個狀態(tài)加1);如果寫,則會影響T2的溢出而使波特率不穩(wěn)定。在T2計數(shù)過程中,可以讀出但不能87改寫RCAP2H、RCAP2L的內(nèi)容。若需要訪問RCAP2H、RCAP2L,則應事先關閉定時器。884.2.4定時器/計數(shù)器的編程和使用
在定時器/計數(shù)器的4種工作方式中,方式0與方式1基本相同,只是計數(shù)器位數(shù)不同:方式0為13位計數(shù)器,方式1為16位計數(shù)器。方式0的存在是為了兼容MCS-48,而且方式0的計數(shù)初值計算麻煩,所以在實際使用中,一般不使用方式0,而使用方式1。89
例4.2設晶振頻率fosc=6MHz,使用定時器/計數(shù)器T1以方式1產(chǎn)生周期為2ms的方波脈沖,并由P1.0輸出,如圖4-19所示。試以中斷方式實現(xiàn)。90
解:方波的周期用定時器T1來確定,即在T1中設置一個初值,在初值的基礎上進行計數(shù),每隔1ms計數(shù)器T1溢出一次,即產(chǎn)生一次中斷。CPU響應中斷后,在中斷服務程序中對P1.0取反。
(1)
TMOD確定。TMOD取值如圖4-20所示。圖4-20TMOD取值91(2)計算計數(shù)器的計數(shù)初值。要產(chǎn)生2ms的方波脈沖,只需在P1.0端以1ms為間隔,交替輸出高低電平即可實現(xiàn)。為此,定時間應為1ms。晶振頻率fosc=6MHz,則一個機器周期為2s,設待求計數(shù)初值為X,則其中:t為定時時間,L為計數(shù)器位數(shù),X為計數(shù)初值,tc為計數(shù)周期。
1000×10-6=(216-X)×2×10-6即500=216-X
X=216-500=10000H-1F4H92
X=216-500=10000H-1F4H
=0FE0CH=1111111000001100B所以,初值為TH1=0FEH,TL1=0CH。
(3)采用中斷方式。編程時打開全局和局部中斷。設置EA=1,ET1=1,以允許T1中斷。
(4)定時器的啟動。由定時器控制寄存器TCON中的TR1位控制定時器的啟動和停止。
TR1=1,啟動;TR1=0,停止。(5)程序設計。中斷服務程序除了產(chǎn)生方波以外,還需將計數(shù)初值重新裝入計數(shù)器,以便產(chǎn)生方波序列。93程序如下:
ORG 0000H LJMP MAIN ;主程序入口
ORG 001BH LJMP INTT1 ;T1中斷入口
ORG 0030HMAIN: MOV SP,#60H ;修改堆棧指針
MOV TMOD,#10H ;T1為方式1 MOV TH1,#0FEH ;設置計數(shù)初值
MOV TL1,#0CH94 SETB EA ;允許中斷
SETB ET1 ;允許T1中斷 SETB TR1 ;啟動T1 SJMP $ ;等待中斷INTT1: MOV TH1,#0FEH ;重新設置初值
MOV TL1,#0CH CPL P1.0 ;定時1ms時間到,輸出取反 RETI END95
例4.3設晶振頻率fosc=6MHz,使用定時器/計數(shù)器T0以方式2產(chǎn)生周期為400s的方波脈沖,并由P1.0輸出,如圖4-21所示。試以中斷方式實現(xiàn)。圖4-21
在P1.0引腳上輸出的波形96
解:方波的周期用定時器T0來確定,即在T0中設置一個初值,在初值的的基礎上進行計數(shù),每隔200μs計數(shù)器T0溢出一次,即產(chǎn)生一次中斷。CPU響應中斷后,在中斷服務程序中對P1.0取反。
(1)
TMOD確定。TMOD取值如圖4-22所示。圖4-22TMOD取值97(2)計算計數(shù)器的計數(shù)初值。要產(chǎn)生400μs的方波脈沖,只需在P1.0端以200μs為間隔,交替輸出高低電平即可實現(xiàn)。為此,定時間應為200μs。晶振頻率fosc=6MHz,則一個機器周期為2μs,設待求計數(shù)初值為X,則
200×10-6=(28-X)×2×10-6即100=28-XX=28-100=100H-64H=9CH=10011100B所以,初值為TH0=9CH,TL0=9CH。
(3)采用中斷方式。編程時打開全局和局部中斷。設置EA=1,ET0=1,以允許T0中斷。98
(4)定時器的啟動。由定時器控制寄存器TCON中的TR0位控制定時器的啟動和停止。
TR0=1,啟動;TR0=0,停止。(5)程序設計。中斷服務程序只需產(chǎn)生方波方波序列即可。程序如下:
ORG 0000H LJMP MAIN ;主程序入口
ORG 000BH LJMP INTT0 ;T1中斷入口
ORG 0030H99MAIN: MOV SP,#60H ;修改堆棧指針
MOV TMOD,#02H ;T0為方式2 MOV TH0,#9CH ;設置計數(shù)初值
MOV TL0,#9CH SETB EA ;允許中斷
SETB ET0 ;允許T0中斷
SETB TR0 ;啟動T0 SJMP $ ;等待中斷INTT0:100 CPL P1.0 ;定時200s時間到,輸出取反
RETI END101
例4.4門控制位GATE的應用——測量脈沖寬度。下面以T1為例,介紹門控制位GATE的應用。門控制位GATE可使定時器/計數(shù)器T1的啟動計數(shù)受INT1的控制,當GATE=1,TR1=1時,只有INT1引腳輸入高電平時,T1才被允許計數(shù),利用GATE位的這一功能(對于T0的GATE位也是一樣,可使T0的啟動計數(shù)受INT0的控制),可測量INT1引腳(P3.3)上正脈沖的寬度(機器周期數(shù)),其方法如圖4-23所示。圖4-23利用GATE位測量正脈沖的寬度102參考程序如下:
ORG 0000H LJMP MAIN ;復位入口轉主程序
ORG 0030HMAIN: MOV SP,#60H MOV TMOD,#90H ;向TMOD寫控制字,T1為方式
;1定時,GATE=1 MOV TL1,#00H MOV TH1,#00H JB P3.3,$ ;等待降低103
SETB TR1 ;如果為低,啟動T1,計數(shù)器
;開始計數(shù)
JNB P3.3,$ ;等待升高
JB P3.3,$ ;為高,等待降低
CLR TR1 ;停止T1計數(shù)
MOV A,TL1 ;T1計數(shù)值送A …執(zhí)行以上程序,使引腳上出現(xiàn)的正脈沖寬度以機器周期數(shù)的形式顯示在顯示器上。1044.3中斷系統(tǒng)
中斷系統(tǒng)在單片機系統(tǒng)中起著十分重要的作用。一個功能很強的中斷系統(tǒng),能大大提高單片機處理事件的能力,提高效率,增強實時性。80C51系列微控制器(單片機)的中斷功能較強,共設有6個中斷源,6個中斷矢量:T0、T1、T2、、和一個串行通信中斷矢量。有兩級中斷優(yōu)先級,可實現(xiàn)兩級中斷嵌套。用戶可以很方便地通過軟件實現(xiàn)對中斷的控制。1054.3.1中斷系統(tǒng)概述
程序執(zhí)行過程中,允許外部或內(nèi)部事件通過硬件中斷程序的執(zhí)行,使其轉向處理外部或內(nèi)部事件的中斷服務程序中;完成中斷服務程序后,CPU繼續(xù)原來被打斷的程序,這樣的過程稱為中斷。中斷響應和處理過程如圖4-24所示。1.中斷1062.中斷源
能產(chǎn)生中斷的外部和內(nèi)部事件稱為中斷源,如鍵盤中斷、A/D轉換器中斷(當A/D轉換器結束模擬量到數(shù)字量的轉換而產(chǎn)生的中斷)、定時中斷(定時器/計數(shù)器產(chǎn)生的中斷)、程序性中斷(為調(diào)試程序而設置斷點、單步工作等)。對于每個中斷源,不僅要求能發(fā)出中斷請求信號,還要求這個信號能保持一定的時間,直至CPU響應這個中斷請求后才能且必須撤銷這個中斷請求信號。這樣既不會因CPU未及時響應而丟失中斷申請信號,也不會出現(xiàn)多次重復中斷的情況。1073.中斷優(yōu)先級
幾個中斷源同時申請中斷時,或者CPU正在處理某外部事件時,又有另一外部事件申請中斷,CPU必須區(qū)分哪個中斷源更重要,從而確定優(yōu)先處理哪個中斷源,這就是中斷優(yōu)先級問題。就后者來說,優(yōu)先級高的事件可以中斷CPU正在處理的低級的中斷服務程序,待完成了高級中斷服務程序之后,再繼續(xù)被中斷的低級中斷服務程序。在80C51系列微控制器中,只有兩級中斷優(yōu)先級。圖4-25是80C51系列微控制器的中斷系統(tǒng)結構示意圖。圖4-25
80C51系列微控制器的中斷系統(tǒng)結構示意圖1094.3.2中斷的控制和操作80C51系列微控制器中有5個中斷源。80C52系列微控制器中增加了一個定時器/計數(shù)器T2中斷源,即有6個中斷源。80C52的6個中斷源如下。
(1)(P3.2)——外部中斷0。當IT0(TCON.0)=0時,低電平有效;當ITO(TCON.0)=1時,下降沿有效。
(2)(P3.3)——外部中斷1。當IT0(TCON.2)=0時,低電平有效;當IT1(TCON.2)=1時,下降沿有效。
(3)
TF0(P3.4)——定時器/計數(shù)器T0溢出中斷。1.80C52系列微控制器中斷源110(4)
TF1(P3.5)——定時器/計數(shù)器T1溢出中斷。
(5)
RI,TI——串行中斷。
(6)
TF2、EXF2——定時器/計數(shù)器T2溢出中斷。微控制器各中斷源提出的中斷申請,如果得到微控制器的中斷響應,則會自動轉入各自固定的中斷入口地址(中斷矢量)見表4-4。1112.中斷標志INT0、INT1、T0及T1的中斷標志存放在定時器/計數(shù)器控制寄存器TCON中,串行口的中斷標志存放在串行口控制寄存器SCON中,T2的中斷標志存放在定時器/計數(shù)器T2的控制寄存器T2CON中。
TCON寄存器字節(jié)地址為88H,其格式如圖4-26所示。圖4-26定時器/計數(shù)器控制寄存器TCON格式112SCON寄存器字節(jié)地址為98H,其格式如圖4-27所示。圖4-27串行口控制寄存器SCON格式T2CON寄存器字節(jié)地址為0C8H,其格式如圖4-28所示。圖4-28定時器/計數(shù)器控制寄存器T2CON格式113
下面對中斷標志及控制位的各位加以說明。(1)
TF2(T2CON.7)——定時器/計數(shù)器T2溢出標志。定時器/計數(shù)器T2溢出時置位,并申請中斷。響應中斷后需用軟件清0。(2)
EXF2(T2CON.6)——定時器/計數(shù)器T2外部標志。當EXEN2=1,且T2EX引腳上出現(xiàn)下降沿而造成捕獲或重裝載時,EXF2置位,并申請中斷。響應中斷后需用軟件清0。(3)
TF1(TCON.7)——定時器/計數(shù)器T1溢出標志。硬件置位,響應中斷后硬件清0。不用中斷時,需用軟件清0。(4)
TF0(TCON.5)——定時器/計數(shù)器T0溢出標志。硬件置位,響應中斷后硬件清0。不用中斷時,需用軟件清0。114
下面對中斷標志及控制位的各位加以說明。(1)
TF2(T2CON.7)——定時器/計數(shù)器T2溢出標志。定時器/計數(shù)器T2溢出時置位,并申請中斷。響應中斷后需用軟件清0。(2)
EXF2(T2CON.6)——定時器/計數(shù)器T2外部標志。當EXEN2=1,且T2EX引腳上出現(xiàn)下降沿而造成捕獲或重裝載時,EXF2置位,并申請中斷。響應中斷后需用軟件清0。(3)
TF1(TCON.7)——定時器/計數(shù)器T1溢出標志。硬件置位,響應中斷后硬件清0。不用中斷時,需用軟件清0。(4)
TF0(TCON.5)——定時器/計數(shù)器T0溢出標志。硬件置位,響應中斷后硬件清0。不用中斷時,需用軟件清0。115(5)
IE1(TCON.3)——外部中斷請求1的中斷標志。IE1=1時,INT1向CPU申請中斷。
(6)
IE0(TCON.1)——外部中斷請求0的中斷標志。IE0=1時,INT0向CPU申請中斷。
(7)
TI(SCON.1)——串行口發(fā)送中斷標志。發(fā)送完一幀,硬件置位。響應中斷后需用軟件清0。
(8)
RI(SCON.0)——串行口接收中斷標志。接收完一幀,硬件置位。響應中斷后需用軟件清0。
(9)
IT1(TCON.2)——外部中斷請求觸發(fā)方式控制位。
IT1=0,電平觸發(fā)方式,引腳上的外部中斷請求輸入信號為低電平有效,并使IT1置位。進入中斷服務程序后,由硬116件自動將IE1清0。IT1=1,下降沿觸發(fā)方式,引腳上的外部中斷請求輸入信號電平從高到低的跳變有效,并使IT1置位。進入中斷服務程序后,由硬件自動將IE1清0。
(10)
IT0(TCON.0)——外部中斷請求觸發(fā)方式控制位。
IT0=0,電平觸發(fā)方式,引腳上的外部中斷請求輸入信號為低電平有效,并使IT0置位。進入中斷服務程序后,由硬件自動將IE0清0。
IT0=1,下降沿觸發(fā)方式,引腳上的外部中斷請求輸入信號電平從高到低的跳變有效,并使IT0置位。進入中斷服務程序后,由硬件自動將IE0清0。1173.中斷允許控制
中斷允許和禁止由中斷允許寄存器控制。中斷允許寄存器IE是一個逐位定義的8位寄存器,既可字節(jié)尋址,也可位尋址。字節(jié)地址為0A8H,位尋址的地址為0A8H~0AFH。其格式如圖4-29所示。圖4-29中斷允許寄存器IE格式
中斷中斷允許寄存器IE中的各位為0時,禁止相應中斷;為1時,允許相應中斷。系統(tǒng)復位后,中斷允許寄存器IE中各位均為0,即此時禁止所有中斷。下面對IE的各位加以說明。118EX0(IE.0)——外部中斷0中斷允許位。ET0(IE.1)——定時器/計數(shù)器T0中斷允許位。EX1(IE.2)——外部中斷1中斷允許位。ET1(IE.3)——定時器/計數(shù)器T1中斷允許位。ES(IE.4)——串行口中斷允許位。ET2(IE.5)——定時器/計數(shù)器T2中斷允許位。EA(IE.7)——CPU中斷允許位(中斷總允許位)。EA=1時,開放所有中斷;EA=0時,屏蔽所有中斷。1194.中斷優(yōu)先級
在80C51系列單片機中有高、低兩個中斷優(yōu)先級,通過中斷優(yōu)先級寄存器IP來設定。中斷優(yōu)先級寄存器IP是一個逐位定義的8位寄存器,既可字節(jié)尋址,也可位尋址。字節(jié)地址為0B8H,位尋址的地址為0B8H~0BFH。其格式如圖4-30所示。
中斷中斷優(yōu)先級寄存器IP中的各位為0時,相應中斷為低優(yōu)先級;為1時,相應中斷為高優(yōu)先級。系統(tǒng)復位后,IP寄存器中各位均為0,即此時全部中斷設定為低優(yōu)先級。圖4-30中斷優(yōu)先級寄存器IP格式120PX0(IP.0)——外部中斷0中斷優(yōu)先級控制位。PT0(IP.1)——定時器/計數(shù)器T0中斷優(yōu)先級控制位。PX1(IP.2)——外部中斷1中斷優(yōu)先級控制位。PT1(IE.3)——定時器/計數(shù)器T1中斷優(yōu)先級控制位。PS(IP.4)——串行口中斷優(yōu)先級控制位。PT2(IP.5)——定時器/計數(shù)器T2中斷優(yōu)先級控制位。下面對IP的各位加以說明。
在中斷執(zhí)行過程中,所有允許的高優(yōu)先級中斷可以中斷低優(yōu)先級中斷的執(zhí)行過程。同級的中斷不能相互中斷。幾個同級的中斷源同時向CPU121申請中斷時,CPU按硬件次序排定優(yōu)先權,即依次為INT0、T0、INT1、T1、串行口和T2。1224.3.3中斷過程
中斷請求就是中斷源向CPU申請中斷的過程,即建立中斷請求標志位IE0、IE1、TF0、TF1、TF2/EXF2、TI/RI的過程。
1)外部中斷請求外部中斷源INT0、INT0經(jīng)由引腳P3.2、P3.3向CPU申請中斷。外部中斷請求有兩種方式:電平觸發(fā)方式和下降沿觸發(fā)方式。通過設置觸發(fā)方式控制位IT0、IT1進行選擇。對于定時器/計數(shù)器T2的控制端T2EX來說,只有下降沿觸發(fā)方式1.中斷請求123,控制端T2EX的下降沿經(jīng)由引腳P1.1向CPU申請中斷。(1)電平觸發(fā)方式。若外部中斷定義為電平觸發(fā)方式,外部中斷請求觸發(fā)器的狀態(tài)隨著CPU在每個機器周期采樣到的外部中斷源輸入線的電平變化而變化,這能提高CPU對外部中斷請求的響應速度,但是也存在缺陷。這是因為在電平觸發(fā)方式,單片機不鎖存電平觸發(fā)中斷請求信號,會把每個機器周期采樣到的外部中斷源輸入線上的邏輯電平直接賦值給中斷標志寄存器。當中斷請求被阻塞而沒有得到及時響應時,將會被丟失。所以,要使電平觸發(fā)的中斷被CPU響應并執(zhí)行,必須保證外部中斷源輸入線上的低電平維持到中斷被執(zhí)行為止。124當外部中斷源被設定為電平觸發(fā)方式時,在中斷服務程序返回之前,外部中斷請求輸入必須無效(即外部中斷請求為高電平),否則,CPU返回主程序后會再次響應中斷。所以,在電平觸發(fā)方式,需要CPU能夠清除外部中斷請求源。(2)下降沿觸發(fā)方式。當CPU在一個機器周期中檢測到中斷源輸入線上的電平為高電平,下一個機器周期檢測到低電平,即電平信號有一個從高到低的跳變時,CPU即置位中斷標志,申請中斷。所以,為確保檢測到下降沿,中斷源輸入線上的高電平和低電平應至少各自保持一個機器周期。當中斷標志寄存器鎖存下降沿中斷請求信號后,直到CPU響應中斷并進入中斷服務程序時,才由硬件自動清除。因此,在下降沿觸發(fā)125方式,當CPU正在執(zhí)行同級或高級中斷時,產(chǎn)生的外部中斷同樣會被記錄到中斷標志寄存器中。在同級或高級中斷執(zhí)行完畢后,該中斷將被響應并執(zhí)行。外部中斷請求標志存放在IE0、IE1中。
IE0為INT0中斷請求標志位,當INT0有中斷請求時IE0置位,在CPU響應中斷后,由硬件將IE0清0。
IE1為INT1中斷請求標志位,當INT1有中斷請求時IE1置位,在CPU響應中斷后,由硬件將IE1清0。對于定時器/計數(shù)器T2的外部標志EXF2來說,當T2EX的下降沿來臨,且EXEN2置位時,則置位EXF2并申請中斷。在CPU響應中斷后,只能由軟件將EXF2清0。126
2)內(nèi)部中斷請求當定時器/計數(shù)器T0計數(shù)產(chǎn)生溢出時,由硬件置位TF0。當CPU響應中斷后,再由硬件將TF0清0。當定時器/計數(shù)器T1計數(shù)產(chǎn)生溢出時,由硬件置位TF1。當CPU響應中斷后,再由硬件將TF1清0。當定時器/計數(shù)器T2計數(shù)產(chǎn)生溢出時,由硬件置位TF2。當CPU響應中斷后,只能由軟件將TF2清0。對于串行口中斷來說,有兩個標志位:TI、RI。當串行口發(fā)送完一個字節(jié)數(shù)據(jù)后,置位TI;當串行口接收完一個字節(jié)數(shù)據(jù)后,置位RI。CPU響應中斷后,只能由軟件將TI、RI清0。1272.中斷響應CPU對中斷請求進行判斷,形成中斷矢量,轉入相應的中斷服務程序的過程稱為中斷響應。只有滿足規(guī)定要求的中斷請求才能被CPU響應。
1)
CPU響應中斷的基本條件一個中斷源的中斷申請被響應,需滿足以下基本條件。有中斷源提出中斷申請。中斷總允許位EA=1,即CPU開放中斷。申請中斷的中斷源的中斷允許位為1,即開放中斷源。CPU沒有響應同級或更高優(yōu)先級的中斷。當前指令執(zhí)行結束。128如果正在執(zhí)行的指令是RETI或是訪問IE、IP指令,則CPU在執(zhí)行RETI或訪問IE、IP指令后,至少還要再執(zhí)行一條其他指令后才會響應中斷請求。在接收中斷申請時,如遇下列情況,硬件生成的長調(diào)用指令“LCALL”將被封鎖:
(1)正在執(zhí)行同級或高優(yōu)先級的中斷服務程序。
(2)所查詢的機器周期不是執(zhí)行當前指令的最后一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度門店合伙人激勵機制服務合同4篇
- 2025年度二零二五農(nóng)行個人二手房交易貸款合同2篇
- 2025年度綠色建筑節(jié)能改造工程合同(二零二五版)4篇
- 二零二五年度商業(yè)門面租賃合同范本-@-1
- 2025年度綠色生態(tài)餐廳檔口租賃合同樣本4篇
- 2025年度城市軌道交通鋼管材料供應與承包合同協(xié)議書范本
- 2025版南海區(qū)創(chuàng)新創(chuàng)業(yè)人才居住就業(yè)支持合同4篇
- 2025版門面租賃合同消防安全及責任承擔4篇
- 二零二五年度外賣送餐服務合同書(含增值服務)
- 二零二五年度年薪制工資與員工晉升合同模板
- 衛(wèi)生服務個人基本信息表
- 醫(yī)學脂質(zhì)的構成功能及分析專題課件
- 高技能人才培養(yǎng)的策略創(chuàng)新與實踐路徑
- 廣東省湛江市廉江市2023-2024學年八年級上學期期末考試數(shù)學試卷(含答案)
- 2024年湖北省知名中小學教聯(lián)體聯(lián)盟中考語文一模試卷
- 安徽省蕪湖市2023-2024學年高一上學期期末考試 生物 含解析
- 交叉口同向可變車道動態(tài)控制與信號配時優(yōu)化研究
- 燃氣行業(yè)有限空間作業(yè)安全管理制度
- 數(shù)列練習題(含答案)基礎知識點
- 通用電子嘉賓禮薄
- 充電站監(jiān)理規(guī)劃
評論
0/150
提交評論