單片機(jī)課程教案_第1頁(yè)
單片機(jī)課程教案_第2頁(yè)
單片機(jī)課程教案_第3頁(yè)
單片機(jī)課程教案_第4頁(yè)
單片機(jī)課程教案_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余46頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、第一章單片機(jī)基本知識(shí)第一節(jié)單片機(jī)的發(fā)展與應(yīng)用一、什么是單片機(jī)單片機(jī)即單片機(jī)微型計(jì)算機(jī),是將計(jì)算機(jī)主機(jī)(CPU、內(nèi)存和I/O接口)集成在一小塊硅片上的微型機(jī)。二、單片機(jī)的發(fā)展第一階段(19761978年):低性能單片機(jī)的探索階段。以Intel公司的MCS-48為代表,采用了單片結(jié)構(gòu),即在一塊芯片內(nèi)含有8位CPU、定時(shí)/計(jì)數(shù)器、并行I/O口、RAM和ROM等。主要用于工業(yè)領(lǐng)域。第二階段(19781982年):高性能單片機(jī)階段,這一類單片機(jī)帶有串行I/O口,8位數(shù)據(jù)線、16位地址線可以尋址的范圍達(dá)到64K字節(jié)、控制總線、較豐富的指令系統(tǒng)等。這類單片機(jī)的應(yīng)用范圍較廣,并在不斷的改進(jìn)和發(fā)展。第三階段(1

2、9821990年):16位單片機(jī)階段。16位單片機(jī)除CPU為16位外,片內(nèi)RAM和ROM容量進(jìn)一步增大,實(shí)時(shí)處理能力更強(qiáng),體現(xiàn)了微控制器的特征。例如Intel公司的MCS-96主振頻率為12M,片內(nèi)RAM為232字節(jié),ROM為8K字節(jié),中斷處理能力為8級(jí),片內(nèi)帶有10位A/D轉(zhuǎn)換器和高速輸入/輸出部件等。第四階段(1990年):微控制器的全面發(fā)展階段,各公司的產(chǎn)品在盡量兼容的同時(shí),向高速、強(qiáng)運(yùn)算能力、尋址范圍大以及小型廉價(jià)方面發(fā)展。三、單片機(jī)的應(yīng)用1、單片機(jī)在儀器儀表中的應(yīng)用2、單片機(jī)在機(jī)電一體化中的應(yīng)用3、單片機(jī)在智能接口和多機(jī)系統(tǒng)中的應(yīng)用4、單片機(jī)在生活中的應(yīng)用第二節(jié)單片機(jī)結(jié)構(gòu)MCS51單

3、片機(jī)的特點(diǎn)特點(diǎn)(1)一個(gè)8位微處理器CPU。(2)數(shù)據(jù)存儲(chǔ)器RAM和特殊功能寄存器SFR。(3)內(nèi)部程序存儲(chǔ)器ROM。(4)兩個(gè)定時(shí)/計(jì)數(shù)器,用以對(duì)外部事件進(jìn)行計(jì)數(shù),也可用作定時(shí)器。(5)四個(gè)8位可編程的I/O(輸入/輸出)并行端口,每個(gè)端口既可做輸入,也可做輸出。(6)一個(gè)串行端口,用于數(shù)據(jù)的串行通信。(7)中斷控制系統(tǒng)。(8)內(nèi)部時(shí)鐘電路。一、單片機(jī)內(nèi)部結(jié)構(gòu)二、CPU結(jié)構(gòu)P0P1P2P3TXDRXDINT0INT11)中央處理器(CPU)中央處理器是單片機(jī)的核心,完成運(yùn)算和控制功能。MCS-51的CPU能處理8位二進(jìn)制數(shù)或代碼。2)內(nèi)部數(shù)據(jù)存儲(chǔ)器(內(nèi)部RAM)8051芯片中共有256個(gè)RA

4、M單元,但其中后128單元被專用寄存器占用,能作為寄存器供用戶使用的只是前128單元,用于存放可讀寫的數(shù)據(jù)。因此通常所說(shuō)的內(nèi)部數(shù)據(jù)存儲(chǔ)器就是指前128單元,簡(jiǎn)稱內(nèi)部RAM。3)內(nèi)部程序存儲(chǔ)器(內(nèi)部ROM)8051共有4KB掩膜ROM,用于存放程序、原始數(shù)據(jù)或表格,因此,稱之為程序存儲(chǔ)器,簡(jiǎn)稱內(nèi)部ROM。4)定時(shí)/計(jì)數(shù)器8051共有兩個(gè)16位的定時(shí)/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)功能,并以其定時(shí)或計(jì)數(shù)結(jié)果對(duì)計(jì)算機(jī)進(jìn)行控制。5)并行I/O口MCS-51共有4個(gè)8位的I/O口(P0、P1、P2、P3),以實(shí)現(xiàn)數(shù)據(jù)的并行輸入/輸出。在實(shí)訓(xùn)中我們已經(jīng)使用了P1口,通過(guò)P1口連接8個(gè)發(fā)光二極管。三、單片機(jī)存儲(chǔ)器

5、結(jié)構(gòu)1、MCS51單片機(jī)存儲(chǔ)器的特點(diǎn)MCS-51單片機(jī)的芯片內(nèi)部有RAM和ROM兩類存儲(chǔ)器,即所謂的內(nèi)部RAM和內(nèi)部ROMMCS-51內(nèi)部程序存儲(chǔ)器MCS-51的程序存儲(chǔ)器用于存放編好的程序和表格常數(shù)。8051片內(nèi)有4KB的ROM,8751片內(nèi)有4KB的EPROM,8031片內(nèi)無(wú)程序存儲(chǔ)器。MCS-51的片外最多能擴(kuò)展64KB程序存儲(chǔ)器,片內(nèi)外的ROM是統(tǒng)一編址的。如端保持高電平,8051的程序計(jì)數(shù)器PC在0000H0FFFH地址范圍內(nèi)(即前4KB地址)是執(zhí)行片內(nèi)ROM中的程序,當(dāng)PC在1000HFFFFH地址范圍時(shí),自動(dòng)執(zhí)行片外程序存儲(chǔ)器中的程序;當(dāng)保持低電平時(shí),只能尋址外部程序存儲(chǔ)器,片外

6、存儲(chǔ)器可以從0000H開(kāi)始編址。MCS-51的程序存儲(chǔ)器中有些單元具有特殊功能,使用時(shí)應(yīng)予以注意。其中一組特殊單元是0000H0002H。系統(tǒng)復(fù)位后,(PC)=0000H,單片機(jī)從0000H單元開(kāi)始取指令執(zhí)行程序。如果程序不從0000H單元開(kāi)始,應(yīng)在這三個(gè)單元中存放一條無(wú)條件轉(zhuǎn)移指令,以便直接轉(zhuǎn)去執(zhí)行指定的程序。還有一組特殊單元是0003H002AH,共40個(gè)單元。這40個(gè)單元被均勻地分為5段,作為5個(gè)中斷源的中斷地址區(qū)。其中:0003H000AH外部中斷0中斷地址區(qū)000BH0012H定時(shí)/計(jì)數(shù)器0中斷地址區(qū)0013H001AH外部中斷1中斷地址區(qū)001BH0022H定時(shí)/計(jì)數(shù)器1中斷地址區(qū)

