單片機(jī)原理及應(yīng)用教案.doc_第1頁
單片機(jī)原理及應(yīng)用教案.doc_第2頁
單片機(jī)原理及應(yīng)用教案.doc_第3頁
單片機(jī)原理及應(yīng)用教案.doc_第4頁
單片機(jī)原理及應(yīng)用教案.doc_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

單 片 機(jī) 原 理 及 應(yīng) 用教 案機(jī)電工程學(xué)院電氣工程系第一章 緒論第一節(jié) 單片機(jī)單片機(jī)即單片機(jī)微型計(jì)算機(jī),是將計(jì)算機(jī)主機(jī)(CPU、內(nèi)存和I/O接口)集成在一小塊硅片上的微型機(jī)。第二節(jié) 單片機(jī)的歷史與現(xiàn)狀第一階段(19761978年):低性能單片機(jī)的探索階段。以Intel公司的MCS-48為代表,采用了單片結(jié)構(gòu),即在一塊芯片內(nèi)含有8位CPU、定時/計(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ā)展。第三階段(19821990年):16位單片機(jī)階段。16位單片機(jī)除CPU為16位外,片內(nèi)RAM和ROM容量進(jìn)一步增大,實(shí)時處理能力更強(qiáng),體現(xiàn)了微控制器的特征。例如Intel公司的MCS-96主振頻率為12M,片內(nèi)RAM為232字節(jié),ROM為8K字節(jié),中斷處理能力為8級,片內(nèi)帶有10位A/D轉(zhuǎn)換器和高速輸入/輸出部件等。第四階段(1990年):微控制器的全面發(fā)展階段,各公司的產(chǎn)品在盡量兼容的同時,向高速、強(qiáng)運(yùn)算能力、尋址范圍大以及小型廉價方面發(fā)展。第三節(jié) 單片機(jī)的應(yīng)用領(lǐng)域一、 單片機(jī)在儀器儀表中的應(yīng)用二、 單片機(jī)在機(jī)電一體化中的應(yīng)用三、 單片機(jī)在智能接口和多機(jī)系統(tǒng)中的應(yīng)用四、 單片機(jī)在生活中的應(yīng)用第二章 硬件結(jié)構(gòu)第一節(jié) MCS-51單片機(jī)及其演變特點(diǎn)(1)一個8位微處理器CPU。(2)數(shù)據(jù)存儲器RAM和特殊功能寄存器SFR。(3)內(nèi)部程序存儲器ROM。(4)兩個定時/計(jì)數(shù)器,用以對外部事件進(jìn)行計(jì)數(shù),也可用作定時器。(5)四個8位可編程的I/O(輸入/輸出)并行端口,每個端口既可做輸入,也可做輸出。(6)一個串行端口,用于數(shù)據(jù)的串行通信。(7)中斷控制系統(tǒng)。(8)內(nèi)部時鐘電路。第二節(jié) 80C51單片機(jī)的基本結(jié)構(gòu)1) 中央處理器(CPU)中央處理器是單片機(jī)的核心,完成運(yùn)算和控制功能。MCS-51的CPU能處理8位二進(jìn)制數(shù)或代碼。2) 內(nèi)部數(shù)據(jù)存儲器(內(nèi)部RAM)8051芯片中共有256個RAM單元,但其中后128單元被專用寄存器占用,能作為寄存器供用戶使用的只是前128單元,用于存放可讀寫的數(shù)據(jù)。因此通常所說的內(nèi)部數(shù)據(jù)存儲器就是指前128單元,簡稱內(nèi)部RAM。3) 內(nèi)部程序存儲器(內(nèi)部ROM)8051共有4 KB掩膜ROM,用于存放程序、原始數(shù)據(jù)或表格,因此,稱之為程序存儲器,簡稱內(nèi)部ROM。4) 定時/計(jì)數(shù)器8051共有兩個16位的定時/計(jì)數(shù)器,以實(shí)現(xiàn)定時或計(jì)數(shù)功能,并以其定時或計(jì)數(shù)結(jié)果對計(jì)算機(jī)進(jìn)行控制。5) 并行I/O口MCS-51共有4個8位的I/O口(P0、P1、P2、P3),以實(shí)現(xiàn)數(shù)據(jù)的并行輸入/輸出。在實(shí)訓(xùn)中我們已經(jīng)使用了P1口,通過P1口連接8個發(fā)光二極管。第三節(jié) 80C51單片機(jī)的引腳功能 MCS-51是標(biāo)準(zhǔn)的40引腳雙列直插式集成電路芯片,引腳排列請參見圖P0.0 P0.7: P0口8位雙向口線。P1.0 P1.7 :P1口8位雙向口線。P2.0 P2.7 :P2口8位雙向口線。P3.0 P3.7 :P3口8位雙向口線。 ALE:地址鎖存控制信號。在系統(tǒng)擴(kuò)展時,ALE用于控制把P0口輸出的低8位地址鎖存起來,以實(shí)現(xiàn)低位地址和數(shù)據(jù)的隔離。此外,由于ALE是以晶振1/6的固定頻率輸出的正脈沖,因此,可作為外部時鐘或外部定時脈沖使用。 PSEN:外部程序存儲器讀選通信號。在讀外部ROM時,PSEN有效(低電平),以實(shí)現(xiàn)外部ROM單元的讀操作。 EA:訪問程序存儲控制信號。當(dāng)信號為低電平時,對ROM的讀操作限定在外部程序存儲器;當(dāng)信號為高電平時,對ROM的讀操作是從內(nèi)部程序存儲器開始,并可延至外部程序存儲器。 RST:復(fù)位信號。當(dāng)輸入的復(fù)位信號延續(xù)兩個機(jī)器周期以上的高電平時即為有效,用以完成單片機(jī)的復(fù)位初始化操作。 XTAL1和XTAL2:外接晶體引線端。當(dāng)使用芯片內(nèi)部時鐘時,此二引線端用于外接石英晶體和微調(diào)電容;當(dāng)使用外部時鐘時,用于接外部時鐘脈沖信號。 VSS:地線。 VCC:+5 V電源。 以上是MCS-51單片機(jī)芯片40條引腳的定義及簡單功能說明,讀者可以對照實(shí)訓(xùn)電路找到相應(yīng)引腳,在電路中查看每個引腳的連接使用。 P3口線的第二功能。P3的8條口線都定義有第二功能第四節(jié) 存儲器結(jié)構(gòu)MCS-51單片機(jī)的芯片內(nèi)部有RAM和ROM兩類存儲器,即所謂的內(nèi)部RAM和內(nèi)部ROMMCS-51內(nèi)部程序存儲器MCS-51的程序存儲器用于存放編好的程序和表格常數(shù)。8051片內(nèi)有4 KB的ROM,8751片內(nèi)有4 KB的EPROM,8031片內(nèi)無程序存儲器。 MCS-51的片外最多能擴(kuò)展64 KB程序存儲器,片內(nèi)外的ROM是統(tǒng)一編址的。如端保持高電平,8051的程序計(jì)數(shù)器PC在0000H0FFFH地址范圍內(nèi) (即前4 KB地址) 是執(zhí)行片內(nèi)ROM中的程序,當(dāng)PC在1000HFFFFH地址范圍時,自動執(zhí)行片外程序存儲器中的程序;當(dāng)保持低電平時,只能尋址外部程序存儲器,片外存儲器可以從0000H開始編址。MCS-51的程序存儲器中有些單元具有特殊功能,使用時應(yīng)予以注意。 其中一組特殊單元是0000H0002H。系統(tǒng)復(fù)位后,(PC)=0000H,單片機(jī)從0000H單元開始取指令執(zhí)行程序。如果程序不從0000H單元開始,應(yīng)在這三個單元中存放一條無條件轉(zhuǎn)移指令,以便直接轉(zhuǎn)去執(zhí)行指定的程序。 還有一組特殊單元是0003H002AH,共40個單元。這40個單元被均勻地分為5段,作為5個中斷源的中斷地址區(qū)。其中:0003H000AH 外部中斷0中斷地址區(qū)000BH0012H 定時/計(jì)數(shù)器0中斷地址區(qū)0013H001AH 外部中斷1中斷地址區(qū)001BH0022H 定時/計(jì)數(shù)器1中斷地址區(qū)0023H002AH 串行中斷地址區(qū)中斷響應(yīng)后,按中斷種類,自動轉(zhuǎn)到各中斷區(qū)的首地址去執(zhí)行程序,因此在中斷地址區(qū)中理應(yīng)存放中斷服務(wù)程序。但通常情況下,8個單元難以存下一個完整的中斷服務(wù)程序,因此通常也是從中斷地址區(qū)首地址開始存放一條無條件轉(zhuǎn)移指令,以便中斷響應(yīng)后,通過中斷地址區(qū),再轉(zhuǎn)到中斷服務(wù)程序的實(shí)際入口地址。MCS-51內(nèi)部數(shù)據(jù)存儲器內(nèi)部數(shù)據(jù)存儲器低128單元 8051的內(nèi)部RAM共有256個單元,通常把這256個單元按其功能劃分為兩部分:低128單元(單元地址00H7FH)和高128單元(單元地址80HFFH)。如圖所示為低128單元的配置圖。 寄存器區(qū) 8051共有4組寄存器,每組8個寄存單元(各為8),各組都以R0R7作寄存單元編號。寄存器常用于存放操作數(shù)中間結(jié)果等。由于它們的功能及使用不作預(yù)先規(guī)定,因此稱之為通用寄存器,有時也叫工作寄存器。4組通用寄存器占據(jù)內(nèi)部RAM的00H1FH單元地址。 在任一時刻,CPU只能使用其中的一組寄存器,并且把正在使用的那組寄存器稱之為當(dāng)前寄存器組。到底是哪一組,由程序狀態(tài)字寄存器PSW中RS1、RS0位的狀態(tài)組合來決定。 通用寄存器為CPU提供了就近存儲數(shù)據(jù)的便利,有利于提高單片機(jī)的運(yùn)算速度。此外,使用通用寄存器還能提高程序編制的靈活性,因此,在單片機(jī)的應(yīng)用編程中應(yīng)充分特殊功能寄存器通用RAM區(qū)位尋址區(qū)00H1FH20H2FH30H7FH80HFFH80H88H90H98HA0HA8HB0HB8HD0HE0HF0H特殊功能寄存器中位尋址外部ROM內(nèi)部ROM(EA=1)外部ROM(EA=0)0000H0000H0FFFH0FFFH1000HFFFFH外 部RAM(I/O口地址)0000HFFFFH內(nèi)部數(shù)據(jù)存儲器(a)外部數(shù)據(jù)存儲器(b)程序存儲器(c)工作寄存器區(qū)利用這些寄存器,以簡化程序設(shè)計(jì),提高程序運(yùn)行速度。 位尋址區(qū) 內(nèi)部RAM的20H2FH單元,既可作為一般RAM單元使用,進(jìn)行字節(jié)操作,也可以對單元中每一位進(jìn)行位操作,因此把該區(qū)稱之為位尋址區(qū)。位尋址區(qū)共有16個RAM單元,計(jì)128位,地址為00H7FH。MCS-51具有布爾處理機(jī)功能,這個位尋址區(qū)可以構(gòu)成布爾處理機(jī)的存儲空間。這種位尋址能力是MCS-51的一個重要特點(diǎn)。 用戶RAM區(qū) 在內(nèi)部RAM低128單元中,通用寄存器占去32個單元,位尋址區(qū)占去16個單元,剩下80個單元,這就是供用戶使用的一般RAM區(qū),其單元地址為30H7FH。對用戶RAM區(qū)的使用沒有任何規(guī)定或限制,但在一般應(yīng)用中常把堆棧開辟在此區(qū)中。 內(nèi)部數(shù)據(jù)存儲器高128單元 內(nèi)部RAM的高128單元是供給專用寄存器使用的,其單元地址為80HFFH。因這些寄存器的功能已作專門規(guī)定,故稱之為專用寄存器(Special Function Register),也可稱為特殊功能寄存器。第五節(jié) 特殊功能存儲器SFR8051共有21個專用寄存器,現(xiàn)把其中部分寄存器簡單介紹如下:程序計(jì)數(shù)器(PCProgram Counter)。在實(shí)訓(xùn)中,我們已經(jīng)知道PC是一個16位的計(jì)數(shù)器,它的作用是控制程序的執(zhí)行順序。其內(nèi)容為將要執(zhí)行指令的地址,尋址范圍達(dá)64 KB。PC有自動加1功能,從而實(shí)現(xiàn)程序的順序執(zhí)行。PC沒有地址,是不可尋址的,因此用戶無法對它進(jìn)行讀寫,但可以通過轉(zhuǎn)移、調(diào)用、返回等指令改變其內(nèi)容,以實(shí)現(xiàn)程序的轉(zhuǎn)移。因地址不在SFR(專用寄存器)之內(nèi),一般不計(jì)作專用寄存器。累加器(ACCAccumulator)。累加器為8位寄存器,是最常用的專用寄存器,功能較多,地位重要。它既可用于存放操作數(shù),也可用來存放運(yùn)算的中間結(jié)果。MCS-51單片機(jī)中大部分單操作數(shù)指令的操作數(shù)就取自累加器,許多雙操作數(shù)指令中的一個操作數(shù)也取自累加器。B寄存器。B寄存器是一個8位寄存器,主要用于乘除運(yùn)算。乘法運(yùn)算時,B存乘數(shù)。乘法操作后,乘積的高8位存于B中,除法運(yùn)算時,B存除數(shù)。除法操作后,余數(shù)存于B中。此外,B寄存器也可作為一般數(shù)據(jù)寄存器使用。 程序狀態(tài)字(PSWProgram Status Word)。程序狀態(tài)字是一個8位寄存器,用于存放程序運(yùn)行中的各種狀態(tài)信息。其中有些位的狀態(tài)是根據(jù)程序執(zhí)行結(jié)果,由硬件自動設(shè)置的,而有些位的狀態(tài)則使用軟件方法設(shè)定。PSW的位狀態(tài)可以用專門指令進(jìn)行測試,也可以用指令讀出。一些條件轉(zhuǎn)移指令將根據(jù)PSW有些位的狀態(tài),進(jìn)行程序轉(zhuǎn)移。PSW的各位定義如下:PSW位地址D7HD6HD5HD4HD3HD2HD1HD0H字節(jié)地址 CY ACF0RS1RS0OVF1P除PSW.1位保留未用外,其余各位的定義及使用如下:CY(PSW.7)進(jìn)位標(biāo)志位。CY是PSW中最常用的標(biāo)志位。其功能有二:一是存放算術(shù)運(yùn)算的進(jìn)位標(biāo)志,在進(jìn)行加或減運(yùn)算時,如果操作結(jié)果的最高位有進(jìn)位或借位時,CY由硬件置“1”,否則清“0”;二是在位操作中,作累加位使用。位傳送、位與位或等位操作,操作位之一固定是進(jìn)位標(biāo)志位。AC(PSW.6)輔助進(jìn)位標(biāo)志位。在進(jìn)行加減運(yùn)算中,當(dāng)?shù)?位向高4位進(jìn)位或借位時,AC由硬件置“1”,否則AC位被清“0”。在BCD碼調(diào)整中也要用到AC位狀態(tài)。F0(PSW.5)用戶標(biāo)志位。這是一個供用戶定義的標(biāo)志位,需要利用軟件方法置位或復(fù)位,用以控制程序的轉(zhuǎn)向。RS1和RS0(PSW.4,PSW.3)寄存器組選擇位。它們被用于選擇CPU當(dāng)前使用的通用寄存器組。通用寄存器共有4組,其對應(yīng)關(guān)系如下:00:0組 01:1組 10:2組 11:3組這兩個選擇位的狀態(tài)是由軟件設(shè)置的,被選中的寄存器組即為當(dāng)前通用寄存器組。但當(dāng)單片機(jī)上電或復(fù)位后,RS1 RS0=00。OV(PSW.2)溢出標(biāo)志位。在帶符號數(shù)加減運(yùn)算中,OV=1表示加減運(yùn)算超出了累加器A所能表示的符號數(shù)有效范圍(-128 +127),即產(chǎn)生了溢出,因此運(yùn)算結(jié)果是錯誤的,否則,OV=0表示運(yùn)算正確,即無溢出產(chǎn)生。P(PSW.0)奇偶標(biāo)志位。表明累加器A中內(nèi)容的奇偶性。如果A中有奇數(shù)個“1”,則P置“1”,否則置“0”。凡是改變累加器A中內(nèi)容的指令均會影響P標(biāo)志位。此標(biāo)志位對串行通信中的數(shù)據(jù)傳輸有重要的意義。在串行通信中常采用奇偶校驗(yàn)的辦法來校驗(yàn)數(shù)據(jù)傳輸?shù)目煽啃?。?shù)據(jù)指針(DPTR)。數(shù)據(jù)指針為16位寄存器。編程時,DPTR既可以按16位寄存器使用,也可以按兩個8位寄存器分開使用,即:DPH DPTR高位字節(jié),DPL DPTR低位字節(jié)。DPTR通常在訪問外部數(shù)據(jù)存儲器時作地址指針使用。由于外部數(shù)據(jù)存儲器的尋址范圍為64 KB,故把DPTR設(shè)計(jì)為16位。堆棧指針(SPStack Pointer)。堆棧是一個特殊的存儲區(qū),用來暫存數(shù)據(jù)和地址,它是按“先進(jìn)后出”的原則存取數(shù)據(jù)的。堆棧共有兩種操作:進(jìn)棧和出棧。由于MCS-51單片機(jī)的堆棧設(shè)在內(nèi)部RAM中,因此SP是一個8位寄存器。系統(tǒng)復(fù)位后,SP的內(nèi)容為07H,從而復(fù)位后堆棧實(shí)際上是從08H單元開始的。但08H1FH單元分別屬于工作寄存器13區(qū),如程序要用到這些區(qū),最好把SP值改為1FH或更大的值。對專用寄存器的字節(jié)尋址問題作如下幾點(diǎn)說明: (1)21個可字節(jié)尋址的專用寄存器是不連續(xù)地分散在內(nèi)部RAM高128單元之中,盡管還余有許多空閑地址,但用戶并不能使用。 (2) 程序計(jì)數(shù)器PC不占據(jù)RAM單元,它在物理上是獨(dú)立的,因此是不可尋址的寄存器。 (3) 對專用寄存器只能使用直接尋址方式,書寫時既可使用寄存器符號,也可使用寄存器。第六節(jié) 輸入輸出端口單片機(jī)芯片內(nèi)還有一項(xiàng)主要內(nèi)容就是并行I/O口。MCS-51共有4個8位的并行I/O口,分別記作P0、P1、P2、P3。每個口都包含一個鎖存器、一個輸出驅(qū)動器和輸入緩沖器。實(shí)際上,它們已被歸入專用寄存器之列,并且具有字節(jié)尋址和位尋址功能。 在訪問片外擴(kuò)展存儲器時,低8位地址和數(shù)據(jù)由P0口分時傳送,高8位地址由P2口傳送。在無片外擴(kuò)展存儲器的系統(tǒng)中,這4個口的每一位均可作為雙向的I/O端口使用。第七節(jié) 時鐘電路在MCS-51芯片內(nèi)部有一個高增益反相放大器,其輸入端為芯片引腳XTAL1,其輸出端為引腳XTAL2 。而在芯片的外部,XTAL1和XTAL2之間跨接晶體振蕩器和微調(diào)電容,從而構(gòu)成一個穩(wěn)定的自激振蕩器,這就是單片機(jī)的時鐘電路。XTAL2XTAL1MCS-51C1C2CYSXTAL2XTAL1MCS-51+5VVSSTTL外部時鐘源1振蕩周期:為單片機(jī)提供時鐘信號的振蕩源的周期。2時鐘周期:是振蕩源信號經(jīng)二分頻后形成的時鐘脈沖信號。 3機(jī)器周期:通常將完成一個基本操作所需的時間稱為機(jī)器周期。4指令周期:是指CPU執(zhí)行一條指令所需要的時間。一個指令周期通常含有14個機(jī)器周期。 P1P2S1P2振蕩周期時鐘周期機(jī)器周期機(jī)器周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2第八節(jié) 復(fù)位電路單片機(jī)復(fù)位是使CPU和系統(tǒng)中的其他功能部件都處在一個確定的初始狀態(tài),并從這個狀態(tài)開始工作,例如復(fù)位后PC=0000H,使單片機(jī)從第一個單元取指令。實(shí)訓(xùn)中已經(jīng)看出,無論是在單片機(jī)剛開始接上電源時,還是斷電后或者發(fā)生故障后都要復(fù)位,所以我們必須弄清楚MCS-51型單片機(jī)復(fù)位的條件、復(fù)位電路和復(fù)位后狀態(tài)。 第三章MCS-51指令系統(tǒng)第一節(jié) 指令格式采用助記符表示的匯編語言指令格式如下:標(biāo)號是程序員根據(jù)編程需要給指令設(shè)定的符號地址,可有可無;標(biāo)號由18個字符組成,第一個字符必須是英文字,不能是數(shù)字或其它符號;標(biāo)號后必須用冒號。 操作碼表示指令的操作種類,如MOV表示數(shù)據(jù)傳送操作,ADD表示加法操作等。操作數(shù)或操作數(shù)地址表示參加運(yùn)算的數(shù)據(jù)或數(shù)據(jù)的有效地址。操作數(shù)一般有以下幾種形式:沒有操作數(shù)項(xiàng),操作數(shù)隱含在操作碼中,如RET指令;只有一個操作數(shù),如CPL A指令;有兩個操作數(shù),如MOV A,#00H指令,操作數(shù)之間以逗號相隔;有三個操作數(shù),如CJNE A,#00H,NEXT指令,操作數(shù)之間也以逗號相隔。注釋是對指令的解釋說明,用以提高程序的可讀性;注釋前必須加分號。 第二節(jié) 尋址方式尋找操作數(shù)地址的方式稱為尋址方式。1. 寄存器尋址 寄存器尋址是指將操作數(shù)存放于寄存器中,寄存器包括工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR等。例如,指令MOV R1,A的操作是把累加器A中的數(shù)據(jù)傳送到寄存器R1中,其操作數(shù)存放在累加器A中,所以尋址方式為寄存器尋址。如果程序狀態(tài)寄存器PSW的RS1RS0=01(選中第二組工作寄存器,對應(yīng)地址為08H0FH),設(shè)累加器A的內(nèi)容為20H,則執(zhí)行MOV R1,A指令后,內(nèi)部RAM 09H單元的值就變?yōu)?0H。2. 直接尋址 直接尋址是指把存放操作數(shù)的內(nèi)存單元的地址直接寫在指令中。在MCS-51單片機(jī)中,可以直接尋址的存儲器主要有內(nèi)部RAM區(qū)和特殊功能寄存器SFR區(qū)。例如,指令MOV A,3AH執(zhí)行的操作是將內(nèi)部RAM 中地址為3AH的單元內(nèi)容傳送到累加器A中,其操作數(shù)3AH就是存放數(shù)據(jù)的單元地址,因此該指令是直接尋址。3. 立即數(shù)尋址 立即數(shù)尋址是指將操作數(shù)直接寫在指令中。 例如,指令MOV A,#3AH執(zhí)行的操作是將立即數(shù)3AH送到累加器A中,該指令就是立即數(shù)尋址。4. 寄存器間接尋址 寄存器間接尋址是指將存放操作數(shù)的內(nèi)存單元的地址放在寄存器中,指令中只給出該寄存器。執(zhí)行指令時,首先根據(jù)寄存器的內(nèi)容,找到所需要的操作數(shù)地址,再由該地址找到操作數(shù)并完成相應(yīng)操作。 在MCS-51指令系統(tǒng)中,用于寄存器間接尋址的寄存器有R0、R1和DPTR,稱為寄存器間接尋址寄存器。設(shè)R0=3AH,內(nèi)部RAM 3AH中的值是65H,則指令MOV A,R0的執(zhí)行結(jié)果是累加器A的值為65H。5. 變址尋址 變址尋址是指將基址寄存器與變址寄存器的內(nèi)容相加,結(jié)果作為操作數(shù)的地址。DPTR或PC是基址寄存器,累加器A是變址寄存器。該類尋址方式主要用于查表操作。 例如,指令MOVC A,A+DPTR執(zhí)行的操作是將累加器A和基址寄存器DPTR的內(nèi)容相加,相加結(jié)果作為操作數(shù)存放的地址,再將操作數(shù)取出來送到累加器A中。 設(shè)累加器A=02H,DPTR=0300H,外部ROM中,0302H單元的內(nèi)容是55H,則指令MOVC A,A+DPTR的執(zhí)行結(jié)果是累加器A的內(nèi)容為55H。6. 相對尋址 相對尋址是指程序計(jì)數(shù)器PC的當(dāng)前內(nèi)容與指令中的操作數(shù)相加,其結(jié)果作為跳轉(zhuǎn)指令的轉(zhuǎn)移地址(也稱目的地址)。該類尋址方式主要用于跳轉(zhuǎn)指令。 例如,指令SJMP 54H執(zhí)行的操作是將PC當(dāng)前的內(nèi)容與54H相加,結(jié)果再送回PC中,成為下一條將要執(zhí)行指令的地址。 設(shè)指令SJMP 54H的機(jī)器碼80H 54H存放在2000H處,當(dāng)執(zhí)行到該指令時,先從2000H和2001H單元取出指令,PC自動變?yōu)?002H;再把PC的內(nèi)容與操作數(shù)54H相加,形成目標(biāo)地址2056H,再送回PC,使得程序跳轉(zhuǎn)到2056H單元繼續(xù)執(zhí)行。7. 位尋址 位尋址是指按位進(jìn)行的尋址操作,而上述介紹的指令都是按字節(jié)進(jìn)行的尋址操作。MCS-51單片機(jī)中,操作數(shù)不僅可以按字節(jié)為單位進(jìn)行操作,也可以按位進(jìn)行操作。當(dāng)我們把某一位作為操作數(shù)時,這個操作數(shù)的地址稱為位地址。位尋址區(qū)包括專門安排在內(nèi)部RAM中的兩個區(qū)域:一是內(nèi)部RAM的位尋址區(qū),地址范圍是20H2FH,共16個RAM單元,位地址為00H7FH;二是特殊功能寄存器SFR中有11個寄存器可以位尋址,參見有關(guān)章節(jié)中位地址定義。 第三節(jié) 數(shù)據(jù)操作和指令類型MCS-51單片機(jī)指令系統(tǒng)包括111條指令,按功能可以劃分為以下5類數(shù)據(jù)傳送指令(29條)算術(shù)運(yùn)算指令(24條)邏輯運(yùn)算指令(24條)控制轉(zhuǎn)移指令(17條)位操作指令(17條)第四節(jié) 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令是MCS-51單片機(jī)匯編語言程序設(shè)計(jì)中使用最頻繁的指令,包括內(nèi)部 RAM、寄存器、外部RAM以及程序存儲器之間的數(shù)據(jù)傳送。 數(shù)據(jù)傳送操作是指把數(shù)據(jù)從源地址傳送到目的地址,源地址內(nèi)容不變。 1. 以累加器A為目的操作數(shù)的指令MOV A, data ; A data MOV A, Rn ; n=07, A (Rn) MOV A, Ri ; i=0,1 , A (Ri) MOV A, direct ; A (Rn) direct為內(nèi)部RAM或SFR地址2. 以Rn為目的操作數(shù)的指令MOV Rn, A ;Rn (A) , n=07MOV Rn , direct ;Rn (direct) MOV Rn ,data ;Rn data 3.以直接地址為目的操作數(shù)的指令 MOV direct, A ;direct (A) MOV direct, Rn ; direct (Rn) , n=07MOV direct, Ri ; direct ( Ri ) ) , i=0,1MOV direct, direct ;direct (direct) MOV direct, #data ;direct data 4. 以寄存器間接地址為目的操作數(shù)指令MOV Ri, A ; (Ri) ) (A) ,i=0,1MOV Ri , direct ; (Ri) ) (direct) MOV Ri ,data ; (Ri) ) data字節(jié)交換指令XCH A , Rn ; (A) (Ri)XCH A , direct ; (A) (direct)XCH A , Ri ; (A) (Ri)半字節(jié)交換指令XCHD A, Ri ;(A)0-3 (Ri ) 0-3累加器A與外部數(shù)據(jù)傳輸指令MOVX A, DPTR ; A (DPTR) 地址范圍64KMOVX A, Ri ; A (Ri) 地址范圍0255MOVX DPTR, A ; (DPTR) (A)MOVX Ri , A ; (Ri) (A)查表指令1)MOVC A, A+DPTR ; A (A)+(DPTR)2)MOVC A, A+PC ; A (A)+(pc)第五節(jié) 算術(shù)運(yùn)算指令加法指令(Addtion)ADD A, Rn ; A(A)+(Rn)ADD A, Ri ;A(A)+((Ri))ADD A, direct ;A(A)+(direct)ADD A, data ;A(A)+#data帶進(jìn)位加法指令A(yù)DDC A, Rn ; A(A)+(Rn)+(Cy)ADDC A, Ri ;A(A)+(Ri ) +(Cy)ADDC A, direct ;A(A)+(direct) +(Cy)ADDC A, data ;A(A)+#data +(Cy)加1指令I(lǐng)NC A ;A(A)+1INC Ri ;Ri(A)+1INC direct ;direct(direct)+1INC Ri ;(Ri)(Ri)+1INC DPTR ;DPTR(DPTR)+1十進(jìn)制調(diào)整指令DA A帶借位減法指令(Subtraction)SUBB A, Rn ; A(A)-(Rn)-(Cy)SUBB A, Ri ;A(A)-(Ri) ) -(Cy)SUBB A, direct ;A(A)-(direct) -(Cy)SUBB A, data ;A(A)-#data -(Cy)減1指令(Decrease)DEC A ;A(A)1DEC Ri ;Ri(A)1DEC direct ;direct(direct)1DEC Ri ;(Ri)(Ri)1乘法指令(Multiplication)MUL AB 除法指令(Division)DIV AB 第六節(jié) 邏輯運(yùn)算指令簡單邏輯操作指令CLR A ; A “0”CPL A ; A ASWAP A ; A03 A47左循環(huán)指令 (Rotate Accumulator Left)RL A帶進(jìn)位左循環(huán)指令(Rotate Accumulator Left through Carry flag) RLC A右循環(huán)指令(Rotate Accumulator Right)RR A帶進(jìn)位右循環(huán)指令(Rotate A Right with C)RRC A邏輯與指令A(yù)NL A, Rn ANL A, direct ANL A, dataANL A, RiANL direct, AANL direct, data邏輯或指令ORL A, Rn ORL A, direct ORL A, dataORL A, RiORL direct, AORL direct, data邏輯異或指令XRL A, Rn XRL A, direct XRL A, dataXRL A, RiXRL direct, AXRL direct, data第七節(jié) 位操作指令數(shù)據(jù)位傳送指令MOV C, bit ;bit 可直接尋址位 C(bit)MOV bit,C ;C 進(jìn)位位 (bit) C 位變量修改指令CLR C ; 將C0CLR bitCPL C ; 將C求反再存入CCPL bit ; 將bit求反再存入bitSETB C ; 將C1SETB bit ; (bit) 1 位變量邏輯指令A(yù)NL C, bit ANL C, bit ORL C, bit ORL C, bit第八章 控制轉(zhuǎn)移指令跳轉(zhuǎn)指令短跳指令 AJMP addr11 PCaddr11,跳轉(zhuǎn)范圍2k長跳指令 LJMP addr16 PCaddr16,跳轉(zhuǎn)范圍64k間接跳轉(zhuǎn)指令 JMP A+DPTR PC(A)(DPTR)相對轉(zhuǎn)移指令 SJMP rel 條件轉(zhuǎn)移指令JZ rel ;(A)0,轉(zhuǎn)移JNZ rel ;(A)0,轉(zhuǎn)移JC rel ;如 C=1, 轉(zhuǎn)移JNC rel ;如 C=0, 轉(zhuǎn)移JB bit,rel ;如 bit=1, 轉(zhuǎn)移JNB bit,rel ;如 bit=0, 轉(zhuǎn)移JBC bit,rel ;如 bit=1, 轉(zhuǎn)移并 bit0比較不相等轉(zhuǎn)移指令CJNE A,#data,rel;(A)=#data,繼續(xù)C0 (A)#data,轉(zhuǎn)C0 (A)#data,轉(zhuǎn)C1 特點(diǎn):只有時, C1CJNE A,direct,relCJNE Rn,#data,relCJNE Ri,#data,rel減 1 不為 0 轉(zhuǎn)移指令DJNZ Rn,rel ; DJNZ direct,rel例:延時子程序 delay: MOV R7, #03H delay0: MOV R6, #19H delay1: DJNZ R6, delay1 DJNZ R7, delay0 RET調(diào)用子程序指令短調(diào)用指令 ACALL addr11長調(diào)用指令 LCALL addr16子程序返回指令 RET中斷返回指令 RETI空操作指令 NOP第四章 定時器/計(jì)數(shù)器第一節(jié) 概述第二節(jié) 結(jié)構(gòu)和工作原理實(shí)質(zhì)是計(jì)數(shù)器,脈沖每一次下降沿,計(jì)數(shù)寄存器數(shù)值將加1。計(jì)數(shù)的脈沖如果來源于單片機(jī)內(nèi)部的晶振,由于其周期極為準(zhǔn)確,這時稱為定時器。計(jì)數(shù)的脈沖如果來源于單片機(jī)外部的引腳,由于其周期一般不準(zhǔn)確,這時稱為計(jì)數(shù)器。定時/計(jì)數(shù)器方式寄存器TMOD(1) M1和M0:方式選擇位。(2) c/T :功能選擇位。時,設(shè)置為定時器工作方式;時,設(shè)置為計(jì)數(shù)器工作方式。(3) GATE:門控位。當(dāng)GATE=0時,軟件控制位TR0或TR1置1即可啟動定時器;當(dāng)GATE=1時,軟件控制位TR0或TR1須置1,同時還須(P3.2)或(P3.3)為高電平方可啟動定時器,即允許外中斷、啟動定時器。定時器/計(jì)數(shù)器控制寄存器TCON(1) TCON.7 TF1:定時器1溢出標(biāo)志位。當(dāng)定時器1計(jì)滿數(shù)產(chǎn)生溢出時,由硬件自動置TF1=1。在中斷允許時,向CPU發(fā)出定時器1的中斷請求,進(jìn)入中斷服務(wù)程序后,由硬件自動清0。在中斷屏蔽時,TF1可作查詢測試用,此時只能由軟件清0。(2) TCON.6 TR1:定時器1運(yùn)行控制位。由軟件置1或清0來啟動或關(guān)閉定時器1。當(dāng)GATE=1,且為高電平時,TR1置1啟動定時器1;當(dāng)GATE=0時,TR1置1即可啟動定時器1。(3) TCON.5 TF0:定時器0溢出標(biāo)志位。其功能及操作情況同TF1。(4) TCON.4 TR0:定時器0運(yùn)行控制位。其功能及操作情況同TR1。(5) TCON.3 IE1:外部中斷1( )請求標(biāo)志位。(6)TCON.2 IT1:外部中斷1觸發(fā)方式選擇位。(7)TCON.1 IE0:外部中斷0 ( )請求標(biāo)志位。 (8) TCON.0 IT0:外部中斷0觸發(fā)方式選擇位。 第三節(jié) 定時/計(jì)數(shù)器的工作方式1方式0方式0構(gòu)成一個13位定時/計(jì)數(shù)器。圖是定時器0在方式0時的邏輯電路結(jié)構(gòu),定時器1的結(jié)構(gòu)和操作與定時器0完全相同。2方式1定時器工作于方式1時。由圖可知,方式1構(gòu)成一個16位定時/計(jì)數(shù)器,其結(jié)構(gòu)與操作幾乎完全與方式0相同,惟一差別是二者計(jì)數(shù)位數(shù)不同。3方式2 定時/計(jì)數(shù)器工作于方式2時,。由圖可知,方式2中,16位加法計(jì)數(shù)器的TH0和TL0具有不同功能,其中,TL0是8位計(jì)數(shù)器,TH0是重置初值的8位緩沖器。4方式3定時/計(jì)數(shù)器工作于方式3時,其邏輯結(jié)構(gòu)圖如圖所示。第四節(jié) 編程和使用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時M為213;在方式1時M為216;在方式2和方式3時M為28。2定時器初值的計(jì)算在定時器模式下,計(jì)數(shù)器由單片機(jī)主脈沖經(jīng)12分頻后計(jì)數(shù)。因此,定時器定時時間T的公式:T=(M-TC)T計(jì)數(shù),上式也可寫成:TC=M-T/ T計(jì)數(shù)。式中,M為模值,和定時器的工作方式有關(guān);T計(jì)數(shù)是單片機(jī)振蕩周期TCLK的12倍;TC為定時器的定時初值。 第五章 串行通訊基礎(chǔ)第一節(jié) 串行通信基礎(chǔ)在計(jì)算機(jī)系統(tǒng)中,CPU和外部通信有兩種通信方式:并行通信和串行通信。并行通信,即數(shù)據(jù)的各位同時傳送;串行通信,即數(shù)據(jù)一位一位順序傳送。串行通信的分類按照串行數(shù)據(jù)的時鐘控制方式,串行通信可分為同步通信和異步通信兩類。1. 異步通信(Asynchronous Communication) 在異步通信中,數(shù)據(jù)通常是以字符為單位組成字符幀傳送的。字符幀由發(fā)送端一幀一幀地發(fā)送,每一幀數(shù)據(jù)均是低位在前,高位在后,通過傳輸線被接收端一幀一幀地接收。發(fā)送端和接收端可以由各自獨(dú)立的時鐘來控制數(shù)據(jù)的發(fā)送和接收,這兩個時鐘彼此獨(dú)立,互不同步。 在異步通信中,接收端是依靠字符幀格式來判斷發(fā)送端是何時開始發(fā)送,何時結(jié)束發(fā)送的。字符幀格式是異步通信的一個重要指標(biāo)。字符幀(Character Frame)字符幀也叫數(shù)據(jù)幀,由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位等4部分組成,波特率(baud rate)異步通信的另一個重要指標(biāo)為波特率。 波特率為每秒鐘傳送二進(jìn)制數(shù)碼的位數(shù),也叫比特數(shù),單位為b/s,即位/秒。波特率用于表征數(shù)據(jù)傳輸?shù)乃俣?,波特率越高,?shù)據(jù)傳輸速度越快。但波特率和字符的實(shí)際傳輸速率不同,字符的實(shí)際傳輸速率是每秒內(nèi)所傳字符幀的幀數(shù),和字符幀格式有關(guān)。2. 同步通信(Synchronous Communication) 同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信只傳輸一幀信息。這里的信息幀和異步通信的字符幀不同,通常有若干個數(shù)據(jù)字符,如圖8.4所示。圖8.4(a)為單同步字符幀結(jié)構(gòu),圖8.4(b)為雙同步字符幀結(jié)構(gòu),但它們均由同步字符、數(shù)據(jù)字符和校驗(yàn)字符CRC三部分組成。在同步通信中,同步字符可以采用統(tǒng)一的標(biāo)準(zhǔn)格式,也可以由用戶約定。 第二節(jié) 串行通訊口的工作方式1.數(shù)據(jù)緩沖器SBUF發(fā)送SBUF和接收SBUF共用一個地址99H。 1)發(fā)送SBUF存放待發(fā)送的8位數(shù)據(jù),寫入SBUF將同時啟動發(fā)送。發(fā)送指令:MOVSBUF,A2)接收SBUF存放已接收成功的8位數(shù)據(jù),供CPU讀取。讀取串行口接收數(shù)據(jù)指令:MOV A,SBUF2.串行口控制/狀態(tài)寄存器SCON(98H)SM0,SM1:選擇串行口4種工作方式。SM2:多機(jī)控制位,用于多機(jī)通訊。REN:允許接收控制位,REN=1,允許接收;REN=0,禁止接收。TB8發(fā)送的第9位數(shù)據(jù)位,可用作校驗(yàn)位和地址/數(shù)據(jù)標(biāo)識位RB8:接收的第9位數(shù)據(jù)位或停止位TI:發(fā)送中斷標(biāo)志,發(fā)送一幀結(jié)束,TI=1,必須軟件清零RI:接收中斷標(biāo)志,接收一幀結(jié)束,RI=1,必須軟件清零3.節(jié)電控制寄存器PCONSMOD(PCON.7):波特率加倍控制位。SMOD=1,波特率加倍, SMOD=0,則不加倍。串行接口的工作方式SM0,SM1選擇四種工作方式。(1) 方式0:同步移位寄存器方式。用于擴(kuò)展并行I/O接口。1.一幀8位,無起始位和停止位。2.RXD:數(shù)據(jù)輸入/輸出端。TXD:同步脈沖輸出端,每個脈沖對應(yīng)一個數(shù)據(jù)位。3.波特率B = fosc/12如: fosc=12MHz,B=1MHz,每位數(shù)據(jù)占1ms。4.發(fā)送過程:寫入SBUF,啟動發(fā)送,一幀發(fā)送結(jié)束,TI=1。接收過程:REN=1且RI=0,啟動接收,一幀接收完畢,RI=1。(2) 方式1:8位數(shù)據(jù)異步通訊方式。1.一幀10位:8位數(shù)據(jù)位,1個起始位(0),1個停止位(1)。 2.RXD:接收數(shù)據(jù)端。 TXD:發(fā)送數(shù)據(jù)端。3.波特率:用T1作為波特率發(fā)生器,B=(2SMOD/32)T1溢出率。4.發(fā)送:寫入SBUF,同時啟動發(fā)送,一幀發(fā)送結(jié)束,TI=1。接收:REN=1,允許接收。接收完一幀,若RI=0且停止位為1 (或SM2=0),將接收數(shù)據(jù)裝入SBUF,停止位裝入RB8,并使RI=1;否則丟棄接收數(shù)據(jù),不置位RI。(3) 方式2和方式3:9位數(shù)據(jù)異步通訊方式。1.一幀為11位:9位數(shù)據(jù)位,1個起始位(0),1個停止位(1)。第9位數(shù)據(jù)位在TB8/RB8中,常用作校驗(yàn)位和多機(jī)通訊標(biāo)識位。2.RXD:接收數(shù)據(jù)端,TXD:發(fā)送數(shù)據(jù)端。3.波特率: 方式2:B=(2SMOD/64)fosc 。 方式3:B=(2SMOD/32)T1溢出率 。4.發(fā)送:先裝入TB8,寫入SBUF并啟動發(fā)送,發(fā)送結(jié)束,TI=1。接收:REN=1,允許接收。接收完一幀,若RI=0且第9位為1 (或SM2=0),將接收數(shù)據(jù)裝入接收SBUF,第9位裝入RB8,使RI=1;否則丟棄接收數(shù)據(jù),不置位RI。第三節(jié) 波特率的設(shè)置方法方式0為固定波特率:B=fosc/12方式2可選兩種波特率: B=(2SMOD /64)fosc 方式1、3為可變波特率,用T1作波特率發(fā)生器。B=(2SMOD/32)T1溢出率T1為方式2的時間常數(shù): X = 28 - t/T溢出時間: t= (28 -X)T = (28 -X)12/ foscT1溢出率=1/t= fosc /12(2n -X) 波特率B=(2SMOD /32)fosc/12(28-X)串行口方式1、3,根據(jù)波特率選擇T1工作方式,計(jì)算時間常數(shù)。T1選方式2: TH1=X= 28-fosc/122SMOD/(32B)T1選方式1用于低波特率,需考慮T1重裝時間常數(shù)時間。第六章 中斷系統(tǒng)第一節(jié) 概述中斷是通過硬件來改變CPU的運(yùn)行方向的。計(jì)算機(jī)在執(zhí)行程序的過程中,當(dāng)出現(xiàn)CPU以外的某種情況時,由服務(wù)對象向CPU發(fā)出中斷請求信號,要求CPU暫時中斷當(dāng)前程序的執(zhí)行而轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序,待處理程序執(zhí)行完畢后,再繼續(xù)執(zhí)行原來被中斷的程序。這種程序在執(zhí)行過程中由于外界的原因而被中間打斷的情況稱為“中斷”。與中斷有關(guān)的寄存器有4個,分別為中斷源寄存器TCON和SCON、中斷允許控制寄存器IE和中斷優(yōu)先級控制寄存器IP;中斷源有5個,分別為外部中斷0請求 、外部中斷1請求、定時器0溢出中斷請求TF0、定時器1溢出中斷請求TF1和串行中斷請求RI或TI。5個中斷源的排列順序由中斷優(yōu)先級控制寄存器IP和順序查詢邏輯電路共同決定,5個中斷源分別對應(yīng)5個固定的中斷入口地址。 第二節(jié) 中斷源與中斷申請標(biāo)志中斷源(1)外部中斷0請求,由P3.2腳輸入。通過IT0腳(TCON.0)來決定是低電平有效還是下跳變有效。一旦輸入信號有效,就向CPU申請中斷,并建立IE0標(biāo)志。(2)外部中斷1請求,由P3.3腳輸入。通過IT1腳TCON.2)來決定是低電平有效還是下跳變有效。一旦輸入信號有效,就向CPU申請中斷,并建立IE1標(biāo)志。 (3)TF0:定時器T0溢出中斷請求。當(dāng)定時器0產(chǎn)生溢出時,定時器0中斷請求標(biāo)志位(TCON.5)置位(由硬件自動執(zhí)行),請求中斷處理。(4)TF1:定時器1溢出中斷請求。當(dāng)定時器1產(chǎn)生溢出時,定時器1中斷請求標(biāo)志位(TCON.7)置位(由硬件自動執(zhí)行),請求中斷處理。(5) RI或TI:串行中斷請求。當(dāng)接收或發(fā)送完一串行幀時,內(nèi)部串行口中斷請求標(biāo)志位RI(SCON.0)或TI(SCON.1)置

溫馨提示

  • 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

提交評論