單片機(jī)原理及應(yīng)用 第二章_第1頁
單片機(jī)原理及應(yīng)用 第二章_第2頁
單片機(jī)原理及應(yīng)用 第二章_第3頁
單片機(jī)原理及應(yīng)用 第二章_第4頁
單片機(jī)原理及應(yīng)用 第二章_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機(jī)原理及應(yīng)用第二章第一頁,共七十七頁,編輯于2023年,星期日§2.1MCS-51單片機(jī)邏輯結(jié)構(gòu)與引腳功能一、MCS-51系列單片機(jī)的基本組成第二頁,共七十七頁,編輯于2023年,星期日80C51單片機(jī)包括:面向控制的8位CPU和指令。4K字節(jié)的程序存儲器(Flash)。128字節(jié)的數(shù)據(jù)存儲器,21個特殊功能寄存器。可編程并行I/O口PO-P3,有32位雙向輸入/輸出線。一個全雙工串行口。兩個16位定時器/計數(shù)器。五個中斷源,兩個中斷優(yōu)先級的中斷結(jié)構(gòu)。一個片內(nèi)時鐘振蕩器和時鐘電路??蓪ぶ?4K字節(jié)的程序存儲器和64K字節(jié)的外部數(shù)據(jù)存儲器。第三頁,共七十七頁,編輯于2023年,星期日二、MCS-51系列單片機(jī)的內(nèi)部結(jié)構(gòu)

MCS-51系列單片機(jī)的內(nèi)部結(jié)構(gòu)框圖第四頁,共七十七頁,編輯于2023年,星期日1、CPU

CPU由運(yùn)算器、控制器及一些特殊功能寄存器組組成、其結(jié)構(gòu)形式與工作原理和一般的微處理器相同。可執(zhí)行下述算術(shù)/邏輯運(yùn)算。1.1、運(yùn)算器算術(shù)與邏輯運(yùn)算部件ALUALU由加法器和其他邏輯電路等組成。它的功能是,完成各種算術(shù)運(yùn)算和邏輯運(yùn)算,它可以進(jìn)行加、減、乘、除、加1、減1、比較等算術(shù)運(yùn)算和與、或、非、異或、取反、取補(bǔ)等邏輯運(yùn)算。以及循環(huán)移位、位操作等。第五頁,共七十七頁,編輯于2023年,星期日帶進(jìn)位和不帶進(jìn)位的加法帶進(jìn)位的減法兩個八位無符號數(shù)的乘法和除法加1或減1操作邏輯“與”、“或”、“異或”操作、字節(jié)取反操作左右循環(huán)移位操作半字節(jié)交換二十進(jìn)制(BCD碼)調(diào)整比較和條件轉(zhuǎn)移的判斷等操作“位”操作:置位、清零、取反、條件判斷、邏輯“與”、“或”等操作第六頁,共七十七頁,編輯于2023年,星期日寄存器累加器ACC

累加器ACC,簡稱累加器A,它是一個8位寄存器,通過暫存器與ALU相連,在算術(shù)運(yùn)算和邏輯運(yùn)算時,通常用累加器A存放一個參加操作的數(shù),作為ALU的一個輸入,而ALU的運(yùn)算結(jié)果又存入累加器A中。寄存器B

寄存器B一般用于乘、除法指令,它與累加器A配合使用。運(yùn)算前,寄存器B中存放乘數(shù)或除數(shù);運(yùn)算后,B中保存了乘積的高位字節(jié)或商的余數(shù)部分。此外,寄存器B可作為存放中間結(jié)果的暫存寄存器使用。第七頁,共七十七頁,編輯于2023年,星期日程序狀態(tài)字寄存器PSW

運(yùn)算操作過程中的一些狀態(tài)信息存放在程序狀態(tài)字寄存器PSW中,PSW寄存器的字節(jié)地址是DOH,PSW各位的符號與定義如下:

C—進(jìn)位標(biāo)志(CY),有進(jìn)位或借位時,C=1,否則C=0;Cy=1提示無符號數(shù)運(yùn)算超出范圍。在進(jìn)行位操作時,CY作為位累加器C,也稱為布爾累加器。此外,循環(huán)移位指令和比較轉(zhuǎn)移指令也會影響CY標(biāo)志。

AC—輔助進(jìn)位標(biāo)志,當(dāng)累加器中A3向A4有進(jìn)位或錯位時AC=1,否則AC=0;

F0—用戶標(biāo)志位,可由用戶置“1”,或置“0”,作為某一種狀態(tài)的標(biāo)志;第八頁,共七十七頁,編輯于2023年,星期日