7、0023H002AH串行中斷地址區(qū)中斷響應(yīng)后,按中斷種類,自動(dòng)轉(zhuǎn)到各中斷區(qū)的首地址去執(zhí)行程序,因此在中斷地址區(qū)中理應(yīng)存放中斷服務(wù)程序。但通常情況下,8個(gè)單元難以存下一個(gè)完整的中斷服務(wù)程序,因此通常也是從中斷地址區(qū)首地址開(kāi)始存放一條無(wú)條件轉(zhuǎn)移指令,以便中斷響應(yīng)后,通過(guò)中斷地址區(qū),再轉(zhuǎn)到中斷服務(wù)程序的實(shí)際入口地址。MCS-51內(nèi)部數(shù)據(jù)存儲(chǔ)器內(nèi)部數(shù)據(jù)存儲(chǔ)器低128單元8051的內(nèi)部RAM共有256個(gè)單元,通常把這256個(gè)單元按其功能劃分為兩部分:低128單元(單元地址00H7FH)和高128單元(單元地址80HFFH)。如圖所示為低128單元的配置圖。寄存器區(qū)8051共有4組寄存器,每組8個(gè)寄存單元

8、(各為8),各組都以R0R7作寄存單元編號(hào)。寄存器常用于存放操作數(shù)中間結(jié)果等。由于它們的功能及使用不作預(yù)先規(guī)定,因此稱之為通用寄存器,有時(shí)也叫工作寄存器。4組通用寄存器占據(jù)內(nèi)部RAM的00H1FH單元地址。在任一日刻,CPU只能使用其中的一組寄存器,并且把正在使用的那組寄存器稱之為當(dāng)前寄存器組。到底是哪一組,由程序狀態(tài)字寄存器PSW中RS1、RS0位的狀態(tài)組合來(lái)決定。通用寄存器為CPU提供了就近存儲(chǔ)數(shù)據(jù)的便利,有利于提高單片機(jī)的運(yùn)算速度。此外,使用通用寄存器還能提高程序編制的靈活性,因此,在單片機(jī)的應(yīng)80H7FH30H2FH20H1FH00H特殊功能寄存器OH訓(xùn).頻頻頻項(xiàng)8H0HFEDBBAA

9、9988H80H通用RAM區(qū)位尋,址區(qū)工作寄存器區(qū)內(nèi)部數(shù)據(jù)存儲(chǔ)器(a)特殊功能寄存器中位尋址I-A,FFFFH0000HFFFFH外部RAM(I/O口地址)外部數(shù)據(jù)存儲(chǔ)器(b)外部ROM1000H程序存儲(chǔ)器(c)用編程中應(yīng)充分利用這些寄存器,以簡(jiǎn)化程序設(shè)計(jì),提高程序運(yùn)行速度。位尋址區(qū)內(nèi)部RAM的20H2FH單元,既可作為一般RAM單元使用,進(jìn)行字節(jié)操作,也可以對(duì)單元中每一位進(jìn)行位操作,因此把該區(qū)稱之為位尋址區(qū)。位尋址區(qū)共有16個(gè)RAM單元,計(jì)128位,地址為00H7FH。MCS-51具有布爾處理機(jī)功能,這個(gè)位尋址區(qū)可以構(gòu)成布爾處理機(jī)的存儲(chǔ)空間。這種位尋址能力是MCS-51的一個(gè)重要特點(diǎn)。用戶R

10、AM區(qū)在內(nèi)部RAM低128單元中,通用寄存器占去32個(gè)單元,位尋址區(qū)占去16個(gè)單元,剩下80個(gè)單元,這就是供用戶使用的一般RAM區(qū),其單元地址為30H7FH。對(duì)用戶RAM區(qū)的使用沒(méi)有任何規(guī)定或限制,但在一般應(yīng)用中常把堆棧開(kāi)辟在此區(qū)中。內(nèi)部數(shù)據(jù)存儲(chǔ)器高128單元內(nèi)部RAM的高128單元是供給專用寄存器使用的,其單元地址為80HFFH。因這些寄存器的功能已作專門規(guī)定,故稱之為專用寄存器(SpecialFunctionRegister),也可稱為特殊功能寄存器。2、特殊功能存儲(chǔ)器SFR8051共有21個(gè)專用寄存器,現(xiàn)把其中部分寄存器簡(jiǎn)單介紹如下:程序計(jì)數(shù)器(PCProgramCounter)。在實(shí)訓(xùn)

11、中,我們已經(jīng)知道PC是一個(gè)16位的計(jì)數(shù)器,它的作用是控制程序的執(zhí)行順序。其內(nèi)容為將要執(zhí)行指令的地址,尋址范圍達(dá)64KB。PC有自動(dòng)加1功能,從而實(shí)現(xiàn)程序的順序執(zhí)行。PC沒(méi)有地址,是不可尋址的,因此用戶無(wú)法對(duì)它進(jìn)行讀寫,但可以通過(guò)轉(zhuǎn)移、調(diào)用、返回等指令改變其內(nèi)容,以實(shí)現(xiàn)程序的轉(zhuǎn)移。因地址不在SFR(專用寄存器)之內(nèi),一般不計(jì)作專用寄存器。累加器(ACC-Accumulator)o累加器為8位寄存器,是最常用的專用寄存器,功能較多,地位重要。它既可用于存放操作數(shù),也可用來(lái)存放運(yùn)算的中間結(jié)果。MCS-51單片機(jī)中大部分單操作數(shù)指令的操作數(shù)就取自累加器,許多雙操作數(shù)指令中的一個(gè)操作數(shù)也取自累加器。B寄

12、存器。B寄存器是一個(gè)8位寄存器,主要用于乘除運(yùn)算。乘法運(yùn)算時(shí),B存乘數(shù)。乘法操作后,乘積的高8位存于B中,除法運(yùn)算時(shí),B存除數(shù)。除法操作后,余數(shù)存于B中。此外,B寄存器也可作為一般數(shù)據(jù)寄存器使用。程序狀態(tài)字(PSWProgramStatusWord)。程序狀態(tài)字是一個(gè)8位寄存器,用于存放程序運(yùn)行中的各種狀態(tài)信息。其中有些位的狀態(tài)是根據(jù)程序執(zhí)行結(jié)果,由硬件自動(dòng)設(shè)置的,而有些位的狀態(tài)則使用軟件方法設(shè)定。PSW的位狀態(tài)可以用專門指令進(jìn)行測(cè)試,也可以用指令讀出。一些條件轉(zhuǎn)移指令將根據(jù)PSW有些位的狀態(tài),進(jìn)行程序轉(zhuǎn)移。PSW的各位定義如下:PSW位地D7HD6HD5HD4HD3HD2HD1H)0H字節(jié)地

