第4章并行接口P0~P3和單片機(jī)的中斷系統(tǒng)hzh_第1頁
第4章并行接口P0~P3和單片機(jī)的中斷系統(tǒng)hzh_第2頁
第4章并行接口P0~P3和單片機(jī)的中斷系統(tǒng)hzh_第3頁
第4章并行接口P0~P3和單片機(jī)的中斷系統(tǒng)hzh_第4頁
第4章并行接口P0~P3和單片機(jī)的中斷系統(tǒng)hzh_第5頁
已閱讀5頁,還剩95頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第4章 并行接口P0P3和單片機(jī)的中斷(zhngdun)系統(tǒng)單片機(jī)原理、接口(ji ku)及應(yīng)用共一百頁單片機(jī)的并行接口P0P3 POP3端口的功能和內(nèi)部結(jié)構(gòu) POP3端口的編程 用并行口設(shè)計LED數(shù)碼顯示和鍵盤電路 并行接口小結(jié)MCS-51單片機(jī)的中斷系統(tǒng)(xtng) 中斷的基本概念 中斷的系統(tǒng)結(jié)構(gòu) 中斷的響應(yīng)過程 中斷的的應(yīng)用編程小結(jié)內(nèi)容提要(ni rn t yo)共一百頁4.1單片機(jī)的并行接口接口P0P3 MCS-51單片機(jī)有P0、P1、P2、P3四個8位雙向I/O口,每個端口可以按字節(jié)輸入或輸出,也可以按位進(jìn)行輸入或輸出,四個口共32根口線,用作位控制十分方便(fngbin)。P0口為

2、三態(tài)雙向口,能帶8個TTL電路(P0口是推挽輸出,輸出能力大些,需外加上拉電阻) ;P1、P2、P3口為準(zhǔn)雙向口(弱上拉),負(fù)載能力為4個TTL電路。4.1.1 POP3端口的功能和內(nèi)部結(jié)構(gòu) 4.1.1.1 POP3接口功能 大多數(shù)口線都有雙重功能,具體介紹如下:共一百頁PO口1.作為輸入/輸出口。 2.作為地址/數(shù)據(jù)總線 ,接外圍芯片時PO口分時輸出低 8 位地址與數(shù)據(jù)信號。P1口1.作為輸入/輸出口。 2.在增強(qiáng)型(52系列)和ISP型(在系統(tǒng)編程型)中有如下(rxi)功能: P1.0 T2引腳,定時/計數(shù)器2外部計數(shù)脈沖輸入 P1.1 T2EX引腳,定時/計數(shù)器2觸發(fā)和方向(fngxin

3、g)控制 P1.5 MOSI引腳,在系統(tǒng)編程數(shù)據(jù)輸入 P1.6 MISO引腳,在系統(tǒng)編程數(shù)據(jù)輸出 P1.7 SCK引腳,在系統(tǒng)編程時鐘輸入共一百頁P2口1.作為輸入/輸出(shch)口。 2.作為高8位地址總線。 P3口P3口為雙功能 1.作第一功能使用時,其功能為輸入/輸出口。 2.作第二功能使用時,每一位功能定義如下表所示: 共一百頁RD (外部數(shù)據(jù)存儲器讀選通信(tng xn)號輸入) P3.7 WR (外部數(shù)據(jù)(shj)存儲器寫選通信號輸入)P3.6 T1 (定時器1外部計數(shù)脈沖輸入)P3.5 T0 (定時器0外部計數(shù)脈沖輸入)P3.4 P3.3 P3.2 TXD (串行輸出線)P3.

4、1 RXD (串行輸入線) P3.0 第 二 功 能 端口引腳 INT0(外部中斷0輸入線)INT1 (外部中斷1輸入線) 共一百頁 4.1.1.2 端口的內(nèi)部結(jié)構(gòu) 四個端口的一位結(jié)構(gòu)見圖5.1,同一個端口的各位具有(jyu)相同的結(jié)構(gòu)。由圖可見,四個端口的 結(jié)構(gòu)有相同之處: 依據(jù)每個端口的不同功能(gngnng),內(nèi)部結(jié)構(gòu)亦有不同之處,以下重點介紹不同之處。 都有兩個輸入緩沖器,分別受內(nèi)部讀鎖存器和讀引腳控制信號的控制。 都有鎖存器(即專用寄存器POP3) 都是場效應(yīng)管輸出驅(qū)動。共一百頁多路開關(guān)功能:用于控制選通I/O方式還是(hi shi)地址/數(shù)據(jù)輸出方式方式控制:由內(nèi)部控制信號產(chǎn)生輸出

5、(shch)鎖存器兩個輸入緩沖器(BUF1和BUF2)推拉式I/O驅(qū)動器1.PO口BUF2BUF15、P0R2為讀引腳信號,執(zhí)行“MOV A,P0”時該信號有效6、讀引腳(端口)時,輸出鎖存器應(yīng)為“1”。即當(dāng)作輸入端口使用時,應(yīng)先對該口寫入“1”說明:1、當(dāng)控制信號為0時,P0口做雙向I/O口,為漏極開路(高阻狀態(tài),適用于輸入/輸出,需外接上拉電阻,使輸出呈現(xiàn)三態(tài)之高阻態(tài) )2、控制信號為1時,P0口為地址/數(shù)據(jù)復(fù)用總線(用于口擴(kuò)展)3、P0W為端口輸出寫信號,用于鎖存輸出狀態(tài)4、P0R1為讀鎖存器信號,執(zhí)行“ANL P0,#0FH”時該信號有效QQDCVcc控制AD0P0R1 P0R2D0P

6、0W圖1、P0口內(nèi)部結(jié)構(gòu)讀鎖存器讀引腳鎖存器內(nèi)部總線寫鎖存器地址/數(shù)據(jù)P00多路開關(guān)10共一百頁2.P1口 P1口的結(jié)構(gòu)(jigu)見下圖P1口內(nèi)部結(jié)構(gòu)如圖2所示輸出部分有內(nèi)部上拉電阻(dinz)R*約為20K。其他部分與P0端口使用相類似。寫數(shù)據(jù)讀端口在執(zhí)行輸入操作時,如果鎖存器原來寄存的數(shù)據(jù)Q=0,則由于 /Q=1將使V1導(dǎo)通,引腳被始終鉗拉在低電平,不可能輸入高電平。因此,用作輸入前,必須先用輸出指令置Q=1,使V1截止。 單片機(jī)復(fù)位后,P1口的狀態(tài)都是高電平,可以直接用作輸入注意:端口操作時,采用“讀-修改-寫”三部完成。通過輸入三態(tài)緩沖器讀鎖存器的輸出狀態(tài)Q,而非從引腳讀入。共一百頁