OV—溢出標(biāo)志,計算機(jī)中,帶符號數(shù)通常是用補(bǔ)碼表示的.對于單字節(jié)二進(jìn)制補(bǔ)碼,其所能表示數(shù)的范圍是-128到+127,如果運(yùn)算結(jié)果超出了這個數(shù)值范圍,就稱為溢出。一般兩個同號數(shù)相加或兩個異號數(shù)相減,有可能發(fā)生溢出;而兩個同號數(shù)相減或兩個異號數(shù)相加,則不會發(fā)生溢出。第九頁,共七十七頁,編輯于2023年,星期日當(dāng)兩個正數(shù)相加,若和超過+127時,其結(jié)果的符號由正變負(fù),即得出負(fù)數(shù),這時OV=l。

同理,兩負(fù)數(shù)相加,結(jié)果應(yīng)為負(fù)數(shù),但因和數(shù)為-241<-l28,有溢出而使結(jié)果為正數(shù),此時OV=1。第十頁,共七十七頁,編輯于2023年,星期日在乘法運(yùn)算時,OV=1表示結(jié)果超過了255,即乘積分別在寄存器B和A中;反之表示乘積在A中。在除法運(yùn)算時,OV=1表示除數(shù)為0,不能進(jìn)行除法,反之除數(shù)不為0,可以進(jìn)行除法。第十一頁,共七十七頁,編輯于2023年,星期日P—奇偶標(biāo)志,累加器A中“1”的個數(shù)為奇數(shù)時P=1,否則P=0;RS1,RS0:——工作寄存器組選擇控制位。

000組(內(nèi)部RAM地址00H~07H)011組(內(nèi)部RAM地址08H~0FH)102組(內(nèi)部RAM地址10H~17H)113組(內(nèi)部RAM地址18H~1FH)

MCS—51單片機(jī)的零標(biāo)志z不包含在PSW寄存器中,而直接安排在累加器A中第十二頁,共七十七頁,編輯于2023年,星期日1.2控制器程序計數(shù)器PC

程序計數(shù)器PC(ProgramCounter)是16位專用寄存器,其內(nèi)容表示下一條要執(zhí)行的指令的地址,PC的內(nèi)容有自動加1的功能。當(dāng)CPU順序地執(zhí)行指令時,PC的內(nèi)容以增量的規(guī)律變化著,于是當(dāng)一條指令取出后,PC就指向下一條指令的地址,如果不按順序執(zhí)行指令,轉(zhuǎn)移到某地址再繼續(xù)執(zhí)行指令,這時在跳轉(zhuǎn)之前必須將轉(zhuǎn)向的程序的入口地址送往程序計數(shù)器,以便從該入口地址開始執(zhí)行程序。由此可見,PC實際上是一個地址指示器,改變PC中的內(nèi)容就可以改變指令執(zhí)行的次序,即改變程序執(zhí)行的路線。當(dāng)系統(tǒng)復(fù)位后,PC=0000H,CPU便從這一固定的入口地址開始執(zhí)行程序。第十三頁,共七十七頁,編輯于2023年,星期日堆棧指針SP

堆棧是為暫存數(shù)據(jù)或返回地址而在RAM區(qū)專門開辟的一個數(shù)據(jù)存放區(qū),并按照“后進(jìn)先出”的原則進(jìn)行操作。

堆棧指針SP(StackPointer)是一個8位寄存器,用它存放棧頂?shù)牡刂?。進(jìn)棧時,SP自動加1,將數(shù)據(jù)壓入SP所指定的地址單元;出棧時,將SP所指示的地址單元中的數(shù)據(jù)彈出,然后SP自動減1,因此,SP總是指向棧頂。

系統(tǒng)復(fù)位后,SP初始化為07H,所以第一個壓入堆棧的數(shù)據(jù)存放到08H單元,即堆棧區(qū)為從07H單元開始的一部分連續(xù)存儲單元。第十四頁,共七十七頁,編輯于2023年,星期日

SP的內(nèi)容是可編程的,因而可將堆棧區(qū)定位到內(nèi)部數(shù)據(jù)存儲器的任意位置。堆棧的大小可用“深度”表示,用戶在設(shè)定堆棧區(qū)時應(yīng)該考慮到堆棧的深度,以便能滿足子程序嵌套時的需要。第十五頁,共七十七頁,編輯于2023年,星期日數(shù)據(jù)指針DPTR

數(shù)據(jù)指針DPTR(DataPointer)是一個16位的專用寄存器,專門用來存放16位數(shù)據(jù)存儲器的地址,以便對外部數(shù)據(jù)存儲器RAM讀寫數(shù)據(jù),作間接寄存器使用。它可指向64K字節(jié)范圍內(nèi)的任一存儲單元,也可以分成高字節(jié)DPH和低字節(jié)DPL兩個獨立的8位寄存器,這為修改DPTR的內(nèi)容提供了方便。指令寄存器、指令譯碼器和CPU定時控制