13、址CYACF0RS1RS0OVF1F除PSW.1位保留未用外,其余各位的定義及使用如下:CY(PSW.7)進(jìn)位標(biāo)志位。CY是PSW中最常用的標(biāo)志位。其功能有二:一是存放算術(shù)運(yùn)算的進(jìn)位標(biāo)志,在進(jìn)行加或減運(yùn)算時(shí),如果操作結(jié)果的最高位有進(jìn)位或借位時(shí),CY由硬件置“1;否則清"0;二是在位操作中,作累加位使用。位傳送、位與位或等位操作,操作位之一固定是進(jìn)位標(biāo)志位。AC(PSW.6)輔助進(jìn)位標(biāo)志位。在進(jìn)行加減運(yùn)算中,當(dāng)?shù)?位向高4位進(jìn)位或借位時(shí),AC由硬件置“1;否則AC位被清“0:在BCD碼調(diào)整中也要用到AC位狀態(tài)。F0(PSW.5)用戶標(biāo)志位。這是一個(gè)供用戶定義的標(biāo)志位,需要利用軟件方法置

14、位或復(fù)位,用以控制程序的轉(zhuǎn)向。RS1和RS0(PSW.4,PSW.3)寄存器組選擇位。它們被用于選擇CPU當(dāng)前使用的通用寄存器組。通用寄存器共有4組,其對(duì)應(yīng)關(guān)系如下:00:0組01:1組10:2組11:3組這兩個(gè)選擇位的狀態(tài)是由軟件設(shè)置的,被選中的寄存器組即為當(dāng)前通用寄存器組。但當(dāng)單片機(jī)上電或復(fù)位后,RS1RS0=00oOV(PSW.2)溢出標(biāo)志位。在帶符號(hào)數(shù)加減運(yùn)算中,OV=1表示加減運(yùn)算超出了累加器A所能表示的符號(hào)數(shù)有效范圍(-128+127),即產(chǎn)生了溢出,因此運(yùn)算結(jié)果是錯(cuò)誤的,否則,OV=0表示運(yùn)算正確,即無(wú)溢出產(chǎn)生。P(PSW.0)奇偶標(biāo)志位。表明累加器A中內(nèi)容的奇偶性。如果A中有奇

15、數(shù)個(gè)"1;則P置”1;否則置“0:凡是改變累加器A中內(nèi)容的指令均會(huì)影響P標(biāo)志位。此標(biāo)志位對(duì)串行通信中的數(shù)據(jù)傳輸有重要的意義。在串行通信中常采用奇偶校驗(yàn)的辦法來(lái)校驗(yàn)數(shù)據(jù)傳輸?shù)目煽啃?。?shù)據(jù)指針(DPTR)。數(shù)據(jù)指針為16位寄存器。編程時(shí),DPTR既可以按16位寄存器使用,也可以按兩個(gè)8位寄存器分開(kāi)使用,即:DPHDPTR高位字節(jié),DPLDPTR低位字節(jié)。DPTR通常在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)作地址指針使用。由于外部數(shù)據(jù)存儲(chǔ)器的尋址范圍為64KB,故把DPTR設(shè)計(jì)為16位。堆棧指針(SPStackPointer)。堆棧是一個(gè)特殊的存儲(chǔ)區(qū),用來(lái)暫存數(shù)據(jù)和地址,它是按先進(jìn)后出”的原則存取數(shù)據(jù)的。堆

16、棧共有兩種操作:進(jìn)棧和出棧。由于MCS-51單片機(jī)的堆棧設(shè)在內(nèi)部RAM中,因此SP是一個(gè)8位寄存器。系統(tǒng)復(fù)位后,SP的內(nèi)容為07H,從而復(fù)位后堆棧實(shí)際上是從08H單元開(kāi)始的。但08H1FH單元分別屬于工作寄存器13區(qū),如程序要用到這些區(qū),最好把SP值改為1FH或更大的值。對(duì)專用寄存器的字節(jié)尋址問(wèn)題作如下幾點(diǎn)說(shuō)明:(1)21個(gè)可字節(jié)尋址的專用寄存器是不連續(xù)地分散在內(nèi)部RAM高128單元之中,盡管還余有許多空閑地址,但用戶并不能使用。(2)程序計(jì)數(shù)器PC不占據(jù)RAM單元,它在物理上是獨(dú)立的,因此是不可尋址的寄存器。(3)對(duì)專用寄存器只能使用直接尋址方式,書寫時(shí)既可使用寄存器符號(hào),也可使用寄存器。四

17、、輸入輸出端口單片機(jī)芯片內(nèi)還有一項(xiàng)主要內(nèi)容就是并行I/O口。MCS-51共有4個(gè)8位的并行I/O口,分別記作P0、P1、P2、P3。每個(gè)口都包含一個(gè)鎖存器、一個(gè)輸出驅(qū)動(dòng)器和輸入緩沖器。實(shí)際上,它們已被歸入專用寄存器之列,并且具有字節(jié)尋址和位尋址功能。在訪問(wèn)片外擴(kuò)展存儲(chǔ)器時(shí),低8位地址和數(shù)據(jù)由P0分時(shí)傳送,高8位地址由P2口傳送。在無(wú)片外擴(kuò)展存儲(chǔ)器的系統(tǒng)中,這4個(gè)口的每一位均可作為雙向的I/O端口使用。五、80C51單片機(jī)的引腳功能MCS-51是標(biāo)準(zhǔn)的40引腳雙列直插式集成電路芯片,引腳排列請(qǐng)參見(jiàn)圖P0.0,P0.7:P0口8位雙向口線。P1.0,P1.7:P1口8位雙向口線。P2.0八,P2.

18、7:P2口8位雙向口線。P3.0,,P3.7:P3口8位雙向口線。ALE:地址鎖存控制信號(hào)。在系統(tǒng)擴(kuò)展時(shí),ALE用于控制把P0口輸出的低8位地址鎖存起來(lái),以實(shí)現(xiàn)低位地址和數(shù)據(jù)的隔離。此外,由于ALE是以晶振1/6的固定頻率輸出的正脈沖,因此,可作為外部時(shí)鐘或外部定時(shí)脈沖使用。PSEN:外部程序存儲(chǔ)器讀選通信號(hào)。在讀外部ROM時(shí),PSEN有效(低電平),以實(shí)現(xiàn)外部ROM單元的讀操作。123P1.0P1.1P1.2VC空P0.P0.0-39oQ4P1.3P0.2-375P1.4P0.336335透6789P1.5P1.61P1.75P0.P0.P0.rst/vPdP0.浮10RXDP3.0EA/V

19、PP3111TXDP3.1AL麗C30vOG12INT0P3.2PSE嗯13INT1P3.3P2.14T0P3.4P2.皿1617T1P3.5WRP3.6RDP3.7P2.P2.P2.磕318XTAL2P2.1920XTAL1VSSP2.P2.逐EA:訪問(wèn)程序存儲(chǔ)控制信號(hào)。當(dāng)信號(hào)為低電平時(shí),對(duì)ROM的讀操作限定在外部程序存儲(chǔ)器;當(dāng)信號(hào)為高電平時(shí),對(duì)ROM的讀操作是從內(nèi)部程序存儲(chǔ)器開(kāi)始,并可延至外部程序存儲(chǔ)器。RST:復(fù)位信號(hào)。當(dāng)輸入的復(fù)位信號(hào)延續(xù)兩個(gè)機(jī)器周期以上的高電平時(shí)即為有效,用以完成單片機(jī)的復(fù)位初始化操作。XTAL1和XTAL2:外接晶體引線端。當(dāng)使用芯片內(nèi)部時(shí)鐘時(shí),此二引線端用于外接石