7、3.P2口 P2口的位結(jié)構(gòu)比P1多了一個轉(zhuǎn)換控制部分(b fen),當(dāng)P2口作通用I/O口時,多路開關(guān)MUX倒向左;共一百頁 當(dāng)擴(kuò)展片外存貯器時,MUX開關(guān)打向右,P2口作高八位地址線輸出高八位地址信號(xnho)。 其MUX的的倒向是受CPU內(nèi)部控制的。 應(yīng)當(dāng)注意:當(dāng)P2口的幾位作地址線使用時,剩下的P2口線不能作I /O口線使用。共一百頁 4.P3口 P3口 P3口為雙功能I/O口,內(nèi)部結(jié)構(gòu)中增加(zngji)了第二輸入/輸出功能。共一百頁 當(dāng)作為普通I/O口使用時,第二輸出(shch)功能端保持“1”,打開與非門3,用法同P1口。 當(dāng)作第二功能輸出時,鎖存器輸出為“1”打開與非門3,第二

8、功能內(nèi)容通過與非門3和T送至引腳。 輸入時,引腳的第二功能信號通過三態(tài)緩沖器4進(jìn)入第二輸入功能端。兩種功能的引腳輸入都應(yīng)使T截止,此時第 二輸出功能端和鎖存器輸出端Q均為高電平。 P3的各位如不設(shè)定為第二功能則自動處于第一功能,在更多情況下,根據(jù)需要, 把幾條口線設(shè)為第二功能,剩下的口線可作第一功能(I/O)使用,此時,宜采用位操作形式 。 共一百頁歸納四個并行口使用的注意事項如下:1.如果單片機(jī)內(nèi)部有程序存貯器,不需要擴(kuò)展外部存貯器和I/O接口,單片機(jī)的四個口均可作I/O口使用。2.四個口在作輸入口使用時,均應(yīng)先對其寫“1”,以避免誤讀。3.P0口作I/O口使用時應(yīng)外接10K的上拉電阻(di

9、nz),其它口則可不必。4.P2可某幾根線作地址使用時,剩下的線不能作I/O口線使用。5.P3口的某些口線作第二功能時,剩下的口線可以單獨作I/O口線使用。共一百頁4.1.2 編程舉例(j l) 下面舉例說明端口的輸入、輸出功能,其他功能的應(yīng)用(yngyng)實例在后面章節(jié)說明。 例4-1.設(shè)計一電路,監(jiān)視某開關(guān)K,用發(fā)光二極管LED顯示開關(guān)狀態(tài),如果開關(guān)合上,LED 亮、 開關(guān)打開,LED熄滅。 分析:設(shè)計電路如圖5. 3如示。 開關(guān)接在P1.1口線,LED接P1.0口線,當(dāng)開關(guān)斷開時,P1.1為+5V,對應(yīng)數(shù)字量為“1”,開 關(guān)合上時P1.1電平為0V,對應(yīng)數(shù)字量為“0”,這樣就可以用JB

10、指令對開關(guān)狀態(tài)進(jìn)行檢測 。共一百頁 LED正偏時才能發(fā)亮(f lin),按電路接法,當(dāng)P1.0輸出“1”,LED正偏而發(fā)亮,當(dāng)P1.0 輸出“0” ,LED 的兩端電壓為 0 而熄滅。 LED+5VVcc-EARST10uF 1KP1.089S51P1.11K30P30PXTAL1XTAL2GND89C51+5VVcc-EARST10uF 1KP1.089S51+5VP1.11K30P30PXTAL1XTAL2GND89C51K共一百頁編程如下(rxi): CLR P1.0 ;使發(fā)光二極管滅AGA:SETB P1.1 ;先對P1口寫入“1” JB P1.1,LIG ;開關(guān)開,轉(zhuǎn)LIG SETB

11、 P1.0 ;開關(guān)合上,二極管亮 SJMP AGALIG: CLR P1.0 ;開關(guān)開,二極管滅 SJMP AGA開關(guān)K控制(kngzh)LED顯示開關(guān)狀態(tài)開關(guān)K控制(kngzh)LED顯示開關(guān)狀態(tài).DSN開關(guān)K控制LED顯示開關(guān)狀態(tài)開關(guān)K控制LED顯示開關(guān)狀態(tài)_asm共一百頁#includesbit key=P11;sbit led=P10; /*定義(dngy)位變量*/void main()led=0;while(1)key=1;if(key=0) led=1;else led=0;共一百頁+5VP1.0LED 在上述電路圖中二極管亮度不夠,按下面兩種電路接法,增加了驅(qū)動能力,二極管更亮

12、些。接成灌電流(dinli)形式:P1.0+5VLED1加驅(qū)動(q dn)電路:共一百頁 例.在圖5-4中P1.4P1.7接四個發(fā)光二極管LED,P1.0P1.3接四個開關(guān),編程將開關(guān)的狀態(tài)(zhungti)反映到發(fā)光二極管上。 89C51/89S51P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5V+5V1K43304圖5-4 例5-2圖EA共一百頁 上述程序中每次讀開關(guān)之前,輸入位都先置“1”,保證了開關(guān)狀態(tài)的正確讀入。要求調(diào)試完成 編程如下: ORG 0000H MOV P1, #0FFH ;高四位全滅,低四位送“1” ABC: MOV A, P1 ;讀P1口引腳開關(guān)

13、狀態(tài)至A SWAP A ;低四位開關(guān)狀態(tài)轉(zhuǎn)換(zhunhun)到高四位 ANL A,#0F0H ;保留高四位MOV P1,A ;從P1口輸出ORL P1, #0FH ;高四位不變,低四位送“1”,準(zhǔn)備下一輪讀開關(guān) SJMP ABC ;循環(huán)演示一個簡單的例子:開關(guān)(kigun)控制LED開關(guān)(kigun)控制LED.DSN 開關(guān)控制LED開關(guān)控制LED.asm共一百頁開關(guān)(kigun)控制LED開關(guān)(kigun)控制LED.c 上述程序中每次讀開關(guān)之前,輸入(shr)位都先置“1”,保證了開關(guān)狀態(tài)的正確讀入。 用C語言編程如下:sfr P1=0 x90; main() P1=0 xff; /*P