CPU從程序存儲器內(nèi)取出的指令首先要送到指令寄存器,然后送入指令譯碼器,由指令譯碼器對指令進(jìn)行譯碼,即把指令轉(zhuǎn)變成執(zhí)行該指令所需要的信號,使計算機(jī)正確地執(zhí)行程序所要求的各種操作。第十六頁,共七十七頁,編輯于2023年,星期日三、MCS-51

單片機(jī)的引腳功能

40只引腳雙列直插封裝(DIP)44只引腳方形封裝方式為(4只無用)第十七頁,共七十七頁,編輯于2023年,星期日40只引腳按其功能來分,可分為3類:(1)電源及時鐘引腳:Vcc、Vss;XTAL1、XTAL2。(2)控制引腳:/PSEN、/EA、ALE、RESET(即RST)。(3)I/O口引腳:P0、P1、P2、P3,為4個8位I/O口的外部引腳。電源引腳(1)Vcc:+5V電源;(2)Vss:接地。時鐘引腳

(1)XTAL1(19腳):如果采用外接晶體振蕩器時,此引腳應(yīng)接地。(2)XTAL2(18腳):接外部晶體的另一端。第十八頁,共七十七頁,編輯于2023年,星期日并行I/O:共4個口,32根I/O線。

P0口:8位雙向I/O口。當(dāng)使用片外存儲器(ROM及RAM)時,作低八位地址和數(shù)據(jù)總線分時復(fù)用。能驅(qū)動8個LSTTL負(fù)載。

P1口:8位、準(zhǔn)雙向I/O口。

P2口:8位、準(zhǔn)雙向I/O口。當(dāng)使用片外存儲器(ROM及RAM)時,輸出高8位地址。P2口可以驅(qū)動4個LSTTL負(fù)載。

P3口:8位、準(zhǔn)雙向I/O口,具有內(nèi)部上拉電路。P3提供各種替代功能。在提供這些功能時,其輸出鎖存器應(yīng)由程序置1。P3口可以驅(qū)動4個LSTTL負(fù)載。第十九頁,共七十七頁,編輯于2023年,星期日串行口:P3.0——RXD串行輸入口P3.1——TXD串行輸出口中斷:P3.2——外部中斷0輸入P3.3——外部中斷1輸入定時器/計數(shù)器:P3.4——定時器/計數(shù)器T0的外部輸入P3.5——定時器/計數(shù)器T1的外部輸入數(shù)據(jù)存儲器選通:P3.6——WR低電平有效,輸出,片外存儲器寫選通。P3.7——RD低電平有效,輸出,片外存儲器讀選通。第二十頁,共七十七頁,編輯于2023年,星期日控制線RST/VPD—復(fù)位輸入信號,高電平有效。在振蕩器工作時,在RST上作用兩個機(jī)器周期以上的高電平,將器件復(fù)位。其第二功能為備用電源輸入端。EA/Vpp—片外程序存儲器訪問允許信號,低電平有效。EA=1,選擇片內(nèi)程序存儲器(80C51為4KB,80C52為8KB);EA=0,則程序存儲器全部在片外而不管片內(nèi)是否有程序存儲器。其第二功能Vpp為編程電壓輸入端,使用8751編程時,施加21V的編程電壓。第二十一頁,共七十七頁,編輯于2023年,星期日ALE/PROG——地址鎖存允許信號,輸出。在訪問片外存儲器或I/O時,用于鎖存低八位地址,以實現(xiàn)低八位地址與數(shù)據(jù)的隔離。由于ALE以1/6的振蕩頻率固定速率輸出,可作為對外輸出的時鐘或用作外部定時脈沖。在EPROM編程期間,作輸入。輸入編程脈沖(PROG)

ALE可以驅(qū)動8個LSTTL負(fù)載。PSEN——片外程序存儲器讀選通信號,低電平有效。在從片外程序存儲器取指期間,在每個機(jī)器周期中,當(dāng)有效時,程序存儲器的內(nèi)容被送上P0口(數(shù)據(jù)總線)。第二十二頁,共七十七頁,編輯于2023年,星期日四、MCS-51的外部總線結(jié)構(gòu)第二十三頁,共七十七頁,編輯于2023年,星期日第二十四頁,共七十七頁,編輯于2023年,星期日§2.2MCS-51的尋址空間與存儲器結(jié)構(gòu)