20、英晶體和微調(diào)電容;當(dāng)使用外部時(shí)鐘時(shí),用于接外部時(shí)鐘脈沖信號(hào)。VSS:地線。VCC:+5V電源。以上是MCS-51單片機(jī)芯片40條引腳的定義及簡(jiǎn)單功能說(shuō)明,讀者可以對(duì)照實(shí)訓(xùn)電路找到相應(yīng)引腳,在電路中查看每個(gè)引腳的連接使用。P3口線的第二功能。P3的8條口線都定義有第二功能六、時(shí)鐘電路在MCS-51芯片內(nèi)部有一個(gè)高增益反相放大器,其輸入端為芯片引腳XTAL1,其輸出端為引腳XTAL2。而在芯片白外部,XTAL1和XTAL2之間跨接晶體振蕩器和微調(diào)電容,從而構(gòu)成一個(gè)穩(wěn)定的自激振蕩器,這就是單片機(jī)的時(shí)鐘電路。XTAL1IX,2巨CYMCS-51XTAL2外部時(shí)鐘源MCS-51XTAL2XTAL1Vss

21、1 .振蕩周期:為單片機(jī)提供時(shí)鐘信號(hào)的振蕩源的周期。2 .時(shí)鐘周期:是振蕩源信號(hào)經(jīng)二分頻后形成的時(shí)鐘脈沖信號(hào)。3 .機(jī)器周期:通常將完成一個(gè)基本操作所需的時(shí)間稱為機(jī)器周期。4 .指令周期:是指CPU執(zhí)行一條指令所需要的時(shí)間。一個(gè)指令周期通常含有14個(gè)機(jī)器周期。機(jī)器周期指令周期機(jī)器周期SiXTAL2(OSC)S2S3S4S5|PiP2PiP2PiFP2P1|P2S6Pi|P2SiS2S3S4S5S6Pi|P2Pi|P2|Pi|P2|Pi|P2|Pi|P2|Pi|P2振蕩周期時(shí)鐘周期Pi2七、復(fù)位電路單片機(jī)復(fù)位是使CPU和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開(kāi)始工作,例如復(fù)位

22、后PC=0000H使單片VCCVCCik(a)(b)22機(jī)從第一個(gè)單元取指令。實(shí)訓(xùn)中已經(jīng)看出,無(wú)論是在單片機(jī)剛開(kāi)始接上電源時(shí),還是斷電后或者發(fā)生故障后都要復(fù)位,所以我們必須弄清楚MCS-5i型單片機(jī)復(fù)位的條件、復(fù)位電路和復(fù)位后狀態(tài)。第三節(jié)單片機(jī)開(kāi)發(fā)系統(tǒng)、單片機(jī)開(kāi)發(fā)系統(tǒng)的組成與功能i.單片機(jī)系統(tǒng)的組成2.單片機(jī)開(kāi)發(fā)系統(tǒng)的功能在線仿真功能調(diào)試功能3)輔助設(shè)計(jì)功能4)程序固化功能二、單片機(jī)開(kāi)發(fā)系統(tǒng)的調(diào)試1 .硬件調(diào)試1)常見(jiàn)的硬件故障2)硬件調(diào)試方法2 .軟件調(diào)試三、單片機(jī)開(kāi)發(fā)系統(tǒng)舉例1 .單片機(jī)開(kāi)發(fā)系統(tǒng)的連接2 .工具軟件的安裝3 .輸入、編輯匯編語(yǔ)言源程序4 .匯編源程序5 .用戶程序的裝載第二

23、章單片機(jī)指令系統(tǒng)第一節(jié)指令簡(jiǎn)介和格式采用助記符表示的匯編語(yǔ)言指令格式如下:操作碼操作數(shù)或操作數(shù)地址;注釋標(biāo)號(hào)是程序員根據(jù)編程需要給指令設(shè)定的符號(hào)地址,可有可無(wú);標(biāo)號(hào)由18個(gè)字符組成,第一個(gè)字符必須是英文字,不能是數(shù)字或其它符號(hào);標(biāo)號(hào)后必須用冒號(hào)。操作碼表示指令的操作種類,如MOV表示數(shù)據(jù)傳送操作,ADD表示加法操作等。操作數(shù)或操作數(shù)地址表示參加運(yùn)算的數(shù)據(jù)或數(shù)據(jù)的有效地址。操作數(shù)一般有以下幾種形式:沒(méi)有操作數(shù)項(xiàng),操作數(shù)隱含在操作碼中,如RET指令;只有一個(gè)操作數(shù),如CPLA指令;有兩個(gè)操作數(shù),如MOVA,#00H指令,操作數(shù)之間以逗號(hào)相隔;有三個(gè)操作數(shù),如CJNEA,#00H,NEXT指令,操作

24、數(shù)之間也以逗號(hào)相隔。注釋是對(duì)指令的解釋說(shuō)明,用以提高程序的可讀性;注釋前必須加分號(hào)。第二節(jié)尋址方式尋找操作數(shù)地址的方式稱為尋址方式。1 .寄存器尋址寄存器尋址是指將操作數(shù)存放于寄存器中,寄存器包括工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR等。例如,指令MOVR1,A的操作是把累加器A中的數(shù)據(jù)傳送到寄存器R1中,其操作數(shù)存放在累加器A中,所以尋址方式為寄存器尋址。如果程序狀態(tài)寄存器PSW的RS1RS0=01(選中第二組工作寄存器,對(duì)應(yīng)地址為08H0FH),設(shè)累加器A的內(nèi)容為20H,則執(zhí)行MOVR1,A指令后,內(nèi)部RAM09H單元的值就變?yōu)?0H。2 .直接尋址MCS-51直接

25、尋址是指把存放操作數(shù)的內(nèi)存單元的地址直接寫在指令中。在單片機(jī)中,可以直接尋址的存儲(chǔ)器主要有內(nèi)部RAM區(qū)和特殊功能寄存器SFR區(qū)。例如,指令MOVA,3AH執(zhí)行的操作是將內(nèi)部RAM中地址為3AH的單元內(nèi)容傳送到累加器A中,其操作數(shù)3AH就是存放數(shù)據(jù)的單元地址,因此該指令是直接尋址。3 .立即數(shù)尋址立即數(shù)尋址是指將操作數(shù)直接寫在指令中。例如,指令MOVA,#3AH執(zhí)行的操作是將立即數(shù)3AH送到累加器A中,該指令就是立即數(shù)尋址。4 .寄存器間接尋址寄存器間接尋址是指將存放操作數(shù)的內(nèi)存單元的地址放在寄存器中,指令中只給出該寄存器。執(zhí)行指令時(shí),首先根據(jù)寄存器的內(nèi)容,找到所需要的操作數(shù)地址,再由該地址找到

26、操作數(shù)并完成相應(yīng)操作。在MCS-51指令系統(tǒng)中,用于寄存器間接尋址的寄存器有R0、R1和DPTR,稱為寄存器間接尋址寄存器。設(shè)R0=3AH,內(nèi)部RAM3AH中的值是65H,則指令MOVA,R0的執(zhí)行結(jié)果是累加器A的值為65H。5 .變址尋址變址尋址是指將基址寄存器與變址寄存器的內(nèi)容相加,結(jié)果作為操作數(shù)的地址。DPTR或PC是基址寄存器,累加器A是變址寄存器。該類尋址方式主要用于查表操作。例如,指令MOVCA,A+DPTR執(zhí)行的操作是將累加器A和基址寄存器DPTR的內(nèi)容相加,相加結(jié)果作為操作數(shù)存放的地址,再將操作數(shù)取出來(lái)送到累加器A中。設(shè)累加器A=02H,DPTR=0300H,外部ROM中,03