14、1低四位置“1”,高四位燈全滅*/ while(1) P1=P14; /*讀入P1引腳狀態(tài),左移四位后再從P1口輸出*/ P1=P1|0 x0f; /*P1高四位不變,低四位置“1”,準(zhǔn)備 下一輪讀 開 關(guān)*/ 共一百頁 例5-3.用P1.0輸出(shch)1KHz和500Hz的音頻信號驅(qū)動揚聲器,作報警信號,要求1KHz信號響100ms ,500Hz信號響200ms,交替進(jìn)行,P1.7接一開關(guān)進(jìn)行控制,當(dāng)開關(guān)合上響報警信號,當(dāng)開關(guān)斷開告警信號停止,編出程序。 分析:500Hz信號(xnho)周期為2ms,信號(xnho)電平為每1ms變反1次。1KHz的信號(xnho)周期為1ms,信號(x

15、nho)電平 每500S變反1次,編一個延時500S子程序,延時1ms只需調(diào)用2次。用R2控制音響時間長短,A作音響頻率的交換控制的標(biāo)志。A=FF時產(chǎn)生1KHz信號(xnho),A=0時產(chǎn)生500Hz信號(xnho)。 共一百頁 P1.0 波 形 圖 1ms 1ms100個T (變反200次即200ms)。500S500S100個T (變反200次即100ms)。TT共一百頁 ORG 0000H CLR A ;A作1KHz,500Hz 轉(zhuǎn)換控制BEG: JNB P1.7, ;檢測P1.7的開關(guān)(kigun)狀態(tài) MOV R2, #200 ;開關(guān)閉合報警,R2控制音響時間DV: CPL P1.0

16、 CJNE A, #0FFH, N1 ;AFFH,延時500S ACALL D500 ;A=FFH ; 延時1ms P1.0變反N1: ACALL D500 DJNZ R2,DV CPL A SJMP BEGD500: MOV R7, #250 ;延時500 S子程序 DJNZ R7, RET END相關(guān)(xinggun)動作演示:開關(guān)控制報警器源程序開關(guān)控制報警器.DSN共一百頁#include#define uchar unsigned charsbit p17=P17;sbit p10=P10;void main()uchar i,j;while(1)p17=1;while(p17=1)

17、;for(i=0;i100;i+)p10=p10;for(j=0;j50;j+);for(i=0;i150;i+)p10=p10;for(j=0;j100;j+);共一百頁5.3 用并行口設(shè)計LED數(shù)碼顯示器和鍵盤(jinpn)電路 鍵盤和顯示器是單片機(jī)應(yīng)用系統(tǒng)中常用的輸入輸出裝置。LED數(shù)碼顯示器是常用的顯示器之一,下面(xi mian)介紹用單片機(jī)并行口設(shè)計LED數(shù)碼顯示電路和鍵盤電路的方法。 共一百頁5.3.1用并行口設(shè)計LED顯示電路1. LED顯示器及其原理 LED有著顯示亮度高,響應(yīng)速度快的特點(tdin),最常用的是七段式LED顯示器,又稱數(shù)碼管。 七段LED顯示器內(nèi)部由七個條形

18、發(fā)光二極管和一個小圓點發(fā)光二極管組成,根據(jù)各管的亮暗組合成字符。常見LED的管腳排列見圖4(a)。其中COM為公共點,根據(jù)內(nèi)部發(fā)光二極管的接線 形式,可分成共陰極型圖4(b)和共陽極型圖4(c)。 共一百頁abcdefgdp(a)(b)共陰極(c)cdedp12345678910abfgcomcomabcefabcdefgdpcomcom圖4共一百頁 LED數(shù)碼管的ga七個發(fā)光二極管因加正電壓(diny)而發(fā)亮,因加零電壓(diny)而不能發(fā)亮,不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼,顯然共陽極和共陰極的字形碼是不同的 ,其字形碼見下表。LED數(shù)碼管每段需1020mA的驅(qū)動電流

19、,可用TTL或CMOS器件驅(qū)動。 字形碼的控制輸出可采用硬件譯碼方式,如采用BCD 7段譯碼/驅(qū)動器74LS48、74LS49、CD4511(共陰極)或74LS46、74LS47、CD4513 (其陽極) 也可用軟件查表方式輸出。 共一百頁0 0 1 1 1 1 1 1 3fh x g f e d c b a abcdefgdpcdedp12345678910abfgcomcomabcefcomg LED數(shù)碼管的ga七個發(fā)光二極管因加正電壓而發(fā)亮(f lin),因加零電壓而不能發(fā)亮(f lin),不同亮暗的組合就能形成不同的字形,這種組合稱之為字形碼(段碼),如顯示”0”,字形碼為3fh.d共

20、一百頁abcdefgdp12345678910abfgcomcomabcefgx g f e d c b a 0 0 0 0 0 1 1 0 06h 顯示(xinsh)”1”,字形碼為06h.d共一百頁顯示(xinsh)”2”,字形碼為5bh.dpcomabcdefgdpcde12345678910comcomabcefgx g f e d c b a 0 1 0 1 1 0 1 1 5bh d共一百頁顯示字符段 符 號十六進(jìn)制代碼dpgfedcba共陰共陽0123456789ABCDEFHP000000000000000001001111101111011111100011101111101

21、1111010001010111111111011011011011110001101111111110100001111100111100100011011011111101011113FH06H5BH4FH66H6DH7DH07H7FH6FH77H7CH39H5EH79H71H76HF3HC0F9A4B0999282F880908883C6A18684FFBF共一百頁2.LED數(shù)碼管的接口 數(shù)碼管的接口有靜態(tài)接口和動態(tài)接口。 靜態(tài)接口為固定顯示方式,無閃爍,其電路可采用一個并行口接一個數(shù)據(jù)管,數(shù)碼管的公共端,按共陰或共陽分別接地或Vcc。這種接法占用接口多,如果PO口和P2口要用作數(shù)據(jù)線和