80C51在物理結(jié)構(gòu)上有四個存儲空間:片內(nèi)程序存儲器、片外程序存儲器、片內(nèi)數(shù)據(jù)存儲器和片外數(shù)據(jù)存儲器。在邏輯上,80C51有三個存儲空間:片內(nèi)外統(tǒng)一編址的64K字節(jié)的程序存儲器地址空間(用16位地址)、片內(nèi)128字節(jié)的數(shù)據(jù)存儲器地址空間(用8位地址)、片外64K字節(jié)的數(shù)據(jù)存儲器地址空間。在訪問這三個不同的邏輯空間時,應(yīng)采用不同的指令。第二十五頁,共七十七頁,編輯于2023年,星期日§2.2MCS-51的尋址空間與存儲器結(jié)構(gòu)第二十六頁,共七十七頁,編輯于2023年,星期日一、程序存儲器EA引腳接高電平時,程序從片內(nèi)程序存儲器0000H開始執(zhí)行,即訪問片內(nèi)存儲器;當(dāng)PC值超出片內(nèi)ROM容量時,會自動轉(zhuǎn)向片外程序存儲器空間執(zhí)行。EA引腳接低電平時,迫使系統(tǒng)全部執(zhí)行片外程序存儲器0000H開始存放的程序。對8031,由于片內(nèi)無ROM/EPROM,必須使EA=0,程序存儲器只能片外擴(kuò)展,即0000H-FFFFH都是指向片外EPROM的。第二十七頁,共七十七頁,編輯于2023年,星期日

在程序存儲器中,有六個地址單元被保留用于某些特定的地址,如表所示。表

5種中斷源的中斷入口地址外部中斷0 0003H

定時器0(T0) 000BH

外部中斷1 0013H

定時器1(T1) 001BH

串行口 0023H第二十八頁,共七十七頁,編輯于2023年,星期日

單片機(jī)復(fù)位后,程序計數(shù)器PC的內(nèi)容為0000H,即系統(tǒng)從0000H單元開始執(zhí)行程序。一般在0000H-0002H單元存放一條絕對轉(zhuǎn)移指令,而用戶設(shè)計的主程序應(yīng)從跳轉(zhuǎn)后的地址開始存放,以便CPU復(fù)位后,PC從0000H起始地址跳轉(zhuǎn)到用戶程序去執(zhí)行。5個中斷源的中斷入口地址間隔都只有8個單元,存放中斷服務(wù)程序往往是不夠用的。所以通常在這些入口存放一條絕對轉(zhuǎn)移指令,使程序轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序的起始地址。例:ORG0000HLJMPSTART

……..ORG1000HSTART:MOVTMOD,#27H

……..第二十九頁,共七十七頁,編輯于2023年,星期日二、數(shù)據(jù)存儲器

數(shù)據(jù)存儲器用于存放運(yùn)算的中間結(jié)果、數(shù)據(jù)暫存和緩沖以及標(biāo)志位等。所以數(shù)據(jù)存儲器由讀寫存儲器RAM構(gòu)成。8052片內(nèi)RAM有256字節(jié),片外最大可擴(kuò)展64K字節(jié)RAM。片內(nèi)和片外RAM是獨立編址的,用不同的指令來訪問不同的數(shù)據(jù)存儲器,即用MOV指令訪問片內(nèi)RAM,而用MOVX指令訪問片外RAM。片內(nèi)數(shù)據(jù)存儲器片內(nèi)數(shù)據(jù)存儲器的配置如圖所示。片內(nèi)數(shù)據(jù)存儲器為8位地址,(8052)最大可尋址256個單元(00H-FFH),這是最靈活的地址空間。它由工作寄存器區(qū)、位尋址區(qū)和數(shù)據(jù)緩沖區(qū)組成,不同的地址區(qū)域內(nèi),功能不完全相同。第三十頁,共七十七頁,編輯于2023年,星期日片內(nèi)數(shù)據(jù)存儲器通用RAM區(qū)80單元可位尋址區(qū)16單元工作寄存區(qū)第三十一頁,共七十七頁,編輯于2023年,星期日片內(nèi)數(shù)據(jù)存儲器特殊功能寄存器第三十二頁,共七十七頁,編輯于2023年,星期日1、工作寄存器000組(00H~07H)011組(08H~0FH)102組(10H~17H)113組(18H~1FH)第三十三頁,共七十七頁,編輯于2023年,星期日1、工作寄存器在低128字節(jié)RAM區(qū)中,地址00H-1FH為通用工作寄存器區(qū),共分為四個組,每組有8個工作寄存器R0-R7,共占用32個單元。工作寄存器和RAM地址的對應(yīng)關(guān)系如表所示。每組寄存器均可選作CPU當(dāng)前使用的工作寄存器組。用戶可以通過指令對PSW中RSI和RSO的設(shè)置來決定CPU當(dāng)前所使用的寄存器組。寄存器組別確定以后,究竟使用組中的哪一個寄存器就由8位地址號指示了。CPU復(fù)位以后,由于PSW中各位均為0,所以選定第0組工作寄存器。若程序中并不需要用四個工作寄存器組,那么剩下的工作寄存器組所對應(yīng)的地位單元可以作為一般的數(shù)據(jù)緩沖區(qū)使用。第三十四頁,共七十七頁,編輯于2023年,星期日2、位尋址區(qū)