27、02H單元的內(nèi)容是55H,則指令MOVCA,A+DPTR的執(zhí)行結(jié)果是累加器A的內(nèi)容為55H。6 .相對(duì)尋址相對(duì)尋址是指程序計(jì)數(shù)器PC的當(dāng)前內(nèi)容與指令中的操作數(shù)相加,其結(jié)果作為跳轉(zhuǎn)指令的轉(zhuǎn)移地址(也稱目的地址)。該類尋址方式主要用于跳轉(zhuǎn)指令。例如,指令SJMP54H執(zhí)行的操作是將PC當(dāng)前的內(nèi)容與54H相加,結(jié)果再送回PC中,成為下一條將要執(zhí)行指令的地址。設(shè)指令SJMP54H的機(jī)器碼80H54H存放在2000H處,當(dāng)執(zhí)行到該指令時(shí),先從2000H和2001H單元取出指令,PC自動(dòng)變?yōu)?002H;再把PC的內(nèi)容與操作數(shù)54H相加,形成目標(biāo)地址2056H,再送回PC,使得程序跳轉(zhuǎn)到2056H單元繼續(xù)執(zhí)

28、行。7 .位尋址位尋址是指按位進(jìn)行的尋址操作,而上述介紹的指令都是按字節(jié)進(jìn)行的尋址操作。MCS-51單片機(jī)中,操作數(shù)不僅可以按字節(jié)為單位進(jìn)行操作,也可以按位進(jìn)行操作。當(dāng)我們把某一位作為操作數(shù)時(shí),這個(gè)操作數(shù)的地址稱為位地址。位尋址區(qū)包括專門安排在內(nèi)部RAM中的兩個(gè)區(qū)域:一是內(nèi)部RAM的位尋址區(qū),地址范圍是20H2FH,共16個(gè)RAM單元,位地址為00H7FH;二是特殊功能寄存器SFR中有11個(gè)寄存器可以位尋址,參見(jiàn)有關(guān)章節(jié)中位地址定義。第三節(jié)指令系統(tǒng)MCS-51單片機(jī)指令系統(tǒng)包括111條指令,按功能可以劃分為以下5類數(shù)據(jù)傳送指令(29條)算術(shù)運(yùn)算指令(24條)邏輯運(yùn)算指令(24條)控制轉(zhuǎn)移指令(

29、17條)位操作指令(17條)二、數(shù)據(jù)傳送類指令數(shù)據(jù)傳送指令是MCS-51單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)中使用最頻繁的指令,包括內(nèi)部RAM、寄存器、外部RAM以及程序存儲(chǔ)器之間的數(shù)據(jù)傳送。數(shù)據(jù)傳送操作是指把數(shù)據(jù)從源地址傳送到目的地址,源地址內(nèi)容不變。1.以累加器A為目的操作數(shù)的指令MOVA,#data;A#dataMOVA,Rn;n=07,A(Rn)MOVA,RiMOVA,directi=0,1,A-(Ri)A(Rn)direct為內(nèi)部RAM或SFR地址2.以Rn為目的操作數(shù)的指令MOVRn,A;Rn-(A),n=07MOVRn,direct;Rn-(direct)MOVRn,#data;Rn-#dat

30、a3.以直接地址為目的操作數(shù)的指令MOVdirect,A;direct令-(A)MOVdirect,Rn;direct一(Rn),n=07MOVdirect,Ri;direct(Ri),i=0,1MOVdirect,direct;direct<一(direct)MOVdirect,#data;direct#data4.以寄存器間接地址為目的操作數(shù)指令MOVRi,A;(Ri)-(A),i=0,1MOVRi,direct;(Ri)一(direct)MOVRi,#data;(Ri)#data字節(jié)交換指令XCHA,Rn(A)-(Ri)XCHA,direct(A)<一(direct)XCHA

31、,Ri(A)<一一(Ri)半字節(jié)交換指令XCHDA,Ri;(A)0-3(Ri)0-3累加器A與外部數(shù)據(jù)傳輸指令MOVXA,DPTR;A(DPTR)地址范圍64KMOVXA,Ri;A(Ri)地址范圍0255MOVXDPTR,A;(DPTR)(A)MOVXRi,A;(Ri)(A)查表指令1) MOVCA,A+DPTR;A-(A)+(DPTR)2) MOVCA,A+PC;A-(A)+(pc)三、算術(shù)運(yùn)算指令加法指令(Addtion)ADDA,Rn;A-(A)+(Rn)ADDA,Ri;A-(A)+(Ri)ADDA,direct;A-(A)+(direct)ADDA,ddata;A-(A)+#da

32、ta帶進(jìn)位加法指令A(yù)DDCA,Rn;A-(A)+(Rn)+(Cy)ADDCA,Ri;A-(A)+(Ri)+(Cy)ADDCA,direct;A-(A)+(direct)+(Cy)ADDCA,#data;A-(A)+#data+(Cy)加1指令I(lǐng)NCA;A-(A)+1INCRi;Ri(A)+1INCdirect;direct(direct)+1INCRi;(Ri)一(Ri)+1INCDPTR;DPTR(DPTR)+1十進(jìn)制調(diào)整指令DAA帶借位減法指令(Subtraction)SUBBA,Rn;A-(A)-(Rn)-(Cy)SUBBA,Ri;A-(A)-(Ri)-(Cy)SUBBA,direct;

33、A-(A)-(direct)-(Cy)SUBBA,#data;A-(A)-#data-(Cy)減1指令(Decreases)DECA;A-(A)-1DECRi;Ri(A)1DECdirect;direct(direct)1DECRi;(Ri)一(Ri)-1乘法指令(Multiplication)MULAB除法指令(Division)DIVAB四、邏輯運(yùn)算及移位類指令簡(jiǎn)單邏輯操作指令CLRAA-0”CPLAA-ASWAPA;A03A47左循環(huán)指令(RotateAccumulatorLeft)RLAflag)帶進(jìn)位左循環(huán)指令(RotateAccumulatorLeftthroughCarryRLC

34、A右循環(huán)指令(RotateAccumulatorRight)RRA帶進(jìn)位右循環(huán)指令(RotateARightwithC)RRCA邏輯與指令A(yù)NLA,RnANLA,directANLA,#dataANLA,RiANLdirect,AANLdirect,ddata邏輯或指令ORLA,RnORLA,directORLA,ddataORLA,RiORLdirect,AORLdirect,ddata邏輯異或指令XRLA,RnXRLA,directXRLA,ddataXRLA,RiXRLdirect,AXRLdirect,#data五、控制轉(zhuǎn)移類指令跳轉(zhuǎn)指令短跳指令A(yù)JMPaddr11PCaddr11,跳