22、地址線,僅用單片機(jī)的并行口就只能接二個數(shù)碼管。也可以用串行接口的方法(fngf)接多個數(shù)碼管, 使之靜態(tài)顯示. (可演示具體例子) 動態(tài)接口采用各數(shù)碼管循環(huán)輪流顯示的方法,當(dāng)循環(huán)顯示頻率較高時,利用人眼的暫留特性 ,看不出閃爍顯示現(xiàn)象,這種顯示需要一個接口完成字形碼的輸出(字形選擇),另一接口完 成各數(shù)碼管的輪流點亮(數(shù)位選擇)。 共一百頁1211111+5VVcc/EARSTP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P3.0P3.1P3.2P3.3P3.4XTAL1XTAL2GND89C51Q0Q6/OED0D6G373ag圖5-8 接五個共陰極數(shù)碼管的動態(tài)顯示接口+5

23、V共一百頁(1)編程使在最右邊的數(shù)碼管上顯示 “P”。匯編語言程序:ORG 0000HMOV P1, #73H;P1口輸出“P”的段碼MOC P3,#10H;最右邊的數(shù)碼管亮SJMP $C語言程序:#includeMain() P1 = 0 x73; P3 = 0 x10; 如果(rgu)不對P1和P3重新輸出新的數(shù)據(jù),最右邊的數(shù)碼管將一直顯示“P”。思考一下為什么。共一百頁(2)要求(yoqi)在中間的數(shù)碼管上循環(huán)顯示“0” “3”。分析:中間的數(shù)碼管的陰極受P3.2控制,P3.2輸出1,P1口循環(huán)送出“0” “3”的段碼,數(shù)碼變化多,采用查表方式會使程序簡潔,每亮一個數(shù)碼都要延時,保證它的

24、導(dǎo)通時間,才能保證數(shù)碼管發(fā)亮。C語言編程如下:共一百頁#include#define uchar unsigned charcode uchar table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71,0 x76,0 x73;delay(int x)int i,j;int y=100;for(i=0;ix;i+)for(j=0;jy;j+); 你能編出匯編語言(hu bin y yn)程序嗎? void main()uchar coun=0;whi

25、le(1)P1=tablecoun;P3=0 x04;delay(200);coun+;if(coun=16) coun=0;共一百頁org 0000hljmp 0200horg 0200hstart:mov dptr,#tableloop:mov r0,#0next1:mov a,r0movc a,a+dptrmov P1,amov P3,#04hacall delayinc r0cjne r0,#04,next1ajmp looptable:db 3fh,06h,5bh,4fhdelay:mov r7,#0ffhdel:mov r6,#0ffhdel1:nopnopdjnz r6,del1

26、djnz r7,delretend 共一百頁(3)當(dāng)P3.0P3.4輪流(lnli)輸出1時,五個數(shù)碼管輪流(lnli)顯示。P1.7接開關(guān),當(dāng)開關(guān)打向位置“1”時, 顯示“12345” ,當(dāng)開關(guān)打向“2”時,顯示“HELLO” 樣,如下圖:共一百頁共一百頁C語言 只顯示(xinsh)12345的情況,延時不同?#include#define uchar unsigned charcode uchar table=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d;delay(int x)int i,j;int y=100;for(i=0;ix;i+)for(j=0;jy;

27、j+);void main()while(1)uchar i,coun=0;uchar shift=0 x01;for(i=0;i5;i+)P1=tablecoun+1;P3=shift;delay(3);P3=0 x00;/這句話在仿真(fn zhn)的時候很重要coun+;shift=shift1;共一百頁C語言 顯示(xinsh)12345和hello,判斷P1.7#include#define uchar unsigned charcode uchar table=0 x06,0 x5b,0 x4f,0 x66,0 x6d;/12345,為何和教材(jioci)不一致?code uch

28、ar hello=0 x76,0 x79,0 x38,0 x38,0 x3F;/hellosbit P17=P17;void main()uchar I,shift;P17=1;while(1)shift=0 x01;for(i=0;i5;i+)if(P17=0) P1=tablei;else P1=helloi;P3=shift;delay(3);P3=0 x00;/消隱shift=shift1;共一百頁 用匯編語言編程 ORG 0000H MOV P3,#0 ;清顯示(xinsh)TEST:SETB P1.7 JB P1.7,DIR1 ;檢測開關(guān) MOV DPTR,#TAB 1 ; 開關(guān)置

29、于1,12345字形表頭地址 SJMP DIRDIR1: MOV DPTR,#TAB2 ; 開關(guān)置于2,“HELLO”字形表頭DIR: MOV R0,#0 ;R0存字形表偏移量 MOV R1,#01 ;R1置數(shù)碼表位選代碼NEXT:MOV A,R0 MOVC A,A+DPTR ; 查字形碼表1 MOV P1,A ;送P1口輸出 共一百頁 MOV A,R1 MOV P3,A ;輸出(shch)位選碼 ACALL DAY ;延時 INC R0 ;指向下一位字形 RL A ;指向下一位 MOV R1,A CJNE R1,#20H,NEXT ;五個 數(shù)碼管顯示完? SJMP TESTDAY:MOV R

30、6,#20 ; 延時20ms子程序DL2: MOV R7,#7DHDL1: NOP NOP共一百頁 DJNZ R7,DL1 DJNZ R6,DL2 RETTAB1:db 06H,5BH,4FH,66H,6DH ; “15”的字形碼TAB2:db 76H,79H,38H,38H,3FH ; “HELLO”的字形碼 END相關(guān)動作演示(ynsh):5只數(shù)碼管滾動顯示數(shù)字串.DSNText9.asm共一百頁4.1.3.2用并行口設(shè)計鍵盤電路 鍵盤是計算機(jī)系統(tǒng)中不可缺少的輸入設(shè)備,當(dāng)按鍵少時可接成線性鍵盤(P76,圖5.3中的按鍵 ),當(dāng)按鍵較多時,這樣的接法占用口線較多。將按鍵接成矩陣的形式,可以節(jié)

