版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章并行接口P0~P3和單片機(jī)的中斷系統(tǒng)單片機(jī)原理、接口及應(yīng)用★單片機(jī)的并行接口P0~P3 ★
PO~P3端口的功能和內(nèi)部結(jié)構(gòu) ★
PO~P3端口的編程舉例 ★
用并行口設(shè)計(jì)LED數(shù)碼顯示和鍵盤電路 ★并行接口小結(jié)★MCS-51單片機(jī)的中斷系統(tǒng)
★中斷的系統(tǒng)結(jié)構(gòu)
★中斷的響應(yīng)過程
★中斷的的應(yīng)用編程★小結(jié)內(nèi)容提要5.1單片機(jī)的并行接口接口P0~P3MCS-51單片機(jī)有P0、P1、P2、P3四個(gè)8位雙向I/O口,每個(gè)端口可以按字節(jié)輸入或輸出,也可以按位進(jìn)行輸入或輸出,四個(gè)口共32根口線,用作位控制十分方便。P0口為三態(tài)雙向口,能帶8個(gè)TTL電路;P1、P2、P3口為準(zhǔn)雙向口,負(fù)載能力為4個(gè)TTL電路。5.1.1.1PO~P3接口功能
大多數(shù)口線都有雙重功能,具體介紹如下:
PO口—1.作為輸入/輸出口。
2.作為地址/數(shù)據(jù)總線,接外圍芯片時(shí)PO口分時(shí)輸出低8位地址與數(shù)據(jù)信號(hào)。P1口—1.作為輸入/輸出口。
2.在增強(qiáng)型(52系列)和ISP型(在系統(tǒng)編程型)中有如下功能:P1.0T2引腳,定時(shí)/計(jì)數(shù)器2外部計(jì)數(shù)脈沖輸入P1.1T2EX引腳,定時(shí)/計(jì)數(shù)器2觸發(fā)和方向控制P1.5MOSI引腳,在線系統(tǒng)編程數(shù)據(jù)輸入P1.6MISO引腳,在線系統(tǒng)編程數(shù)據(jù)輸出P1.7SCK引腳,在系統(tǒng)編程時(shí)鐘輸入
5.1.1PO~P3端口的功能和內(nèi)部結(jié)構(gòu)P2口—1.作為輸入/輸出口。
2.作為高8位地址總線。P3口—P3口為雙功能
1.作第一功能使用時(shí),其功能為輸入/輸出口。
2.作第二功能使用時(shí),每一位功能定義如下表所示:
P3.7P3.6T1(定時(shí)器1外部計(jì)數(shù)脈沖輸入)P3.5T0(定時(shí)器0外部計(jì)數(shù)脈沖輸入)P3.4P3.3P3.2TXD(串行輸出線)P3.1RXD(串行輸入線)
P3.0第二功能
端口引腳
/INT0(外部中斷0輸入線)/INT1(外部中斷1輸入線)/WR
(外部數(shù)據(jù)存儲(chǔ)器寫選通信號(hào)輸入)/RD
(外部數(shù)據(jù)存儲(chǔ)器讀選通信號(hào)輸入)
四個(gè)端口的一位結(jié)構(gòu)見圖,同一個(gè)端口的各位具有相同的結(jié)構(gòu)。由圖可見,四個(gè)端口的結(jié)構(gòu)有相同之處:
依據(jù)每個(gè)端口的不同功能,內(nèi)部結(jié)構(gòu)亦有不同之處,以下重點(diǎn)介紹不同之處。
都有兩個(gè)輸入緩沖器,分別受內(nèi)部讀鎖存器和讀引腳控制信號(hào)的控制。
都有鎖存器(即專用寄存器PO~P3)都是場(chǎng)效應(yīng)管輸出驅(qū)動(dòng)。
5.1.1.2端口的內(nèi)部結(jié)構(gòu)P0口的輸出驅(qū)動(dòng)電路由上拉場(chǎng)效應(yīng)管T1和驅(qū)動(dòng)場(chǎng)效應(yīng)T2組成,控制電路包括一個(gè)與門,一個(gè)非門和一個(gè)模擬開關(guān)MUX。Q(a)P0口位結(jié)構(gòu)11讀鎖存器內(nèi)部總線寫鎖存器讀引腳地址/數(shù)據(jù)控制&T1T2VccP0.x引腳MUX2DQCLP0.x鎖存器1.PO口CPU發(fā)控制電平“0”封鎖與門,使T1管截止,同時(shí)使MUX開關(guān)同下面的觸點(diǎn)接通,使鎖存器的Q與T2柵極接通。CPU向端口輸出數(shù)據(jù)時(shí),寫脈沖加在鎖存器的CL上、內(nèi)部總線的數(shù)據(jù)經(jīng)反相,再經(jīng)T2管反相,PO口的引腳上出現(xiàn)正好和內(nèi)部總線同相的數(shù)據(jù)。由于輸出驅(qū)動(dòng)級(jí)是漏極開路電路(因T1截止),在作I/O口使用時(shí)應(yīng)外接10K的上拉電阻。輸入操作時(shí),端口中兩個(gè)三態(tài)緩沖器用于讀操作。緩沖器2用于讀端口引腳數(shù)據(jù)。執(zhí)行端口讀指令時(shí),讀引腳脈沖打開三態(tài)緩沖器2,于是端口引腳數(shù)據(jù)經(jīng)三態(tài)緩沖器2到內(nèi)部總線。緩沖器1用于讀取鎖存器Q端的數(shù)據(jù)。當(dāng)執(zhí)行“讀-修改-寫”指令(即讀端口信息,在片內(nèi)加以運(yùn)算修改后,再輸出到該端口的某些指令如:ANLPO,A指令),即讀的是鎖存器Q的數(shù)據(jù)。這是為了避免錯(cuò)讀引腳的電平信號(hào),例如用一根口線去驅(qū)動(dòng)一個(gè)晶體管基極,當(dāng)向口線寫“1”,晶體管導(dǎo)通,導(dǎo)通的PN結(jié)會(huì)把引腳的電平拉低,如讀引腳數(shù)據(jù),則會(huì)讀為0,而實(shí)際上原口線的數(shù)據(jù)為1。因而采用讀鎖存器Q的值而避免錯(cuò)讀。究竟是讀引腳還是讀鎖存器,CPU內(nèi)部會(huì)自行判斷是發(fā)讀引腳脈沖還是讀鎖存器脈沖,讀者不必在意。應(yīng)注意:當(dāng)作輸入端口使用時(shí),應(yīng)先對(duì)該口寫入“1”使場(chǎng)效應(yīng)管T2截止,再進(jìn)行讀入操作,以防場(chǎng)效應(yīng)管處于導(dǎo)通狀態(tài),使引腳箝位到零,而引起誤讀。PO作I/O口使用:CPU及內(nèi)部控制信號(hào)為“1”,轉(zhuǎn)換開關(guān)MUX打向上面的觸點(diǎn),使反相器的輸出端和T2管柵極接通,輸出的地址或數(shù)據(jù)信號(hào)通過與門驅(qū)動(dòng)T1管,同時(shí)通過反相器驅(qū)動(dòng)T2管完成信息傳送,數(shù)據(jù)輸入時(shí),通過緩沖器進(jìn)入內(nèi)部總線。當(dāng)PO口作地址/數(shù)據(jù)線使用
P1口作通用I/O口使用,因電路結(jié)構(gòu)上輸出驅(qū)動(dòng)部分接有上拉電阻。當(dāng)作輸入時(shí),同P0一樣,要先對(duì)該口寫“1”。
Q2.P1口當(dāng)P2口作通用I/O口時(shí),多路開關(guān)MUX倒向左;當(dāng)擴(kuò)展片外存貯器時(shí),MUX開關(guān)打向右,P2口作高八位地址線輸出高八位地址信號(hào)。其MUX的的倒向是受CPU內(nèi)部控制的。
應(yīng)當(dāng)注意:當(dāng)P2口的幾位作地址線使用時(shí),剩下的P2口線一般不能作I/O口線使用。3.P2口P2口的位結(jié)構(gòu)比P1多了一個(gè)轉(zhuǎn)換控制部分。
4.P3口P3口為雙功能I/O口,內(nèi)部結(jié)構(gòu)中增加了第二輸入/輸出功能。1)當(dāng)作為普通I/O口使用時(shí),第二輸出功能端保持“1”,打開與非門3,用法同P1口。2)當(dāng)作第二功能輸出時(shí),鎖存器輸出為“1”打開與非門3,第二功能內(nèi)容通過與非門3和T送至引腳。3)輸入時(shí),引腳的第二功能信號(hào)通過三態(tài)緩沖器4進(jìn)入第二輸入功能端。兩種功能的引腳輸入都應(yīng)使T截止,此時(shí)第二輸出功能端和鎖存器輸出端Q均為高電平。4)P3的各位如不設(shè)定為第二功能則自動(dòng)處于第一功能,在更多情況下,根據(jù)需要,把幾條口線設(shè)為第二功能,剩下的口線可作第一功能(I/O)使用,此時(shí),宜采用位操作形式。1.如果單片機(jī)內(nèi)部有程序存貯器,不需要擴(kuò)展外部存貯器和I/O接口,單片機(jī)的四個(gè)口均可作I/O口使用。2.四個(gè)口在作輸入口使用時(shí),均應(yīng)先對(duì)其寫“1”,以避免誤讀。3.P0口作I/O口使用時(shí)應(yīng)外接10K的上拉電阻,其它口則可不必。4.P2可某幾根線作地址使用時(shí),剩下的線不能作I/O口線使用。5.P3口的某些口線作第二功能時(shí),剩下的口線可以單獨(dú)作I/O口線使用。歸納四個(gè)并行口使用的注意事項(xiàng)如下:5.1.15.1.2編程舉例
例設(shè)計(jì)一電路,監(jiān)視某開關(guān)K,用發(fā)光二極管LED顯示開關(guān)狀態(tài),如果開關(guān)合上,LED亮、開關(guān)打開,LED熄滅。分析:設(shè)計(jì)電路如圖如示。開關(guān)接在P1.1口線,LED接P1.0口線,當(dāng)開關(guān)斷開時(shí),P1.1為+5V,對(duì)應(yīng)數(shù)字量為“1”,開關(guān)合上時(shí)P1.1電平為0V,對(duì)應(yīng)數(shù)字量為“0”,這樣就可以用JB指令對(duì)開關(guān)狀態(tài)進(jìn)行檢測(cè)。
LED正偏時(shí)才能發(fā)亮,按電路接法,當(dāng)P1.0輸出“1”,LED正偏而發(fā)亮,當(dāng)P1.0輸出“0”,LED的兩端電壓為0而熄滅。下面舉例說明端口的輸入、輸出功能,其他功能的應(yīng)用實(shí)例在后面章節(jié)說明。LED--89S5189C51+5VVcc--EARST10uF
1KP1.089S51+5VP1.11K30P30PXTAL1XTAL2GND89C51K編程如下:
CLRP1.0;使發(fā)光二極管滅AGA:SETBP1.1;先對(duì)P1口寫入“1”JBP1.1,LIG;開關(guān)開,轉(zhuǎn)LIGSETBP1.0;開關(guān)合上,二極管亮SJMPAGALIG:CLRP1.0;開關(guān)開,二極管滅
SJMPAGA
在上述電路圖中二極管亮度不夠,按下面兩種電路接法,增加了驅(qū)動(dòng)能力,二極管更亮些。接成灌電流形式:+5VP1.0LEDP1.0+5VLED1例在下圖中P1.4~P1.7接四個(gè)發(fā)光二極管LED,P1.0~P1.3接四個(gè)開關(guān),編程將開關(guān)的狀態(tài)反映到發(fā)光二極管上。111189C51P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5V+5V1K×4330×4EAORG0000HABC:MOVP1,#0FH;高四位滅,低四位送“1”MOVA,P1;讀P1口引腳開關(guān)狀態(tài)至ASWAPA;低四位開關(guān)狀態(tài)轉(zhuǎn)換到高四位
ANLA,#0F0H;保留高四位
MOVP1,A;從P1口輸出
SJMPABC;循環(huán)上述程序中每次讀開關(guān)之前,輸入位都先置“1”,保證了開關(guān)狀態(tài)的正確讀入。編程如下:例用P1.0輸出1KHz和500Hz的音頻信號(hào)驅(qū)動(dòng)揚(yáng)聲器,作報(bào)警信號(hào),要求1KHz信號(hào)響100ms,500Hz信號(hào)響200ms,交替進(jìn)行,P1.7接一開關(guān)進(jìn)行控制,當(dāng)開關(guān)合上響報(bào)警信號(hào),當(dāng)開關(guān)斷開告警信號(hào)停止,編出程序。
分析:500Hz信號(hào)周期為2ms,信號(hào)電平為每1ms變反1次。1KHz的信號(hào)周期為1ms,信號(hào)電平每500μS變反1次,編一個(gè)延時(shí)500μS子程序,延時(shí)1ms只需調(diào)用2次。用R2控制音響時(shí)間長(zhǎng)短,A作音響頻率的交換控制的標(biāo)志。A=FF時(shí)產(chǎn)生1KHz信號(hào),A=0時(shí)產(chǎn)生500Hz信號(hào)。P1.0波形圖1ms1ms100個(gè)T(變反200次即200ms)。。。。500μS500μS100個(gè)T(變反200次即100ms)TT
ORG0100HCLRA;A作1KHz,500Hz轉(zhuǎn)換控制BEG:JBP1.7,$;檢測(cè)P1.7的開關(guān)狀態(tài)
MOVR2,#200;開關(guān)閉合報(bào)警,R2控制音響時(shí)間DV:CPLP1.0CJNEA,#0FFH,N1;A≠FFH,延時(shí)500μS
ACALLD500;A=FFH;延時(shí)1msP1.0變反N1:ACALLD500DJNZR2,DVCPLASJMPBEGD500:MOVR7,#250;延時(shí)500μS子程序
DJNZR7,$
RETEND5.1.25.1.3用并行口設(shè)計(jì)LED數(shù)碼顯示器和鍵盤電路
鍵盤和顯示器是單片機(jī)應(yīng)用系統(tǒng)中常用的輸入輸出裝置。LED數(shù)碼顯示器是常用的顯示器之一,下面介紹用單片機(jī)并行口設(shè)計(jì)LED數(shù)碼顯示電路和鍵盤電路的方法。LED數(shù)碼顯示電路:1)LED原理;2)數(shù)碼管接口鍵盤電路1.LED顯示器及其原理
LED有著顯示亮度高,響應(yīng)速度快的特點(diǎn),最常用的是七段式LED顯示器,又稱數(shù)碼管。七段LED顯示器內(nèi)部由七個(gè)條形發(fā)光二極管和一個(gè)小圓點(diǎn)發(fā)光二極管組成,根據(jù)各管的亮暗組合成字符。常見LED的管腳排列見圖4(a)。其中COM為公共點(diǎn),根據(jù)內(nèi)部發(fā)光二極管的接線形式,可分成共陰極型圖4(b)和共陽(yáng)極型圖4(c)。LED數(shù)碼管的g~a七個(gè)發(fā)光二極管因加正電壓而發(fā)亮,因加零電壓而不能發(fā)亮,不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼,顯然共陽(yáng)極和共陰極的字形碼是不同的,其字形碼見下表。LED數(shù)碼管每段需10~20ma的驅(qū)動(dòng)電流,可用TTL或CMOS器件驅(qū)動(dòng)。字形碼的控制輸出可采用硬件譯碼方式,如采用BCD7段譯碼/驅(qū)動(dòng)器74LS48、74LS49、CD4511(共陰極)或74LS46、74LS47、CD4513(共陽(yáng)極)也可用軟件查表方式輸出。5.1.3.1用并行口設(shè)計(jì)LED顯示電路abcdefgdp(a)(b)(c)cdedp12345678910abfgcomcomabcefabcdefgdpcomcom圖4顯示字符段符號(hào)十六進(jìn)制代碼dpgfedcba共陰共陽(yáng)0123456789ABCDEFHP0000000000000000010011111011110111111000111011111011111010001010111111111011011011011110001101111111110100001111100111100100011011011111101011113FH06H5BH4FH66H6DH7DH07H7FH6FH77H7CH39H5EH79H71H76HF3HC0F9A4B0999282F880908883C6A18684FFBF
2.LED數(shù)碼管的接口數(shù)碼管的接口有靜態(tài)接口和動(dòng)態(tài)接口。靜態(tài)接口為固定顯示方式,無閃爍,其電路可采用一個(gè)并行口接一個(gè)數(shù)據(jù)管,數(shù)碼管的公共端按共陰或共陽(yáng)分別接地或Vcc。這種接法占用接口多,如果PO口和P2口要用作數(shù)據(jù)線和地址線,僅用單片機(jī)的并行口就只能接二個(gè)數(shù)碼管。也可以用串行接口的方法接多個(gè)數(shù)碼管,使之靜態(tài)顯示.
動(dòng)態(tài)接口采用各數(shù)碼管循環(huán)輪流顯示的方法,當(dāng)循環(huán)顯示頻率較高時(shí),利用人眼的暫留特性,看不出閃爍顯示現(xiàn)象,這種顯示需要一個(gè)接口完成字形碼的輸出(字形選擇),另一接口完成各數(shù)碼管的輪流點(diǎn)亮(數(shù)位選擇)。
例如圖5是接有五個(gè)共陰極數(shù)碼管的動(dòng)態(tài)顯示接口電路,用74LS373接成直通的方式作驅(qū)動(dòng)電路,陰極用非門74LS04反相門驅(qū)動(dòng),字形選擇由P1口提供,位選擇由P3口控制。當(dāng)P3.0~P3.4輪流輸出1時(shí),五個(gè)數(shù)碼管輪流顯示。P1.7接開關(guān),當(dāng)開關(guān)打向位置“0”時(shí),顯示“12345”字樣,當(dāng)開關(guān)打向“1”時(shí),顯示“HELLO”字樣,程序清單如下:1211111+5VVcc/EARSTP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P3.0P3.1P3.2P3.3P3.4XTAL1XTAL2GND89C51Q0Q6/OED0D6G373ag圖5接五個(gè)共陰極數(shù)碼管的動(dòng)態(tài)顯示接口vcc
匯編語(yǔ)言編程:
ORG1000HMOVP3,#0;清顯示TEST:SETBP1.7JBP1.7,DIR1;檢測(cè)開關(guān)
MOVDPTR,#TAB1;開關(guān)置于1,‘12345’字形表頭地址
SJMPDIRDIR1:MOVDPTR,#TAB2;開關(guān)置于2,“HELLO”字形表頭DIR:MOVR0,#0;R0存字形表偏移量
MOVR1,#01;R1置數(shù)碼表位選代碼NEXT:MOVA,R0MOVCA,@A+DPTR;查字形碼表1MOVP1,A;送P1口輸出
MOVA,R1MOVP3,A;輸出位選碼
ACALLDAY;延時(shí)
INCR0;指向下一位字形
RLA;指向下一位
MOVR1,ACJNER1,#20H,NEXT;五個(gè)數(shù)碼管顯示完?SJMPTESTDAY:MOVR6,#20;
延時(shí)20ms子程序DL2:MOVR7,#7DHDL1:NOPNOPDJNZR7,DL1DJNZR6,DL2RETTAB1:DB06H,5BH,4FH,66H,6DH;“1~5”的字形碼TAB2:DB78H,79H,38H,38H,3FH;“HELLO”的字形碼
END5.1.3.1鍵盤是計(jì)算機(jī)系統(tǒng)中不可缺少的輸入設(shè)備,當(dāng)按鍵少時(shí)可接成線性(獨(dú)立)鍵盤,當(dāng)按鍵較多時(shí),這樣的接法占用口線較多。將按鍵接成矩陣的形式,可以節(jié)省口線,例如兩個(gè)接口可按8*8的形式接64個(gè)按鍵。每個(gè)按鍵有它的行值和列值,行值和列值的組合就是識(shí)別這個(gè)按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和CPU通信。每個(gè)按鍵的狀態(tài)同樣需變成數(shù)字量“0”和“1”,開關(guān)的一端通過電阻接Vcc(列)、而接地是通過程序輸出數(shù)字“0”實(shí)現(xiàn)的。5.1.3.2用并行口設(shè)計(jì)鍵盤電路掃描鍵盤處理程序的任務(wù)是:1)確定有無鍵按下;2)判哪一個(gè)鍵按下;3)鍵的功能是什么;4)還要消除按鍵在閉合或斷開時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼,使按鍵逐行動(dòng)態(tài)接地(稱行掃描),另一個(gè)并行口輸入按鍵狀態(tài)(稱回饋信號(hào),鍵盤的列值),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按鍵、通過軟件查表,查出該鍵的功能。也可由硬件編碼器完成鍵的編碼。下圖中,用8XX51的并行口P1接4×4矩陣鍵盤,以P1.0~P1.3作輸出線,以P1.4~P1.7作輸入線,鍵盤掃描程序的流程如圖5.7所示。Y返回鍵編碼讀P1.4~P1.7值置行掃描初值掃描位從P1口輸出P1口的高四位和低四位相或得鍵編碼掃到最后一行?NN(有鍵按下)N開始P1.0~P1.3輸出0延時(shí)去抖動(dòng)P1.4~P1.7全為1?P1.4~P1.7全為1?YYY(無鍵按下)對(duì)鍵盤的程序流程圖說明如下:當(dāng)P1.0~P1.3輸出0時(shí),如無鍵按下,P1.4~P1.7的輸入值均為“1”,如果其中有一個(gè)不是“1”,說明有鍵按下,再使P1.0~P1.3逐個(gè)輸出零(行掃描),檢查P1.4~P1.7的輸入值有無零,從而查出是哪行哪列的鍵按下。在判按鍵時(shí),按鍵有抖動(dòng),可采用延時(shí)后再重讀以跳過抖動(dòng)時(shí)段(也可用R-S觸發(fā)器閂鎖電路硬件消抖,但這樣電路復(fù)雜,在矩陣鍵盤中不采用)。程序清單如下:
ORG0000HTEST:MOVP1,#0F0H;P1.0~P1.3輸出0,P1.4~P1.7輸出1,作輸入位
MOVA,P1;讀鍵盤,檢測(cè)有無鍵按下
ANLA,#0F0H;屏蔽P1.0~P1.3,檢測(cè)P1.4~P1.是否全為1CJNEA,#0F0H,HAVE;P1.4~P1.7不全為1,有鍵按下
SJMPTEST;P1.4~P1.7全為1,無鍵按下,重檢測(cè)鍵盤HAVE:MOVA,#0FE;有鍵按下,逐行掃描鍵盤,置掃描初值NEXT:MOVB,A;掃描碼暫存于BMOVP1,A;輸出掃描碼READ:MOVA,P1;讀鍵盤
ANLA,#0F0H;屏蔽P1.0~P1.3,檢測(cè)P1.4~P1.是否全為1CJNEA,#0F0H,YES;P1.4~P1.7不全為1,該行有鍵按下
MOVA,B;被掃行無鍵按下,準(zhǔn)備查下一行
RLA;置下一行掃描碼
CJNEA,#0EFH,NEXT;未掃到到最后一行循環(huán)
YES:ACALLDAY;延時(shí)去抖動(dòng)AREAD:MOVA,P1;再讀鍵盤
ANLA,#0F0H;屏蔽P1.0~P1.3,保留P1.4~P1.7(列碼)MOVR2,A;暫存列碼
MOVA,BANLA,#0FH;取行掃描碼
ORLA,R2;行碼、列碼合并為鍵編碼YES1:MOVB,A;鍵編碼存于BLJMPSAM38;轉(zhuǎn)鍵分析處理程序…5.1.3.25.1.35.1.4并行接口小結(jié)
1.四個(gè)并行口均可作為輸入輸出接口使用,但又有各自的特點(diǎn)。因PO口是數(shù)據(jù)線和低八位的地址線,因此不用它作輸入/輸出接口,而是用它傳輸數(shù)據(jù)和低八位的地址信息,除非在不接其他外圍芯片的情況下才作I/O接口使用,此時(shí)由于內(nèi)部漏極開路,需外接上拉電阻。四個(gè)口的使用特點(diǎn)是本章的重點(diǎn)。2.當(dāng)并行口作為輸入口使用時(shí),應(yīng)對(duì)所用的口線寫“1”,使其內(nèi)部的驅(qū)動(dòng)場(chǎng)效應(yīng)管截止,防止誤讀。寫“1”以后不影響讀引腳指令,因?yàn)樽x入的信息是經(jīng)緩沖器2(見圖5)進(jìn)入CPU的,而不是讀的鎖存器。3.在應(yīng)用設(shè)計(jì)中應(yīng)理解,計(jì)算機(jī)內(nèi)由數(shù)字電路組成只存在兩種TTL電平,高電平3.5~5V和低電平0V,對(duì)應(yīng)著的數(shù)字為“1”和“0”。外設(shè)的狀態(tài)要通過電路轉(zhuǎn)換成高、低電平,計(jì)算機(jī)才能識(shí)別(如開關(guān)電路)。計(jì)算機(jī)輸出數(shù)據(jù)“1”即輸出3.5V~5V,輸出數(shù)據(jù)“0”即輸出0V,根據(jù)外設(shè)需要的電平要求輸出“1”或“0”數(shù)據(jù),這就是程序控制外設(shè)的本質(zhì)。
并行接口是單片機(jī)用得最多的部分,可直接接外部設(shè)備(要注意電平的匹配)。本章以最簡(jiǎn)單的實(shí)驗(yàn)室最容易實(shí)現(xiàn)的外部設(shè)備—開關(guān)和發(fā)光二極管為例說明并行口的應(yīng)用設(shè)計(jì),其他外設(shè)的測(cè)控原理與其一樣。5.1.4在CPU和外設(shè)交換信息時(shí),存在著快速CPU和慢速外設(shè)間的矛盾,機(jī)器內(nèi)部有時(shí)也可能出現(xiàn)突發(fā)事件,為此,計(jì)算機(jī)中通常采用中斷技術(shù)。中斷:CPU和外設(shè)并行工作,當(dāng)外設(shè)數(shù)據(jù)準(zhǔn)備好(或有某種突發(fā)事件發(fā)生)時(shí)向CPU提出請(qǐng)求,CPU暫停正在執(zhí)行的程序轉(zhuǎn)而為該外設(shè)服務(wù)(或處理緊急事件),處理完畢再回到原斷點(diǎn)繼續(xù)執(zhí)行原程序。中斷源:引起中斷的原因,中斷申請(qǐng)的來源,中斷源可以是I/O設(shè)備、故障、時(shí)鐘、調(diào)試中人為設(shè)置。中斷優(yōu)先級(jí):當(dāng)有多個(gè)中斷源同時(shí)向CPU申請(qǐng)中斷時(shí),CPU優(yōu)先響應(yīng)最需緊急處理的中斷請(qǐng)求,處理完畢再響應(yīng)優(yōu)先級(jí)別較低的,這種預(yù)先安排的響應(yīng)次序。中斷的嵌套:在中斷系統(tǒng)中,高優(yōu)先級(jí)的中斷請(qǐng)求能中斷正在進(jìn)行的較低級(jí)的中斷源處理,本章將討論MCS51系列單片機(jī)的中斷系統(tǒng)。5.2MCS-51單片機(jī)的中斷系統(tǒng)5.2.18XX51中斷系統(tǒng)結(jié)構(gòu)8XX51有5個(gè)中斷源,3個(gè)在片內(nèi),2個(gè)在片外,它們?cè)诔绦虼尜A器中有固定的中斷入口地址,當(dāng)CPU響應(yīng)中斷時(shí),硬件自動(dòng)形成這些地址,由此進(jìn)入中斷服務(wù)程序;5個(gè)中斷源有兩級(jí)中斷優(yōu)先級(jí),可形成中斷嵌套;符號(hào)
名稱中斷引起原因中斷服務(wù)程序入口INT0
外部中斷0P3.2引腳的低電平或下降沿信號(hào)0003HINT1
外部中斷1P3.3引腳的低電平或下降沿信號(hào)0013HT0定時(shí)器0中斷定時(shí)計(jì)數(shù)器0計(jì)數(shù)回零溢出000BHT1定時(shí)器1中斷定時(shí)計(jì)數(shù)器1計(jì)數(shù)回零溢出001BHTI/RI串行口中斷串行通信完成一幀數(shù)據(jù)發(fā)送或接收引起中斷0023H8XX51有5個(gè)中斷源,其符號(hào)、名稱、產(chǎn)生條件及中斷服務(wù)程序的入口地址如下表。5.2.2.1中斷源5.2.2.15.2.2.2中斷控制的有關(guān)寄存器(1)中斷的允許和禁止——中斷控制寄存器IE
IE寄存器的各位對(duì)應(yīng)相應(yīng)的中斷源,如果允許該中斷源中斷則該位置1,禁止中斷則該位置0;IE可以位尋址。INT0允/禁T0允/禁INT1允/禁T1允/禁串行口允/禁不用不用中斷總控允/禁
EX0ET0EX1ETIES--EAEA:中斷總控開關(guān),是CPU是否響應(yīng)中斷的前提。
EA=1,CPU開中斷;EA=0,CPU關(guān)中斷。ES:串行口中斷允許位,
ES=1,允許串行口中斷;ES=0,禁止串行口中斷。ET1:定時(shí)器T1中斷允許位,
ET1=1,允許T1計(jì)數(shù)溢出中斷;ET1=0,禁止T1中斷。ET0:定時(shí)器T0中斷允許位,ET0=1,允許T1計(jì)數(shù)溢出中斷;ET0=0,禁止T0中斷。EX1:外部中斷INT1允許位,
EX1=1,允許INT1中斷;EX1=0,禁止INT1中斷。EX0:外部中斷INT0允許位,
EX0=1,允許INT0中斷;EX0=0,禁止INT0中斷。說明:
IT0和IT1為外中斷INT0
和INT1中斷觸發(fā)方式選擇,若選下降沿觸發(fā)則相應(yīng)位置1;若選低電平觸發(fā),IT相應(yīng)位置0。某中斷源有中斷請(qǐng)求,該中斷標(biāo)志置1,無中斷請(qǐng)求,該中斷標(biāo)志置0TR0
和TR1
為定時(shí)器T0和T1工作啟動(dòng)和停止控制。INT0方式下沿/低電平INT0請(qǐng)求有/無INT1方式下沿/低電平INT1請(qǐng)求有/無T0工作啟/停T0請(qǐng)求有/無T1工作啟/停T1請(qǐng)求有/無IT0IE0IT1IE1TR0TF0TR1TF1(2)中斷請(qǐng)求標(biāo)志及外部中斷方式選擇寄存器TCON(3)中斷優(yōu)先級(jí)管理寄存器IP
------------PSPT1PX1PT0PX0無用位無用位無用位串行口高/低T1高/低INT1高/低T0高/低INT0高/低T0INT0INT1T1串行口當(dāng)某幾個(gè)中斷源在IP寄存器相應(yīng)位同為1或同為零時(shí),由內(nèi)部查詢確定優(yōu)先級(jí),查詢的順序是:CPU優(yōu)先響應(yīng)先查詢的中斷請(qǐng)求五個(gè)中斷源的優(yōu)先級(jí)別由IP寄存器管理,相應(yīng)位置1,則該中斷源優(yōu)先級(jí)別高,置0的優(yōu)先級(jí)別低。MCS_51系列單片機(jī)的中斷結(jié)構(gòu)如圖所示。
5.2.15.2.2.2
5.2.2中斷響應(yīng)過程
一、中斷處理過程中斷處理過程分為四個(gè)階段:中斷請(qǐng)求,中斷響應(yīng),中斷處理、中斷返回。MCS-51系列單片機(jī)的中斷過程流程如圖所示。中斷請(qǐng)求、中斷響應(yīng)過程由硬件自動(dòng)完成。中斷服務(wù)程序應(yīng)根據(jù)需要進(jìn)行編寫。程序中要注意保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)。中斷返回是通過執(zhí)行一條RETI中斷返回指令,使堆棧中被壓入的斷點(diǎn)地址送PC,從而返回主程序的斷點(diǎn)繼續(xù)執(zhí)行主程序。另外RETI還有恢復(fù)優(yōu)先級(jí)狀態(tài)觸發(fā)器的作用,因此不能以RET指令代替“RETI”指令。NNYYYN執(zhí)行指令中斷標(biāo)志1?(中斷請(qǐng)求?)指令最后一個(gè)T周期?EA=1?允許位=1?CPU判別優(yōu)先權(quán),響應(yīng)優(yōu)先權(quán)高的中斷斷點(diǎn)的PC進(jìn)棧,中斷服務(wù)入口地址送PC撤除中斷標(biāo)志中斷服務(wù)中斷返回,斷點(diǎn)出棧送PC
中斷請(qǐng)求中斷響應(yīng)中斷服務(wù)中斷返回若某個(gè)中斷源通過編程設(shè)置,處于被打開的狀態(tài),并滿足中斷響應(yīng)的條件,然而下面三種情況單片機(jī)不響應(yīng)此中斷:①當(dāng)前正在執(zhí)行的那條指令沒執(zhí)行完;②當(dāng)前響應(yīng)了同級(jí)或高級(jí)中斷;③正在操作IE、IP中斷控制寄存器或執(zhí)行RETI指令。在正常的情況下,從中斷請(qǐng)求信號(hào)有效開始,到中斷得到響應(yīng),通常需要3個(gè)機(jī)器周期到8個(gè)機(jī)器周期。對(duì)電平觸發(fā)的外部中斷,CPU在響應(yīng)中斷時(shí)也不會(huì)自動(dòng)清除中斷標(biāo)志,因此,在CPU響應(yīng)中斷后應(yīng)立即撤除INT1或INT0的低電平信號(hào)。對(duì)定時(shí)計(jì)數(shù)器T0、T1的溢出中斷,CPU響應(yīng)中斷后,硬件自動(dòng)清除中斷請(qǐng)求標(biāo)志TF0和TF1。對(duì)邊沿觸發(fā)的外部中斷INT1和INT0,CPU響應(yīng)中斷后硬件自動(dòng)清除中斷請(qǐng)求標(biāo)志IE0和IE1。對(duì)于串行口中斷,CPU響應(yīng)中斷后,沒有用硬件清除中斷請(qǐng)求標(biāo)志TI、RI,即這些中斷標(biāo)志不會(huì)自動(dòng)清除,必須用軟件清除,這是在編串行通信中斷服務(wù)中應(yīng)該注意的。二、中斷請(qǐng)求的撤除CPU響應(yīng)中斷后,應(yīng)撤除該中斷請(qǐng)求標(biāo)志,否則會(huì)再次中斷。5.2.25.2.3中斷的程序設(shè)計(jì)
用戶對(duì)中斷的控制和管理,實(shí)際是對(duì)4個(gè)與中斷有關(guān)的寄存器IE、TCON、IP、SCON進(jìn)行控制或管理。這幾個(gè)寄存器在單片機(jī)復(fù)位時(shí)是清零的,因此必須根據(jù)需要對(duì)這幾個(gè)寄存器的有關(guān)位進(jìn)行預(yù)置。在中斷程序的編制中應(yīng)注意:開中斷總控開關(guān)EA,置位中斷源的中斷允許位。對(duì)外部中斷INT0、INT1應(yīng)選擇中斷觸發(fā)方式。編寫中斷服務(wù)程序,并注意用保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng),以免中斷返回時(shí),丟失原寄存器、累加器中的信息。多個(gè)中斷源中斷,應(yīng)設(shè)定中斷優(yōu)先級(jí),預(yù)置IP。若要在執(zhí)行當(dāng)前中斷程序時(shí)禁止更高優(yōu)先級(jí)中斷,可以采用軟件關(guān)CPU中斷.或禁止某中斷源中斷,在中斷返回前再開放中斷。匯編語(yǔ)言的中斷服務(wù)程序按規(guī)定的中斷矢量地址存入,由于五個(gè)中斷矢量地址0003H、000BH、0013H、001BH、0023H之間相距很近,往往裝不下一個(gè)中斷服務(wù)程序,通常將中斷服務(wù)程序安排在程序存貯器的其他地址空間,而在矢量地址的單元中安排一條轉(zhuǎn)移指令。一、匯編語(yǔ)言中斷程序的設(shè)計(jì)例在圖6.3中P1.4~P1.7接有四個(gè)發(fā)光二極管,P1.0~P1.3接有四個(gè)開關(guān),消抖電路用于產(chǎn)生中斷請(qǐng)求信號(hào),當(dāng)消抖電路的開關(guān)來回拔動(dòng)一次將產(chǎn)生一個(gè)下降沿信號(hào),通過INT0向CPU申請(qǐng)中斷,要求:初時(shí)發(fā)光二極管全黑,每中斷一次,P1.0~P1.3所接的開關(guān)狀態(tài)反映到發(fā)光二極管上,且要求開關(guān)斷開的對(duì)應(yīng)發(fā)光二極管亮,編程如下:×、×
ORG0000HAJMPMAINORG0003HAJMPWBIORG0030HMAIN:MOVP1,#0FH
SETBIT0
SETBEX0SETBEASJMP$WBI:MOVP1,#0FHMOVA,P1SWAPAMOVP1,ARETIEND此例的執(zhí)行現(xiàn)象是,每重置一次四個(gè)開關(guān)的開、合狀態(tài),四個(gè)發(fā)光二極管維持原來的亮、滅狀態(tài),僅當(dāng)來回拔動(dòng)消抖電路開關(guān)后,產(chǎn)生了中斷,發(fā)光二極管才反映新置的開關(guān)狀態(tài)。
例89C51的P1口接一個(gè)共陰極的數(shù)碼管,利用消抖開關(guān)產(chǎn)生中斷請(qǐng)求信號(hào),每來回拔動(dòng)一次開關(guān),產(chǎn)生一次中斷,用數(shù)碼管顯示中斷的次數(shù)(最多不超過15次)。ORG0000HAJMPMAINORG0013HAJMPINT1ORG0030HMAIN:SETBIT1SETBEX1SETBEAMOVR0,#0MOVA,#3FHAL1:MOVP1,AAL2:CJNER0,#0FH,AL1MOVR7,#0FFH
DJNZR7,$
MOVP1,#0;關(guān)顯示
CLREA;關(guān)中斷
SJMP$;結(jié)束INT1:INCR0;中斷次數(shù)加1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 五金材料采購(gòu)合同樣本
- 醫(yī)院屋面防水施工合同
- 園林綠化灌溉系統(tǒng)防水工程協(xié)議書
- 智能城市解決方案改善城市品質(zhì)
- 11月月末總結(jié)紀(jì)檢部范文樣本
- 《軸承常用量?jī)x》課件
- 阿爾滋海默病研究
- 遼寧省撫順市(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)統(tǒng)編版隨堂測(cè)試(上學(xué)期)試卷及答案
- 貴州省遵義市(2024年-2025年小學(xué)五年級(jí)語(yǔ)文)統(tǒng)編版摸底考試(上學(xué)期)試卷及答案
- 《中華園招商項(xiàng)目》課件
- 巴金名著導(dǎo)讀《十年一夢(mèng)》
- 項(xiàng)目申報(bào)書(模板)(高校)
- 教科版五年級(jí)科學(xué)上冊(cè)全冊(cè)教學(xué)設(shè)計(jì)
- 三只松鼠客戶關(guān)系管理
- XX電站接地裝置的熱穩(wěn)定校驗(yàn)報(bào)告(220kV)
- 2024年山東地區(qū)光明電力服務(wù)公司第二批招聘高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 涉警輿情培訓(xùn)課件模板
- 馬戲團(tuán)活動(dòng)方案
- 小學(xué)關(guān)工委制度范本
- 當(dāng)代大學(xué)生幸福感課件
- 人感染H7N9禽流感流行病學(xué)調(diào)查方案
評(píng)論
0/150
提交評(píng)論