20H-2FH為位尋址區(qū)。每個單元有8位,16個單元共128位,每一位分配有一個8位地址,稱為位地址,其范圍是00H-7FH。位尋址區(qū)的每一位都可以當(dāng)作一個軟件觸發(fā)器,由程序直接進(jìn)行位處理。程序設(shè)計時,通常把各種程序狀態(tài)標(biāo)志、位控制變量設(shè)在位尋址區(qū)內(nèi)。同樣,位尋址區(qū)的RAM單元也可以作為一般的數(shù)據(jù)緩沖器使用。

30H-7FH為數(shù)據(jù)緩沖區(qū),用來存放數(shù)據(jù)。此外,用戶堆棧一般設(shè)在這個區(qū)間。第三十五頁,共七十七頁,編輯于2023年,星期日3、特殊功能寄存器SFR

在高128字節(jié)RAM區(qū),80H-FFH地址為特殊功能寄存器SFR(SpecialFunctionalRegister)區(qū),SFR是用于對片內(nèi)功能模塊進(jìn)行管理、控制、監(jiān)視的控制寄存器和狀態(tài)寄存器,是一個具有特殊功能的RAM區(qū)。80C51有21個特殊功能寄存器,如I/O口鎖存器,定時器、串行口緩沖器以及各種控制寄存器和狀態(tài)寄存器都以特殊功能寄存器的形式出現(xiàn),離散地分布在80H-FFH范圍內(nèi)。特殊功能寄存器的名稱如下:第三十六頁,共七十七頁,編輯于2023年,星期日3、特殊功能寄存器SFR第三十七頁,共七十七頁,編輯于2023年,星期日3、特殊功能寄存器SFRA(或ACC):累加器AB:B寄存器PSW:程序狀態(tài)字SP:堆棧指針DPTR:數(shù)據(jù)指針(由DPH和DPL組成)PO-P3:P0口鎖存器一P3口鎖存器IP:中斷優(yōu)先級控制寄存器IE:中斷允許控制寄存器第三十八頁,共七十七頁,編輯于2023年,星期日TMOD:定時器/計數(shù)器方式控制寄存器TCON:定時器/計數(shù)器控制寄存器TH0:定時器/計數(shù)器0(高字節(jié))TL0:定時器/計數(shù)器0(低字節(jié))THI:定時器/計數(shù)器1(高字節(jié))TLI:定時器/計數(shù)器1(低字節(jié))SCON:串行口控制寄存器SBUF:串行口數(shù)據(jù)緩沖器PCON:電源控制寄存器第三十九頁,共七十七頁,編輯于2023年,星期日片外數(shù)據(jù)存儲區(qū)片外數(shù)據(jù)存儲器是在外部存放數(shù)據(jù)的區(qū)域,這一區(qū)域只能用寄存器間接尋址的方法訪問,所用的寄存器為DPTR、R1或R0。當(dāng)用R0、R1尋址時,由于R0、R1為8位寄存器,因此最大尋址范圍為256B;當(dāng)用DPTR尋址時,由于DPTR為16位寄存器,因此最大尋址范圍為64KB。第四十頁,共七十七頁,編輯于2023年,星期日§2.3MCS-51的并行I/O口

80C51單片機(jī)共有四個8位的并行雙向口,計有32根輸入/輸出(I/O)口線。各口的每一位均由鎖存器、輸出驅(qū)動器和輸入緩沖器組成??衫萌我欢丝谳斎胼敵鰯?shù)據(jù),每條口線也可單獨使用,或在任一位上輸入輸出開關(guān)量,或?qū)ξ贿M(jìn)行邏輯操作。除P1口僅做I/O口外,其余各端口均具有雙功能,可由用戶選擇使用。第四十一頁,共七十七頁,編輯于2023年,星期日

一、P0端口

字節(jié)地址為80H,

位地址80H~87H。