35、轉(zhuǎn)范圍長(zhǎng)跳指令LJMPaddr16PCaddr16,跳轉(zhuǎn)范圍間接跳轉(zhuǎn)指令JMPA+DPTRPC(A)+(DPTR)相對(duì)轉(zhuǎn)移指令SJMPrel2k64k條件轉(zhuǎn)移指令JZrelJNZrelJCrelJNCrelJBbit,JNBbit,JBCbit,relrelrel(A)=0,轉(zhuǎn)移(A)w0,轉(zhuǎn)移;如C=1,轉(zhuǎn)移;如C=0,轉(zhuǎn)移;如bit=1,轉(zhuǎn)移;如bit=0,轉(zhuǎn)移;如bit=1,轉(zhuǎn)移并bit=0比較不相等轉(zhuǎn)移指令CJNEA,#data,rel;(A)=#data,繼續(xù)C0(A)>#data,車專C0(A)v#data,轉(zhuǎn)C1特點(diǎn):只有時(shí),C1CJNEA,direct,relCJNERn

36、,#data,relCJNERi,#data,rel減1不為0轉(zhuǎn)移指令DJNZRn,rel;DJNZdirect,rel例:延時(shí)子程序delay:MOVR7,#03Hdelay。:MOVR6,#19Hdelay1:DJNZR6,delaylDJNZR7,delay0RET調(diào)用子程序指令短調(diào)用指令A(yù)CALLaddrll長(zhǎng)調(diào)用指令LCALLaddr16子程序返回指令RET中斷返回指令RETI空操作指令NOP六、位操作類指令數(shù)據(jù)位傳送指令MOVC,bit;bit可直接尋址位C(bit)MOVbit,C;C進(jìn)位位(bit)-C位變量修改指令CLRC;將C=0CLRbitCPLC;將C求反再存入CCPL

37、bitSETBCSETBbit位變量邏輯指令A(yù)NLC,bit;將bit求反再存入bit;將C=1;(bit)-1ANLC,bitORLC,bitORLC,bit第三章匯編諦言程序設(shè)計(jì)第一節(jié)匯編語(yǔ)言偽指令1 .定位偽指令ORG2 .定義字節(jié)數(shù)據(jù)偽指令DB3 .定義字?jǐn)?shù)據(jù)偽指令DW4 .符號(hào)定義偽指令EQU5 .數(shù)據(jù)賦值偽指令DATA6 .匯編結(jié)束偽指令END第二節(jié)匯編語(yǔ)言程序設(shè)計(jì)過(guò)程1 .分析任務(wù)2 .確定算法3 .畫程序流程圖4 .分配資源5 .編寫代碼6 .程序修改與調(diào)試一、順序結(jié)構(gòu)程序設(shè)計(jì)二、分支程序設(shè)計(jì)三、循環(huán)程序設(shè)計(jì)四、子程序設(shè)計(jì)(各種例題見(jiàn)書或課件)第二節(jié)應(yīng)用程序舉例從實(shí)用角度,分類

38、給出一些在單片機(jī)應(yīng)用系統(tǒng)軟件設(shè)計(jì)中經(jīng)常用到的匯編語(yǔ)言子程序?qū)嵗? .代碼轉(zhuǎn)換程序2 .算數(shù)運(yùn)算子程序3 .查找、排序子程序第四章定時(shí)與中斷系統(tǒng)第一節(jié)中斷概述一、中斷的概念中斷是通過(guò)硬件來(lái)改變CPU的運(yùn)行方向的。計(jì)算機(jī)在執(zhí)行程序的過(guò)程中,當(dāng)出現(xiàn)CPU以外的某種情況時(shí),由服務(wù)對(duì)象向CPU發(fā)出中斷請(qǐng)求信號(hào),要求CPU暫時(shí)中斷當(dāng)前程序的執(zhí)行而轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序,待處理程序執(zhí)行完畢后,再繼續(xù)執(zhí)行原來(lái)被中斷的程序。這種程序在執(zhí)行過(guò)程中由于外界的原因而被中間打斷的情況稱為中斷”。與中斷有關(guān)的寄存器有4個(gè),分別為中斷源寄存器TCON和SCON、中斷允許控制寄存器IE和中斷優(yōu)先級(jí)控制寄存器IP;中斷源有5

39、個(gè),分別為外部中斷0請(qǐng)求、外部中斷1請(qǐng)求、定時(shí)器0溢出中斷請(qǐng)求TF0、定時(shí)器1溢出中斷請(qǐng)求TF1和串行中斷請(qǐng)求RI或TI。5個(gè)中斷源的排列順序由中斷優(yōu)先級(jí)控制寄存器IP和順序查詢邏輯電路共同決定,5個(gè)中斷源分別對(duì)應(yīng)5個(gè)固定的中斷入口地址。第二節(jié)單片機(jī)的中斷系統(tǒng)、單片機(jī)的中斷系統(tǒng)1.中斷源和中斷標(biāo)志中斷源外部中斷0請(qǐng)求,由P3.2腳輸入。通過(guò)IT0腳(TCON.0)來(lái)決定是低電平有效還是下跳變有效。一旦輸入信號(hào)有效,就向CPU申請(qǐng)中斷,并建立IE0標(biāo)志。(2)外部中斷1請(qǐng)求,由P3.3腳輸入。通過(guò)IT1腳TCON.2)來(lái)決定是低電平有效還是下跳變有效。一旦輸入信號(hào)有效,就向CPU申請(qǐng)中斷,并建立

40、IE1標(biāo)志。TF0:定時(shí)器T0溢出中斷請(qǐng)求。當(dāng)定時(shí)器0產(chǎn)生溢出時(shí),定時(shí)器0中斷請(qǐng)求標(biāo)志位(TCON.5)置位(由硬件自動(dòng)執(zhí)行),請(qǐng)求中斷處理。(4) TF1:定時(shí)器1溢出中斷請(qǐng)求。當(dāng)定時(shí)器1產(chǎn)生溢出時(shí),定時(shí)器1中斷請(qǐng)求標(biāo)志位(TCON.7)置位(由硬件自動(dòng)執(zhí)行),請(qǐng)求中斷處理。(5) RI或TI:串行中斷請(qǐng)求。當(dāng)接收或發(fā)送完一串行幀時(shí),內(nèi)部串行口中斷請(qǐng)求標(biāo)志位RI(SCON.0)或TI(SCON.1)置位(由硬件自動(dòng)執(zhí)行),請(qǐng)求中斷。中斷標(biāo)志TCON寄存器中的中斷標(biāo)志TCON為定時(shí)器0和定時(shí)器1的控制寄存器,同時(shí)也鎖存定時(shí)器0和定時(shí)器1的溢出中斷標(biāo)志及外部中斷和的中斷標(biāo)志等。與中斷有關(guān)位如下:

41、(1) TCON.7TF1:定時(shí)器1的溢出中斷標(biāo)志。T1被啟動(dòng)計(jì)數(shù)后,從初值做加1計(jì)數(shù),計(jì)滿溢出后由硬件置位TF1,同時(shí)向CPU發(fā)出中斷請(qǐng)求,此標(biāo)志一直保持到CPU響應(yīng)中斷后才由硬件自動(dòng)清0。也可由軟件查詢?cè)摌?biāo)志,并由軟件清0。(2) TCON.5TF0:定時(shí)器0溢出中斷標(biāo)志。其操作功能與TF1相同。(3) TCON.3IE1:中斷標(biāo)志。IE1=1,外部中斷1向CPU申請(qǐng)中斷。(4) TCON.2IT1:中斷觸發(fā)方式控制位。當(dāng)IT1=0時(shí),外部中斷1控制為電平觸發(fā)方式。(5) TCON.1IE0:中斷標(biāo)志。其操作功能與IE1相同。(6) TCON.0IT0:中斷觸發(fā)方式控制位。其操作功能與IT