31、省口線,例如兩個(lin )接口可按8*8的形式接64個按鍵。每個按鍵有它的行值和列值,行值和列值的組合就是識別這個按鍵的編碼。矩陣的行線和列線分別通過兩并行接口和CPU通信。每個按鍵的狀態(tài)同樣需變成數(shù)字量“0”和“1”,開關(guān)的一端通過電阻接Vcc(列)、而接地是通過程序輸出數(shù)字“0”實現(xiàn)的。 共一百頁 鍵盤(jinpn)處理程序的任務(wù)是:確定有無鍵按下;判哪一個鍵按下, 鍵的功能是什么;還要消除按鍵在閉合或斷開時的抖動。 兩個并行口中,一個輸出掃描碼, 使按鍵逐行動態(tài)接地(稱行掃描),另一個并行口輸入按鍵狀態(tài)(稱回饋信號,鍵盤的列值), 由行掃描值和回饋信號共同形成鍵編碼而識別按鍵、通過軟件

32、查表,查出該鍵的功能。也可由硬件編碼器完成鍵的編碼。共一百頁 下圖中,用8XX51的并行口P1接44矩陣鍵盤,以P1.0P1.3作輸出線,以P1.4P1.7作輸入線,鍵盤掃描程序(chngx)的流程如圖5.7所示。共一百頁 鍵碼為: EE DE BE 7E ED DD BD 7D EB DB BB 7B E7 D7 B7 77負(fù)邏輯表示-行列線數(shù)據(jù)求反組合,上例中的各鍵值分別為: 11 21 41 81 12 22 42 82 14 24 44 84 18 28 48 88 01234812演示(ynsh):數(shù)碼管顯示44矩陣按鍵.DSN Text10.asm共一百頁開發(fā)板上的鍵值編碼(bin

33、 m) 鍵碼為: 0 1 2 3 EE ED EB E7 4 5 6 7 DE DD DB D7 BE BD BB B7 7E 7D 7B 77 共一百頁N輸出(shch)鍵編碼P0讀P1.3P1.4值置行掃描(somio)初值掃描位從P1口輸出行首鍵號和列號相加得鍵編碼掃到最后一行?YN(有鍵按下)N開始P1.0P1.3輸出0延時去抖動P1.4P1.7全為1?P1.4P1.7全為1?YYY(無鍵按下)共一百頁 對鍵盤的程序流程圖5.7說明如下: 當(dāng)P1.0P1.3輸出0時,如無鍵按下,P1.4P1.7的輸入值均為“1”,如果其中有一個不是 “1”,說明有鍵按下,再使P1.0P1.3逐個輸出零

34、(行掃描),檢查P1.4P1.7的輸入值有 無零,從而查出是哪行哪列的鍵按下。在判按鍵時,按鍵有抖動,可采用延時后再重讀以跳 過抖動時段(也可用R-S觸發(fā)器閂鎖電路(dinl)硬件消抖,但這樣電路(dinl)復(fù)雜,在矩陣鍵盤中不采用)。數(shù)碼管顯示44矩陣按鍵(n jin).DSN4x4鍵盤例程44鍵盤.c4x4鍵盤例程44鍵盤.Uv2共一百頁程序清單如下(rxi): ORG 0000HLJMP START ORG 0100HSTART: MOV P0,#00TEST: MOV P1,#0F0H MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,HAVE SJMP TESTHA

35、VE:ACALL TM12S MOV P1,#0F0H MOV A,P1 ANL A,#0F0H CJNE A,#0F0H,LK2 SJMP TESTLK2: MOV R2,#0FEH;P1.0先置零 MOV R4,#00H ;置首行鍵值的首鍵號LK4: MOV A,R2 MOV P1,A MOV A,P1 JB ACC.4,CONE MOV A,#0 AJMP LKPCONE: JB ACC.5,CTWO MOV A,#1 AJMP LKPCTWO: JB ACC.6,CTHR MOV A,#2 AJMP LKPCTHR:JB ACC.7,NEXT MOV A,#3LKP: ADD A,R4

36、 MOV DPTR,#TAB MOVC A,A+DPTR CPL A MOV P0,A ACALL TM12S SJMP KND 共一百頁 NEXT: MOV A,R4 ADD A,#04H ;置下一行(yxng)鍵值的首鍵號 MOV R4,A MOV A,R2 JNB ACC.3,KND ;判斷是否掃描到第四行 RL A ; P1.1置零,掃描第二行 MOV R2,A AJMP LK4KND: AJMP TESTTM12S:MOV R7,#18H TM: MOV R6,#0FFHTM6: DJNZ R6,TM6 DJNZ R7,TM RETTAB: DB 0C0H,0F9H,0A4H,0B0

37、H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,00END共一百頁共一百頁4.1.4 并行接口小結(jié)(xioji) 1. 四個并行口均可作為輸入輸出接口使用,但又有各自(gz)的特點。因PO口是數(shù)據(jù)線和低八位的 地址線,因此不用它作輸入/輸出接口,而是用它傳輸數(shù)據(jù)和低八位的地址信息,除非在不 接其他外圍芯片的情況下才作I/O接口使用,此時由于內(nèi)部漏極開路,需外接上拉電阻。四個口的使用特點是本章的重點。 并行接口是單片機(jī)用得最多的部分,可直接接外部設(shè)備(要注意電平的匹配)。本章以最簡單 的實驗室最容易實現(xiàn)的外部設(shè)備開關(guān)和發(fā)光二極管為例說明并

38、行口的應(yīng)用設(shè)計,其他外設(shè) 的測控原理與其一樣。共一百頁3. 在應(yīng)用設(shè)計中應(yīng)理解,計算機(jī)內(nèi)由數(shù)字電路組成只存在(cnzi)兩種TTL電平,高電平3.55V和低 電平0V,對應(yīng)著的數(shù)字為“1”和“0”。 外設(shè)的狀態(tài)要通過電路轉(zhuǎn)換成高、低電平,計算機(jī)才能識別(如開關(guān)電路)。 計算機(jī)輸出數(shù)據(jù)“1”即輸出3.5V5V,輸出數(shù)據(jù)“0”即輸出0V,根據(jù)外設(shè)需要的電平要求 輸出“1”或“0”數(shù)據(jù),這就是程序控制外設(shè)的本質(zhì)。 2. 當(dāng)并行口作為輸入口使用時,應(yīng)對所用的口線寫“1”,使其內(nèi)部的驅(qū)動場效應(yīng)管截止 ,防止誤讀。寫“1”以后不影響(yngxing)讀引腳指令,因為讀入的信息是經(jīng)緩沖器2(見圖4.1)進(jìn)入