P0口某一位的電路包括:(1)一個數(shù)據(jù)輸出鎖存器,用于數(shù)據(jù)位的鎖存。(2)兩個三態(tài)的數(shù)據(jù)輸入緩沖器,分別用于鎖存器數(shù)據(jù)和引腳數(shù)據(jù)的輸入緩沖。(3)一個多路轉(zhuǎn)接開關(guān)MUX,實現(xiàn)鎖存器輸出和地址/數(shù)據(jù)線之間的接通轉(zhuǎn)接。(4)數(shù)據(jù)輸出的驅(qū)動和控制電路,由兩只場效應(yīng)管(FET)組成,上面的那只場效應(yīng)管構(gòu)成上拉電路。第四十二頁,共七十七頁,編輯于2023年,星期日P0口傳送地址或數(shù)據(jù)時,CPU發(fā)出控制信號1,打開上面的與門,使多路轉(zhuǎn)接開關(guān)MUX打向上邊,使內(nèi)部地址/數(shù)據(jù)線與下面的場效應(yīng)管處于反相接通狀態(tài)。這時的輸出驅(qū)動電路由于上下兩個FET處于反相,形成推拉式電路結(jié)構(gòu),大大的提高了負(fù)載能力。而當(dāng)輸入數(shù)據(jù)時,數(shù)據(jù)信號則直接從引腳通過輸入緩沖器進(jìn)入內(nèi)部總線。第四十三頁,共七十七頁,編輯于2023年,星期日

P0口作為通用的I/O口使用。這時,CPU發(fā)來的“控制”信號為低電平0,封鎖了與門,并將輸出驅(qū)動電路的上拉場效應(yīng)管T1截止,而多路轉(zhuǎn)接開關(guān)MUX打向下邊,與D鎖存器的/Q端接通。當(dāng)P0口作為輸出口使用時,來自CPU的“寫入”脈沖加在D鎖存器的CP端,內(nèi)部總線上的數(shù)據(jù)寫入D鎖存器,并向端口引腳P0.x輸出。但要注意,由于輸出電路是漏極開路(因為這時上拉場效應(yīng)管截止),必須外接上拉電阻才能有高電平輸出。第四十四頁,共七十七頁,編輯于2023年,星期日

當(dāng)P0口作為輸入口使用時,應(yīng)區(qū)分“讀引腳”和“讀鎖存器”?!白x引腳”就是直接讀取引腳P0.x上的狀態(tài),這時由“讀引腳”信號把下方緩沖器打開,引腳上的狀態(tài)經(jīng)緩沖器讀入內(nèi)部總線;“讀引腳”前該口鎖存器必須先置1。

MOVP0,#0FFHMOVA,P0第四十五頁,共七十七頁,編輯于2023年,星期日

“讀鎖存器”則是“讀鎖存器”信號打開上面的緩沖器把鎖存器Q端的狀態(tài)讀入內(nèi)部總線。CPU執(zhí)行一次讀-改-寫操作。

ANL,ORL,XRL;JBC;CPL;INC,DEC;DJNZ;MOV;CLR,SETB;這些指令均執(zhí)行一次讀-改-寫操作。第四十六頁,共七十七頁,編輯于2023年,星期日二、P1端口

字節(jié)地址為90H,位地址90H~97H。第四十七頁,共七十七頁,編輯于2023年,星期日P1口只作為通用的I/O口使用,在電路結(jié)構(gòu)上與P0口有兩點區(qū)別:(1)因為P1口只傳送數(shù)據(jù),所以不再需要多路轉(zhuǎn)接開關(guān)MUX。(2)由于P1口用來傳送數(shù)據(jù),因此輸出電路中有上拉電阻,這樣電路的輸出不是三態(tài)的,所以P1口是準(zhǔn)雙向口。因此:(1)P1口作為輸出口使用時,與P0口不同的是,外電路無需再接上拉電阻。(2)P1口作為輸入口使用時,應(yīng)先向其鎖存器先寫入“1”,使輸出驅(qū)動電路的FET截止。

MOVP1,#0FFHMOVA,P1第四十八頁,共七十七頁,編輯于2023年,星期日三、P2端口字節(jié)地址為A0H,位地址A0H~A7H。

第四十九頁,共七十七頁,編輯于2023年,星期日

在實際應(yīng)用中,因為P2口用于為系統(tǒng)提供高位地址,因此同P0口一樣,在口電路中有一個多路轉(zhuǎn)接開關(guān)MUX。但MUX的一個輸入端不再是“地址/數(shù)據(jù)”,而是單一的“地址”,這是因為P2口只作為地址線使用。當(dāng)P2口用作為高位地址線使用時,多路轉(zhuǎn)接開關(guān)應(yīng)接向“地址”端。正因為只作為地址線使用,口的輸出用不著是三態(tài)的,所以,P2口也是一個準(zhǔn)雙向口。此外,P2口也可以作為通用I/O口使用,這時,多路轉(zhuǎn)接開關(guān)接向鎖存器Q端。P2口作為輸入口使用時,應(yīng)先向其鎖存器先寫入“1”,使輸出驅(qū)動電路的FET截止。第五十頁,共七十七頁,編輯于2023年,星期日四、P3端口

P3口的字節(jié)地址為B0H,位地址為B0H~B7H