42、1相同。SCON寄存器中的中斷標(biāo)志SCON是串行口控制寄存器,其低兩位TI和RI鎖存串行口的發(fā)送中斷標(biāo)志和接收中斷標(biāo)志。1 1)SCON.1TI:串行發(fā)送中斷標(biāo)志。CPU將數(shù)據(jù)寫入發(fā)送緩沖器SBUF時(shí),就啟動(dòng)發(fā)送,每發(fā)送完一個(gè)串行幀,硬件將使TI置位。但CPU響應(yīng)中斷時(shí)并不清除TI,必須由軟件清除。2 .中斷控制IE寄存器中斷的開(kāi)放和禁止標(biāo)志(1) IE.7EA:總中斷允許控制位。EA=1,開(kāi)放所有中斷,各中斷源的允許和禁止可通過(guò)相應(yīng)的中斷允許位單獨(dú)加以控制;EA=0,禁止所有中斷。(2) IE.4ES:串行口中斷允許位。ES=1,允許串行口中斷;ES=0,禁止串行口中斷。IE.3ET1:定時(shí)

43、器1中斷允許位。ET1=1,允許定時(shí)器1中斷;ET1=0,禁止定時(shí)器1中斷。(4) IE.2EX1:外部中斷1()中斷允許位。EX1=1,允許外部中斷1中斷;EX1=0,禁止外部中斷1中斷。(5) IE.1ET0:定時(shí)器0中斷允許位。ET0=1,允許定時(shí)器0中斷;ET0=0,禁止定時(shí)器0中斷。(6) IE.0EX0:外部中斷0()中斷允許位。EX0=1,允許外部中斷0中斷;EX0=0,禁止外部中斷0中斷。8051單片機(jī)系統(tǒng)復(fù)位后,IE中各中斷允許位均被清0,即禁止所有中斷。IP寄存器中斷優(yōu)先級(jí)標(biāo)志8051單片機(jī)有兩個(gè)中斷優(yōu)先級(jí),每個(gè)中斷源都可以通過(guò)編程確定為高優(yōu)先級(jí)中斷或低(1) IP.4PS

44、:串行口中斷優(yōu)先控制位。PS=1,設(shè)定串行口為高優(yōu)先級(jí)中斷;PS=0,設(shè)定串行口為低優(yōu)先級(jí)中斷。(2) IP.3PT1:定時(shí)器T1中斷優(yōu)先控制位。PT1=1,設(shè)定定時(shí)器T1中斷為高優(yōu)先級(jí)中斷;PT1=0,設(shè)定定時(shí)器T1中斷為低優(yōu)先級(jí)中斷。(3) IP.2PX1:外部中斷1中斷優(yōu)先控制位。PX1=1,設(shè)定外部中斷1為高優(yōu)先級(jí)中斷;PX1=0,設(shè)定外部中斷1為低優(yōu)先級(jí)中斷。(4) IP.1PT0:定時(shí)器T0中斷優(yōu)先控制位。PT0=1,設(shè)定定時(shí)器T0中斷為高優(yōu)先級(jí)中斷;PT0=0,設(shè)定定時(shí)器T0中斷為低優(yōu)先級(jí)中斷。(5) IP.0PX0:外部中斷0中斷優(yōu)先控制位。PX0=1,設(shè)定外部中斷0為高優(yōu)先級(jí)

45、中斷;PX0=0,設(shè)定外部中斷0為低優(yōu)先級(jí)中斷。當(dāng)系統(tǒng)復(fù)位后,IP低5位全部清0,所有中斷源均設(shè)定為低優(yōu)先級(jí)中斷。如果幾個(gè)同一優(yōu)先級(jí)的中斷源同時(shí)向CPU申請(qǐng)中斷,CPU通過(guò)內(nèi)部硬件查詢邏輯,按自然優(yōu)先級(jí)順序確定先響應(yīng)哪個(gè)中斷請(qǐng)求。自然優(yōu)先級(jí)由硬件形成,排列如下:中斷源同級(jí)自然優(yōu)先級(jí)外部中斷0最高級(jí)定時(shí)器T0中斷外部中斷1定時(shí)器T1中斷串行口中斷最低級(jí)二、中斷處理過(guò)程中斷處理過(guò)程可分為中斷響應(yīng)、中斷處理和中斷返回三個(gè)階段。中斷響應(yīng)中斷響應(yīng)是CPU對(duì)中斷源中斷請(qǐng)求的響應(yīng),包括保護(hù)斷點(diǎn)和將程序轉(zhuǎn)向中斷服務(wù)程序的入口地址(通常稱矢量地址)。中斷響應(yīng)過(guò)程中斷響應(yīng)過(guò)程包括保護(hù)斷點(diǎn)和將程序轉(zhuǎn)向中斷服務(wù)程序的

46、入口地址。首先,中斷系統(tǒng)通過(guò)硬件自動(dòng)生成長(zhǎng)調(diào)用指令(LACLL),該指令將自動(dòng)把斷點(diǎn)地址壓入堆棧保護(hù)(不保護(hù)累加器A、狀態(tài)寄存器PSW和其它寄存器的內(nèi)容),然后,將對(duì)應(yīng)的中斷入口地址裝入程序計(jì)數(shù)器PC(由硬件自動(dòng)執(zhí)行),使程序轉(zhuǎn)向該中斷入口地址,執(zhí)行中斷服務(wù)程序。MCS-51系列單片機(jī)各中斷源的入口地址由硬件事先設(shè)定,分配如下:中斷源入口地址外部中斷00003H定時(shí)器T0中斷000BH外部中斷10013H定時(shí)器T1中斷001BH串行口中斷0023H使用時(shí),通常在這些中斷入口地址處存放一條絕對(duì)跳轉(zhuǎn)指令,使程序跳轉(zhuǎn)到用戶安排的中斷服務(wù)程序的起始地址上去。中斷返回中斷返回是指中斷服務(wù)完后,計(jì)算機(jī)返回

47、原來(lái)斷開(kāi)的位置(即斷點(diǎn)),繼續(xù)執(zhí)行原來(lái)的程序。中斷返回由中斷返回指令RETI來(lái)實(shí)現(xiàn)。該指令的功能是把斷點(diǎn)地址從堆棧中彈出,送回到程序計(jì)數(shù)器PC,此外,還通知中斷系統(tǒng)已完成中斷處理,并同時(shí)清除優(yōu)先級(jí)狀態(tài)觸發(fā)器。特別要注意不能用“RET指令代替“RETI指令。中斷請(qǐng)求的撤除CPU響應(yīng)中斷請(qǐng)求后即進(jìn)入中斷服務(wù)程序,在中斷返回前,應(yīng)撤除該中斷請(qǐng)求,否則,會(huì)重復(fù)引起中斷而導(dǎo)致錯(cuò)誤。MCS-51各中斷源中斷請(qǐng)求撤消的方法各不相同,分別為:1)定時(shí)器中斷請(qǐng)求的撤除對(duì)于定時(shí)器0或1溢出中斷,CPU在響應(yīng)中斷后即由硬件自動(dòng)清除其中斷標(biāo)志位TF0或TF1,無(wú)需采取其它措施。2)串行口中斷請(qǐng)求的撤除對(duì)于串行口中斷,