39、C PU的,而不是讀的鎖存器。共一百頁4.2.1 8XX51中斷系統(tǒng)結(jié)構(gòu) 在CPU和外設(shè)交換信息時,存在著快速CPU和慢速外設(shè)間的矛盾,機(jī)器內(nèi)部有時也可能出現(xiàn)突發(fā)事件,為此,計算機(jī)中通常采用中斷技術(shù)。中斷 CPU和外設(shè)并行工作,當(dāng)外設(shè)數(shù)據(jù)準(zhǔn)備好( 或有某種突發(fā)事件發(fā)生)時向CPU提出請求,CPU暫停正在(zhngzi)執(zhí)行的程序轉(zhuǎn)而為該外設(shè)服務(wù)(或處 理緊急事件),處理完畢再回到原斷點繼續(xù)執(zhí)行原程序。中斷源 引起中斷的原因,中斷申請的來源,中斷源可以是I/O設(shè)備、故障、時鐘、調(diào)試中人為設(shè)置。4.2 MCS51單片機(jī)的中斷(zhngdun)系統(tǒng)共一百頁 中斷優(yōu)先級 當(dāng)有多個中斷源同時 向CPU申

40、請中斷時,CPU優(yōu)先響應(yīng)最需緊急處理的中斷請求,處理完畢再響應(yīng)優(yōu)先級別較低的 ,這種預(yù)先安排的響應(yīng)次序。 中斷的嵌套 在中斷系統(tǒng)中,高優(yōu)先級的 中斷請求能中斷正在進(jìn)行的較低級的中斷源處理, 本章將討論(toln)MCS51系列單片機(jī)的中斷系統(tǒng)。 共一百頁中斷請求是在執(zhí)行程序的過程中的隨機(jī)發(fā)生的,中斷系統(tǒng)要解決的問題是:1)CPU在不斷的執(zhí)行指令中,是如何檢測到隨機(jī)發(fā)生的中斷請求?2)如何使中斷的雙方(CPU方和中斷源方)均能人為控制,允許中斷或禁止中斷。3)由于中斷產(chǎn)生的隨機(jī)性,不可能在程序中安排(npi)調(diào)子程序指令或轉(zhuǎn)移指令,那么如何實現(xiàn)正確的轉(zhuǎn)移,以便為該中斷源服務(wù)呢?4)中斷源有多個,

41、而CPU只有一個,當(dāng)有多個中斷源同時有中斷請求時,用戶怎么控制 CPU 按照自己的需要安排響應(yīng)次序?5)中斷服務(wù)完畢,如何正確地返回到原斷點處?共一百頁 8XX51有5個中斷源,3個在片內(nèi),2個在片外,它們在程序(chngx)存貯器中有固定的中斷入口地址, 當(dāng)CPU響應(yīng)中斷時,硬件自動形成這些地址,由此進(jìn)入中斷服務(wù)程序(chngx);5個中斷源有兩級中斷優(yōu)先級,可形成中斷嵌套;4.2.2.1 中斷源 8XX51有5個中斷源,其符號、名稱、產(chǎn)生條件(tiojin)及中斷服務(wù)程序的入口地址如下表。共一百頁符號 名 稱 中 斷 引 起 原 因 中斷服務(wù)程序入口INT0 外部中斷0 P3.2引腳的低電

42、平或下降沿信號 0003HINT1 外部中斷1P3.3引腳的低電平或下降沿信號 0013HT0定時器0中斷 定時計數(shù)器0計數(shù)回零溢出 000BHT1定時器1中斷 定時計數(shù)器1計數(shù)回零溢出 001BHTI/RI 串行口中斷 串行通信完成一幀數(shù)據(jù)發(fā)送或接收引起中斷 0023H共一百頁4.2.2.2 中斷控制(kngzh)的有關(guān)寄存器(1)中斷的允許和禁止中斷控制寄存器IE IE寄存器的各位對應(yīng)相應(yīng)的中斷源,如果(rgu)允許該中斷源中斷則該位置1,禁止中斷則該位置0 。EA - - ES ETI EX1 ET0 EX0中斷總控允/禁 不 用 不用 串行口允/禁 T1允/禁 INT1允/禁 T0允/

43、禁 INT0允/禁 共一百頁EA:中斷總控開關(guān),是CPU是否響應(yīng)中斷的前提。 EA=1,CPU開中斷; EA=0, CPU關(guān)中斷。ES: 串行口中斷允許位, ES=1,允許串行口發(fā)送/接收中斷; ES=0,禁止串行口中斷。ET1:定時器T1中斷允許位, ET1=1,允許T1計數(shù)(j sh)溢出中斷; ET1=0,禁止T1中斷。共一百頁ET0: 定時器T0中斷允許位, ET0=1,允許T1計數(shù)溢出(y ch)中斷; ET0=0,禁止T0中斷。EX1: 外部中斷INT1允許位, EX1=1,允許INT1中斷; EX1= 0,禁止INT1中斷。EX0: 外部中斷INT0允許位, EX0=1,允許IN

44、T0中斷; EX0= 0,禁止INT0中斷。 共一百頁說明: IT0和IT1為外中斷INT0 和INT1中斷觸發(fā)方式選擇(xunz),若選下降沿觸發(fā)則相應(yīng)位置1;若選低電平觸發(fā) ,IT相應(yīng)位置0。 IE0、 IE1, TF0、 TF1,某中斷源有中斷請求,該中斷標(biāo)志置1,無中斷請求,該中斷標(biāo)志置0 。這是中斷請求標(biāo)記TR0 和 TR1 為定時器T0和T1 工作啟動和停止控制。 TF1 TR1TF0 TR0 IE1IT1 IE0IT0T1 請求有/無 T1工作啟/停 T0 請求有/無 T0 工作啟/停 INT1 請求有/無 INT1方式下沿/ 低電平 INT0請求有/無 INT0方式下沿/低電平