第五十一頁,共七十七頁,編輯于2023年,星期日P3口的第二功能定義。表P3口的第二功能定義

口引腳第二功能

P3.0 RXD(串行輸入口)

P3.1 TXD(串行輸出口)

P3.2 /INT0(外部中斷0)

P3.3 /INT1(外部中斷1)

P3.4 T0(定時器0外部計數(shù)輸入)

P3.5 T1(定時器1外部計數(shù)輸入)

P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)

P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)第五十二頁,共七十七頁,編輯于2023年,星期日(1)當(dāng)作通用的I/O口使用時,電路中的“第二輸出功能”線應(yīng)保持高電平,與非門開通,以使鎖存器的Q端輸出通路保持暢通。當(dāng)輸入信號時,該鎖存器應(yīng)預(yù)先置“1”

。引腳信號通過緩沖器送到內(nèi)部總線。(2)作為第二功能用:輸出時,Q=1,打開與非門,第二功能輸出;輸入時,引腳信號通過緩沖器送到第二輸入功能端。第五十三頁,共七十七頁,編輯于2023年,星期日P0~P3端口功能小結(jié):(1)P0~P3口都是并行I/O口,都可用于數(shù)據(jù)的輸入和輸出,但P0口和P2口除了可進(jìn)行數(shù)據(jù)的輸入/輸出外,通常用來構(gòu)建系統(tǒng)的數(shù)據(jù)總線和地址總線,所以在電路中有一個多路轉(zhuǎn)接開關(guān)MUX,以便進(jìn)行兩種用途的轉(zhuǎn)換。而P1口和P3口沒有構(gòu)建系統(tǒng)的數(shù)據(jù)總線和地址總線的功能,因此,在電路中沒有多路轉(zhuǎn)接開關(guān)MUX。由于P0口可作為地址/數(shù)據(jù)復(fù)用線使用,需傳送系統(tǒng)的低8位地址和8位數(shù)據(jù),因此MUX的一個輸入端為“地址/數(shù)據(jù)”信號。而P2口僅作為高位地址線使用,不涉及數(shù)據(jù),所以MUX的一個輸入信號為“地址”。

第五十四頁,共七十七頁,編輯于2023年,星期日(2)在4個口中只有P0口是一個真正的雙向口,P1~P3這3個口都是準(zhǔn)雙向口。原因是在應(yīng)用系統(tǒng)中,P0口作為系統(tǒng)的數(shù)據(jù)總線使用時,為保證數(shù)據(jù)的正確傳送,需要解決芯片內(nèi)外的隔離問題,即只有在數(shù)據(jù)傳送時芯片內(nèi)外才接通;不進(jìn)行數(shù)據(jù)傳送時,芯片內(nèi)外應(yīng)處于隔離狀態(tài)。為此,要求P0口的輸出緩沖器是一個三態(tài)門。在P0口中輸出三態(tài)門是由兩只場效應(yīng)管(FET)組成,所以說它是一個真正的雙向口。而其它的三個口P1~P3中,上拉電阻代替P0口中的場效應(yīng)管,輸出緩沖器不是三態(tài)的,因此不是真正的雙向口,只能稱其為準(zhǔn)雙向口。第五十五頁,共七十七頁,編輯于2023年,星期日(3)P3口的口線具有第二功能,為系統(tǒng)提供一些控制信號。因此在P3口電路增加了第二功能控制邏輯。這是P3口與其它各口的不同之處。第五十六頁,共七十七頁,編輯于2023年,星期日§2.4CPU時序及輔助電路一、時鐘電路計算機(jī)電路為時序電路,即計算機(jī)是以時鐘為節(jié)拍順序工作的,所以,時鐘電路是計算機(jī)的重要組成部分。時鐘的頻率決定了計算機(jī)的運(yùn)算速度。常用的時鐘電路設(shè)計有兩種方式,一種是內(nèi)部時鐘方式,另一種方式為外部時鐘方式。第五十七頁,共七十七頁,編輯于2023年,星期日

內(nèi)部時鐘方式

內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,反相放大器的輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。C1和C2典型值通常選擇為30pF左右。晶體的振蕩頻率在1.2MHz~12MHz之間?,F(xiàn)在的某些高速單片機(jī)芯片的時鐘頻率已達(dá)40MHz。第五十八頁,共七十七頁,編輯于2023年,星期日

外部時鐘方式

MCS-51單片機(jī)也可以采用外部時鐘方式,這時使用外部振蕩器,由它產(chǎn)生的外部時鐘脈沖信號接至XTAL2端直接送至內(nèi)部時鐘電路,XTAL1端接地,如圖a所示。通常接的外部信號頻率為低于12MHz的方波信號。這種方式適合于多塊芯片同時工作,便于同步。此外,由于XTAL2端的邏輯電平不是TTL的,故需外接一個上拉電阻,以便電平匹配。第五十九頁,共七十七頁,編輯于2023年,星期日