48、CPU在響應(yīng)中斷后,硬件不能自動(dòng)清除中斷請(qǐng)求標(biāo)志位TI、RI,必須在中斷服務(wù)程序中用軟件將其清除。3)外部中斷請(qǐng)求的撤除外部中斷可分為邊沿觸發(fā)型和電平觸發(fā)型。對(duì)于邊沿觸發(fā)白外部中斷0或1,CPU在響應(yīng)中斷后由硬件自動(dòng)清除其中斷標(biāo)志位IE0或IE1,無(wú)需采取其它措施。三、中斷應(yīng)用舉例第三節(jié)定時(shí)器/計(jì)數(shù)器一、定時(shí)器/計(jì)數(shù)器結(jié)構(gòu)實(shí)質(zhì)是計(jì)數(shù)器,脈沖每一次下降沿,計(jì)數(shù)寄存器數(shù)值將加1。計(jì)數(shù)的脈沖如果來(lái)源于單片機(jī)內(nèi)部的晶振,由于其周期極為準(zhǔn)確,這時(shí)稱為定時(shí)器。計(jì)數(shù)的脈沖如果來(lái)源于單片機(jī)外部的引腳,由于其周期一般不準(zhǔn)確,這時(shí)稱為計(jì)數(shù)器。定時(shí)/計(jì)數(shù)器方式寄存器TMOD(1) M1和M0:方式選擇位。(2) c

49、/T:功能選擇位。時(shí),設(shè)置為定時(shí)器工作方式;時(shí),設(shè)置為計(jì)數(shù)器工作方式。GATE:門控位。當(dāng)GATE=0時(shí),軟件控制位TR0或TR1置1即可啟動(dòng)定時(shí)器;當(dāng)GATE=1時(shí),軟件控制位TR0或TR1須置1,同時(shí)還須(P3.2)或(P3.3)為高電平方可啟動(dòng)定時(shí)器,即允許外中斷、啟動(dòng)定時(shí)器。定時(shí)器/計(jì)數(shù)器控制寄存器TCON(1) TCON.7TF1:定時(shí)器1溢出標(biāo)志位。當(dāng)定時(shí)器1計(jì)滿數(shù)產(chǎn)生溢出時(shí),由硬件自動(dòng)置TF1=1。在中斷允許時(shí),向CPU發(fā)出定時(shí)器1的中斷請(qǐng)求,進(jìn)入中斷服務(wù)程序后,由硬件自動(dòng)清0。在中斷屏蔽時(shí),TF1可作查詢測(cè)試用,此時(shí)只能由軟件清0。(2) TCON.6TR1:定時(shí)器1運(yùn)行控制位

50、。由軟件置1或清0來(lái)啟動(dòng)或關(guān)閉定時(shí)器1。當(dāng)GATE=1,且為高電平時(shí),TR1置1啟動(dòng)定時(shí)器1;當(dāng)GATE=0時(shí),TR1置1即可啟動(dòng)定時(shí)器1。(3)TCON.5TF0:定時(shí)器0溢出標(biāo)志位。其功能及操作情況同TF1。(4)TCON.4TR0:定時(shí)器0運(yùn)行控制位。其功能及操作情況同TR1。(5)TCON.3IE1:外部中斷1()請(qǐng)求標(biāo)志位。(6)TCON.2IT1:外部中斷1觸發(fā)方式選擇位。(7)TCON.1IE0:外部中斷0()請(qǐng)求標(biāo)志位。(8)TCON.0IT0:外部中斷0觸發(fā)方式選擇位。二、定時(shí)/計(jì)數(shù)器的工作方式1 .方式0方式0構(gòu)成一個(gè)13位定時(shí)/計(jì)數(shù)器。圖是定時(shí)器0在方式0時(shí)的邏輯電路結(jié)構(gòu)

51、,定時(shí)器1的結(jié)構(gòu)和操作與定時(shí)器0完全相同。2 .方式1定時(shí)器工作于方式1時(shí)。由圖可知,方式1構(gòu)成一個(gè)16位定時(shí)/計(jì)數(shù)器,其結(jié)構(gòu)與操作幾乎完全與方式0相同,惟一差別是二者計(jì)數(shù)位數(shù)不同。3 .方式2定時(shí)/計(jì)數(shù)器工作于方式2時(shí),。由圖可知,方式2中,16位加法計(jì)數(shù)器的TH0和TL0具有不同功能,其中,TL0是8位計(jì)數(shù)器,TH0是重置初值的8位緩沖器。4 .方式3定時(shí)/計(jì)數(shù)器工作于方式3時(shí),其邏輯結(jié)構(gòu)圖如圖所示。三、編程和使用1 .計(jì)數(shù)器初值的計(jì)算把計(jì)數(shù)器計(jì)滿為零所需要的計(jì)數(shù)值設(shè)定為C,計(jì)數(shù)初值設(shè)定為TC,由此可得到公式:TC=M-C式中,M為計(jì)數(shù)器模值,該值和計(jì)數(shù)器工作方式有關(guān)。在方式0時(shí)M為213

52、;在方式1時(shí)M為216;在方式2和方式3時(shí)M為28。2 .定時(shí)器初值的計(jì)算在定時(shí)器模式下,計(jì)數(shù)器由單片機(jī)主脈沖經(jīng)12分頻后計(jì)數(shù)。因此,定時(shí)器定時(shí)時(shí)間T的公式:T=(M-TC)T計(jì)數(shù),上式也可寫成:TC=M-T/T計(jì)數(shù)。式中,M為模值,和定時(shí)器的工作方式有關(guān);T計(jì)數(shù)是單片機(jī)振蕩周期TCLK的12倍;TC為定時(shí)器的定時(shí)初值。第四節(jié)應(yīng)用程序舉例(略)第五章單片機(jī)的系統(tǒng)擴(kuò)展第一節(jié)系統(tǒng)擴(kuò)展概述一、單片機(jī)系統(tǒng)擴(kuò)展的結(jié)構(gòu)對(duì)于沒(méi)有內(nèi)部ROM的單片機(jī)或者當(dāng)程序較長(zhǎng)、片內(nèi)ROM容量不夠時(shí),用戶必須在單片機(jī)外部擴(kuò)展程序存儲(chǔ)器。MCS-51單片機(jī)片外有16條地址線,即P0口和P2口,因此最大尋址范圍為64KB(0000HFFFFH)。系統(tǒng)總線及總線構(gòu)造MCS-51系列單片機(jī)片外引腳可以構(gòu)成如圖所示的三總線結(jié)構(gòu):地址總線(AB)數(shù)據(jù)總線(DB)控制總線(CB)所有外部芯片都通過(guò)這三組總線進(jìn)行擴(kuò)展。第二節(jié)存儲(chǔ)器的擴(kuò)展一、程序存儲(chǔ)器的擴(kuò)展擴(kuò)展程序存儲(chǔ)器常用的芯片是EPROM(ErasableProgrammableReadOnlyMemory)型(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論