45、 (2)中斷(zhngdun)請求標(biāo)志及外部中斷(zhngdun)方式選擇寄存器TCON共一百頁(3)中斷(zhngdun)優(yōu)先級管理寄存器IP -PSPT1PX1PT0PX0無用位無用位無用位串行 口高/低 T1高/低 INT1高/低 T0高/低 INT0高/低 T0INT0INT1T1串行口 當(dāng) 某幾個中斷源在IP寄存器相應(yīng)位同為1或同為零時,由內(nèi)部(nib)查詢確定優(yōu)先級,查詢的順序是:CPU優(yōu)先響應(yīng) 先查詢的中斷請求五個中斷源的優(yōu)先級別由IP寄存器管理,相應(yīng)位置1,則該中斷源優(yōu)先級別高,置0的優(yōu)先級 別低。共一百頁MCS_51系列單片機(jī)的中斷(zhngdun)結(jié)構(gòu)如圖所示。 共一百頁4

46、.2.2 中斷(zhngdun)響應(yīng)過程 一、中斷處理過程 中斷處理過程分為(fn wi)四個階段:中斷請求,中斷響應(yīng),中斷處理、中斷返回。MCS51系列單 片機(jī)的中斷過程流程如圖所示。 共一百頁NNYYYN執(zhí) 行 指 令中斷(zhngdun)標(biāo)志1?(中斷請求?) 指令最后(zuhu)一個T周期?EA=1?允 許 位 = 1?CPU 判 別優(yōu) 先權(quán) ,響 應(yīng)優(yōu) 先權(quán)高 的中斷斷點的PC進(jìn)棧, 中斷服務(wù)入口地址送PC撤 除 中 斷 標(biāo) 志中 斷 服 務(wù)中 斷 返 回, 斷 點 出 棧 送 PC 中斷請求.中斷響應(yīng)中斷服務(wù)中斷返回共一百頁中斷請求、中斷響應(yīng)過程由硬件完成。中斷服務(wù)程序應(yīng)根據(jù)需要進(jìn)

47、行編寫。程序中要注意保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場。中斷返回是通過執(zhí)行一條RETI中斷返回指令,使堆棧中被壓入的斷 點地址送PC,從而返回主程序的斷點繼續(xù)執(zhí)行主程序。另外RETI還有恢復(fù)優(yōu)先級狀態(tài)(zhungti)觸發(fā)器 的作用,因此不能以RET指令代替“RETI”指令。 共一百頁 若某個(mu )中斷源通過編程設(shè)置,處于被打開的狀態(tài),并滿足中斷響應(yīng)的條件,然而下面三種情 況單片機(jī)不響應(yīng)此中斷:當(dāng)前正在執(zhí)行的那條指令沒執(zhí)行完;當(dāng)前響應(yīng)了同級或高級中斷;正在操作IE、IP中斷控制寄存器或執(zhí)行RETI指令。 在正常的情況下,從中斷請求信號有效開始,到中斷得到響應(yīng),通常需要3個機(jī)器周期到8個機(jī)器周期。二、中斷請

48、求的撤除 CPU響應(yīng)中斷后,應(yīng)撤除該中斷請求標(biāo)志,否則(fuz)會再次中斷。共一百頁 對電平觸發(fā)的外部中斷,CPU在響應(yīng)中斷時也不會自動清除(qngch)中斷標(biāo)志,因此,在CPU響應(yīng)中斷后應(yīng)立即撤除INT1或INT0的低電平信號(注意這是硬件電路的設(shè)計問題)。 對定時計數(shù)器T0、T1的溢出中斷,CPU響應(yīng)(xingyng)中斷后,硬件自動清除中斷請求標(biāo)志TF0和TF1。 對邊沿觸發(fā)的外部中斷INT1和INT0,CPU響應(yīng)中斷后硬件自動清除中斷請求標(biāo)志IE0和IE1。 對于串行口中斷,CPU響應(yīng)中斷后,沒有用硬件清除中斷請求標(biāo)志TI、RI,即這些中斷標(biāo)志 不會自動清除,必須用軟件清除,這是在編串

49、行通信中斷服務(wù)中應(yīng)該注意的。共一百頁4.2.3 中斷(zhngdun)的程序設(shè)計 用戶對中斷的控制和管理,實際是對4個與中斷有關(guān)的寄存器IE、TCON、IP、SCON進(jìn)行控制 或管理。這幾個(j )寄存器在單片機(jī)復(fù)位時是清零的,因此必須根據(jù)需要對這幾個(j )寄存器的有關(guān) 位進(jìn)行預(yù)置。在中斷程序的編制中應(yīng)注意:開中斷總控開關(guān)EA,置位中斷源的中斷允許位。對外部中斷INT0、INT1應(yīng)選擇中斷觸發(fā)方式。編寫中斷服務(wù)程序,并注意用保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場,以免中斷返回時,丟失原寄存器、累加器中的信息。多個中斷源中斷,應(yīng)設(shè)定中斷優(yōu)先級,預(yù)置IP。 若要在執(zhí)行當(dāng)前中斷程序時禁止更高優(yōu)先級中斷,可以采 用軟件

50、關(guān)CPU中斷或禁止某中斷源中斷,在中斷返回前再開放中斷。共一百頁 匯編語言的中斷服務(wù)程序按規(guī)定的中斷矢量地址存入,由于五個中斷矢量地址0003H、000BH 、0013H、001BH、0023H之間相距很近,往往裝不下一個中斷服務(wù)程序,通常將中斷服務(wù)程 序安排在程序存貯器的其他(qt)地址空間,而在矢量地址的單元中安排一條轉(zhuǎn)移指令。一、匯編語言中斷程序(chngx)的設(shè)計共一百頁 例1. 在圖6.3中P1.4P1.7接有四個發(fā)光二極管,P1.0P1.3接有四個開關(guān),消抖電路(dinl)用于 產(chǎn)生中斷請求信號,當(dāng)消抖電路(dinl)的開關(guān)來回拔動一次將產(chǎn)生一個下降沿信號,通過INT0向CPU申請

51、中斷,要求:初時發(fā)光二極管全黑,每中斷一次,P1.0P1.3所接的 開關(guān)狀態(tài)反映到發(fā)光二極管上,且要求開關(guān)斷開的對應(yīng)發(fā)光二極管亮,編程如下: 共一百頁、中斷控制(kngzh) 開關(guān)和LED.DSN共一百頁 ORG 0000H AJMP MAIN ORG 0003H ;INT0中斷入口 AJMP WBI ; 轉(zhuǎn)中斷服務(wù)程序 ORG 0030H ;主程序 MAIN: MOV P1,#0FH ;全燈滅,低四位輸入 SETB IT0 ; 邊沿觸發(fā)(chf)中斷 SETB EX0 ;允許外中斷0中斷 SETB EA ;開中斷開關(guān) SJMP $ WBI: MOV P1,#0FH ;P1先寫入“1”且燈滅