外部時鐘方式

對于CHMOS型的80C51單片機(jī),因內(nèi)部時鐘發(fā)生器的信號取自反相放大器的輸入端,故采用外部時鐘脈沖信號時,外部時鐘信號應(yīng)接至XTALI,而XTAL2懸空。外部時鐘信號的連接方式如圖b所示。第六十頁,共七十七頁,編輯于2023年,星期日二、復(fù)位操作和復(fù)位電路1復(fù)位操作

單片機(jī)的初始化操作,復(fù)位引腳RST加上大于2個機(jī)器周期(即24個時鐘振蕩周期)的高電平就可使MCS-51復(fù)位。復(fù)位時,PC初始化為0000H,使MCS-51單片機(jī)從0000H單元開始執(zhí)行程序。除系統(tǒng)的正常初始化外,當(dāng)由于程序運(yùn)行出錯或操作錯誤處于死機(jī)狀態(tài),為擺脫死機(jī)狀態(tài),也需按復(fù)位鍵使MCS-51重新啟動。除PC之外,復(fù)位操作還對其它一些寄存器有影響,見下表

SP=07H,而4個I/O端口P0-P3的引腳均為高電平第六十一頁,共七十七頁,編輯于2023年,星期日

在復(fù)位有效期間,MCS-51的ALE引腳和PSEN引腳均為高電平,且內(nèi)部RAM的狀態(tài)不受復(fù)位的影響。第六十二頁,共七十七頁,編輯于2023年,星期日2復(fù)位電路

片內(nèi)復(fù)位結(jié)構(gòu)

計算機(jī)在啟動運(yùn)行時都需要復(fù)位,使CPU和系統(tǒng)中的其他部件都處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。內(nèi)部復(fù)位結(jié)構(gòu)如下圖。第六十三頁,共七十七頁,編輯于2023年,星期日

MCS-51單片機(jī)通常采用上電自動復(fù)位和開關(guān)手動復(fù)位兩種方式。上電復(fù)位是指單片機(jī)只要一上電,便自動地進(jìn)入復(fù)位狀態(tài)。圖a是上電復(fù)位電路。在通電瞬間,電容c通過電阻R充電,RST端出現(xiàn)正脈沖,用以復(fù)位。關(guān)于參數(shù)的選定,應(yīng)保證復(fù)位高電平持續(xù)時間(即正脈沖寬度)大于2個機(jī)器周期。手動復(fù)位是指通過一按鈕開關(guān),使單片機(jī)進(jìn)入復(fù)位狀態(tài)。通常手動復(fù)位和上電復(fù)位組合,其電路如圖b所示。第六十四頁,共七十七頁,編輯于2023年,星期日

在實際應(yīng)用系統(tǒng)中,為了保證復(fù)位電路可靠地工作,常將RC電路產(chǎn)生的復(fù)位信號再經(jīng)施密特觸發(fā)電路整形,然后接入單片機(jī)的復(fù)位端和外圍電路的復(fù)位端,如圖所示。其中,圖a是上電自動復(fù)位電路,圖b是上電復(fù)位與手動復(fù)位組合電路。第六十五頁,共七十七頁,編輯于2023年,星期日三、CPU的工作時序CPU執(zhí)行一條指令的各個微操作,所對應(yīng)的脈沖信號遵循的時間順序稱為時序。為了直觀地展現(xiàn)CPU的時序,把執(zhí)行一條指令時相應(yīng)信號線上有關(guān)信息的變化按時間序列以特定的波形表示出來,這就是時序圖,或簡稱為時序。由于指令的字節(jié)數(shù)不同,執(zhí)行的操作也不同,因而執(zhí)行不同的指令所需要的時間差別較大。為了便于說明,按指令的執(zhí)行過程定義了幾種周期,即振蕩周期、時鐘周期、機(jī)器周期、指令周期。

第六十六頁,共七十七頁,編輯于2023年,星期日1、時序的基本概念振蕩周期:為單片機(jī)提供定時信號的振蕩源的周期。時鐘周期(狀態(tài)周期):單片機(jī)提供定時信號的振蕩源的振蕩脈沖經(jīng)2分頻后形成狀態(tài)周期。狀態(tài)周期是振蕩周期的2倍。機(jī)器周期:完成一個基本操作所需要的時間稱為機(jī)器周期。80C51的一個機(jī)器周期由6個狀態(tài)周期,12個振蕩周期組成。三、CPU的工作時序第六十七頁,共七十七頁,編輯于2023年,星期

溫馨提示

  • 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

提交評論