52、MOV A,P1 ;輸入開關(guān)狀態(tài) SWAP A MOV P1,A ;輸出到P1高4位 RETI END共一百頁 此例的執(zhí)行現(xiàn)象是,每重置一次四個開關(guān)的開、合狀態(tài),四個發(fā)光(f un)二極管維持原來的亮、滅 狀態(tài),僅當(dāng)來回拔動消抖電路開關(guān)后,產(chǎn)生了中斷,發(fā)光(f un)二極管才反映新置的開關(guān)狀態(tài)。 例2. 89C51的P1口接一個共陰極的數(shù)碼管,利用消抖開關(guān)產(chǎn)生中斷請求信號,每來回拔動一 次開關(guān),產(chǎn)生一次中斷,用數(shù)碼管顯示中斷的次數(shù)(csh)(最多不超過15次)。INT0中斷計數(shù).DSN 共一百頁P1.189C51P1.0P1.2P1.4P1.3P1.5P1.6&1K 2INT0驅(qū)動器+5Vag

53、圖6.EA共一百頁 ORG 0000H AJMP MAIN ORG 0013H ;INT1中斷入口 AJMP INT1 ;轉(zhuǎn)中斷服務(wù)程序 ORG 0030H ;主程序MAIN: SETB IT0 ;邊沿觸發(fā)中斷 SETB EX0 ;允許INT0中斷 SETB EA ;開中斷開關(guān)(kigun) MOV R0,#0 ;計數(shù)初值為0 MOV A,#3FH ;“0”的字形碼送AAL1: MOV P1,A ;顯示數(shù)碼AL2: CJNE R0,#0FH,AL1 ;沒滿15次循環(huán)顯示 MOV R7,#0FFH ;滿15次,顯F,延時 Text11_1.asm共一百頁 DJNZ R7, MOV P1,#0 ;

54、關(guān)顯示 CLR EA ;關(guān)中斷 SJMP ;結(jié)束INT1: INC R0 ;中斷次數(shù)(csh)加1 MOV A,R0 MOV DPTR,TAB ;DPTR指向字形碼表首址 MOVC A,A+DPTR ;查表 POP DPH POP DPL ;彈出斷點 MOV DPTR,#AL1 PUSH DPL PUSH DPH ;修改中斷返回點,AL1壓入堆棧 RETI ;從堆棧AL1地址PC,返主程序AL1處 共一百頁 TAB: DB 3FH,06H,5BH,4FH,66H,6DH DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H ;段碼表(字形碼) END 上面

55、程序(chngx)每中斷一次,執(zhí)行一次中斷服務(wù)程序(chngx)INT0。在中斷服務(wù)程序中,累計中斷次數(shù)并 查字形表,返回到主程序AL1地址執(zhí)行顯示。共一百頁 以上中斷在AL1或AL2兩指令處發(fā)生,究竟是哪一指令處中斷是隨機(jī)的,為保證返回到AL1顯示F ,這里采用修改中斷返回點的辦法, 即先從棧中彈出中斷響應(yīng)時壓入的 斷點彈到DPTR中,修改DPTR為用戶需要的返回點,并將其壓 入堆棧,再通過執(zhí)行RETI指令彈出棧中內(nèi)容到PC、彈出的即為修改后的地址,從而返回到主 程序中用所希望的地址執(zhí)行。 上例中中斷次數(shù)在主程序判斷,目的是使讀者了解修改中斷返回點的方法,如果改在中斷服 務(wù)程序中判斷,編程簡

56、潔(jinji)些,下面僅介紹和上例中的不同部分的程序。 共一百頁 MOV R0, #0 ;計數(shù)初值為0 MOV P1, #3FH ;顯示0 MOV DPTR,#TAB ;指向字形碼表AGA: SJMP ;等待中斷(zhngdun)INT1:INC R0 ;中斷次數(shù)加1 MOV A, R0 MOVC A, A+DPTR ;查字形碼表 MOV P1, A ;顯示 CJNE R0, #0FH, RE ; 15次中斷未到轉(zhuǎn)RE CLR EA ;15次到關(guān)中斷RE: RETI ;返回主程序的AGA處TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,7

57、7H,7CH,39H,5EH,79H,71HText11_2.asm共一百頁共一百頁 C51使用戶能編寫高效的中斷服務(wù)(fw)程序,編譯器在規(guī)定的中斷源的矢量地址中放入無條件轉(zhuǎn)移指令,使CPU響應(yīng)中斷后自動地從矢量地址跳轉(zhuǎn)到中斷服務(wù)(fw)程序的實際地址,而無需用戶去安排。中斷服務(wù)(fw)程序定義為函數(shù),函數(shù)的完整定義如下。 其中interrupt n 表示將函數(shù)聲明為中斷服務(wù)函數(shù),n 為中斷源編號,可以是031間的整數(shù) ,不允許是帶運算符的表達(dá)式,n 通常(tngchng)取以下值:返回值 函數(shù)名(參數(shù))模式再入interrupt nusing m6.3.2 C51中斷程序的設(shè)計共一百頁 0 外部中斷0; 1 定時器/計數(shù)器0溢出中斷 2 外部中斷1; 3 定時器/計數(shù)器1溢出中斷 4 串行口發(fā)送與接收中斷 Using m 定義函數(shù)使用的工作寄存器組,m的取值范圍為03,可缺省,它 對目標(biāo)(mbio)代碼的影響是:函數(shù)入口處將當(dāng)前寄存器保存,使用m指定的寄存器組,函數(shù)退出時原寄存器組恢復(fù)。選不同的工作寄存器組,可方便實現(xiàn)寄存器組的現(xiàn)場保護(hù)。 共一百頁 再入: 屬性關(guān)鍵字reentrant將函數(shù)定義(dngy)為再入的,在C51中,普通函數(shù)(非再入的)不能遞歸調(diào)用, 只有再入函數(shù)才可被遞歸調(diào)用。 中斷服務(wù)

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論