目錄
- 一.單片機概述
- 二.單片機結(jié)構(gòu)原理
- 三.單片機硬件系統(tǒng)結(jié)構(gòu)
- 1.運算部件
- 2.控制部件
- 四.存儲器結(jié)構(gòu)
- 1.程序存儲器
- 2.數(shù)據(jù)存儲器
- 1.程序計數(shù)器PC
- 2.累加器A
- 3.B寄存器
- 4.程序狀態(tài)字寄存器PSW
- 5.堆棧指針SP
- 6.數(shù)據(jù)指針DPTR
- 7.端口P0-P3
- 8.串行數(shù)據(jù)緩沖器SBUF
- 9.定時器
- 3.外部數(shù)據(jù)存儲器
- 4.I/O端口
- 5.I/O 口的讀一修改—寫特性
- 6.復位電路
- 7.復位時片內(nèi)各寄存器的狀態(tài)
- 8.時序(未搞清楚,待更新)
- 9.MCS-51 單片機引腳功能
- 1.端口線(4×8 = 32 條)
- 2.電源線(2條)
- 3.控制線(6條)
一.單片機概述
單片機即單片機微型單片機,是將單片機主機(CPU、內(nèi)存和I/O接口)集成在一小塊硅片上的微型機。單片機為工業(yè)測控而設(shè)計,又稱微控制器(MCU)。
單片機是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把 具有數(shù)據(jù)處理能力的中央處理器CPU、 隨機存儲器 RAM、只讀存儲器 ROM、多種 I/O 口和中斷系統(tǒng)、定時器/計數(shù)器 等功能集成到一塊硅片上 構(gòu)成的一個小而完善的微型計算機系統(tǒng)。因此,單片機只需要有適當?shù)能浖屯獠吭O(shè)備,便可組成為一 個單片機控制系統(tǒng)。
二.單片機結(jié)構(gòu)原理
8051 系列單片機的主要功能如圖:
1 .數(shù)據(jù)存儲器 (RAM) :片內(nèi)為 128B 字節(jié)的 RAM ,片外最多可外擴至 64KB 。
2 .程序存儲器 (ROM / EPROM) : 8031 無此部件; 8051 為 4K ROM ; 8751 則為 4K EPROM。片外最多可外擴至 64K 字節(jié)。
3 .中斷系統(tǒng):具有 5 個中斷源(其中內(nèi)部 3 個,外部 2 個), 2 級中斷優(yōu)先權(quán)。
4 .定時器 / 計數(shù)器: 2 個 16 位的定時器/計數(shù)器,具有四種工作方式。
5 .串行口: 1 個全雙工的串行口,具有四種工作方式。
6 . P1 口、 P2 口、 P3 口、 P0 口:為 4 個并行 8 位 I / O 口。
7 .特殊功能寄存器 (SFR) : 8051 有 128 個特殊功能寄存器尋址空間,有 21 個 SFR ,用于對片內(nèi)各功能模塊進行管理、控制、監(jiān)視。實際上是一些控制寄存器和狀態(tài)寄存器,是一個特殊功能的 RAM區(qū)。
8 .微處理器 (CPU) :為 8 位的 CPU ,且內(nèi)含一個 1 位 CPU( 位處理器 ) ,不僅可處理字節(jié)數(shù)據(jù),還可以進行位變量的處理。
三.單片機硬件系統(tǒng)結(jié)構(gòu)
MCS-51 系列單片機主要包括 算術(shù)/邏輯部件 ALU 、 累加器 A(有時也稱 ACC) 、 只讀存儲器 ROM、隨機存儲器 RAM 、 指令寄存器 IR 、 程序計數(shù)器 PC 、 定時器/計數(shù)器 、 I/O 接口電路 、 程序狀態(tài)寄存器PSW 、 寄存器組 ,此外,還有 堆棧寄存器 SP , 數(shù)據(jù)指針寄存器 DPTR 等部件。這些部件集成在一塊芯片上, 通過內(nèi)部總線連接 ,構(gòu)成完整的微型計算機。如下圖所示:
1.運算部件
運算部件包括 算術(shù)邏輯部件 ALU、位處理器、累加器 A、寄存器 B、暫存器以及程序狀態(tài)字 PSW 寄存器 等。該模塊的功能是實現(xiàn)數(shù)據(jù)的算術(shù)、邏輯運算、位變量處理和數(shù)據(jù)傳送等操作。
ALU 的功能 十分強,它不僅可對 8 位變量進行邏輯“與”“或”、“異或”、循環(huán)、求補和清零等基本操作,還可以進行加、減、乘、除等基本運算。 ALU 還具有一般微處理器的 ALU 所不具備的功能,即位處理操作,它可對位 (bit) 變量進行位處理,如置位、清零、求補、測試轉(zhuǎn)移及邏輯“與”、“或”等操作。
累加器 A 是一個 8 位的累加器:從功能上看,它與一般微處理器的累加器相比沒什么特別之處,但需要說明的是 A 的進位標志 Cy 是特殊的,因為它同時又是位處理器的一位累加器。
寄存器 B 是為執(zhí)行乘法和除法操作設(shè)置的,在不執(zhí)行乘、除法操作的一般情況下可把它當作一個普通寄存器使用。
MCS-51 系列單片機的 程序狀態(tài)寄存器 PSW ,是一個 8 位可讀寫的寄存器,它的不同位包含了程序狀態(tài)的不同信息。
CY (PSW.7)進位標志位 ,在執(zhí)行算術(shù)和邏輯指令時,可以被硬件或軟件置位或清除,在位處理器中,它是位累加器。
AC (PSW.6)輔助進位標志位 ,當進行加法或減法操作而產(chǎn)生由低 4 位數(shù)向高 4 位進位或借位時,AC將被硬件置 1 ,否則就被清除。
F0 (PSW.5)標志位 ,它是由用戶使用的一個狀態(tài)標志位,可用軟件來使它置位或清除,也可以靠軟件測試 FO 以控制程序的流向。編程時,該標志位特別有用。
RS1、RS0 (PSW.4、PSW.3)寄存器區(qū) 選擇控制位 1 和 0 ,這兩位用來選擇 4 組工作寄存器區(qū)。
OV (PSW.2)溢出標志位 。當執(zhí)行算術(shù)指令時,由硬件置 1 或清 0 ,以指示溢出狀態(tài)。
PSW.1 是保留位 ,未用。
P (PSW.0)奇偶標志位 。每個指令周期都由硬件來置位或清除,以表示累加器 A 中值為 1 的位數(shù)的奇偶數(shù)。若為奇數(shù),則 P=l ,否則 P=0 。此標志位對串行口通訊中的數(shù)據(jù)傳輸有重要的意義,常用奇偶檢驗的方法來檢驗數(shù)據(jù)傳輸?shù)目煽啃浴?/span>
2.控制部件
控制部件是單片機的神經(jīng)中樞, 以主振頻率為基準(每個主振周期稱為振蕩周期) ,控制器控制 CPU的時序,對指令進行譯碼,然后發(fā)出各種控制信號,它將各個硬件環(huán)節(jié)組織在一起。
四.存儲器結(jié)構(gòu)
程序存儲器和數(shù)據(jù)存儲器具有各自獨立的尋址方式、尋址空間和控制信號。
MCS-51 的存儲器結(jié)構(gòu)如圖 所示 (內(nèi)部數(shù)據(jù) RAM 的高 128B 僅為 52 子系列單片機擁有,51 子系列無)
MCS-51 系列( 8031 和 8032 除外)有 4 個物理上相互獨立的存儲器空間,即內(nèi)、外程序存儲器和內(nèi)、外數(shù)據(jù)存儲器。邏輯上分為三個存儲空間,即 片內(nèi)外統(tǒng)一編址的 64K 字節(jié)的程序存儲器地址空間 、 256B 字節(jié)的片內(nèi)數(shù)據(jù)存儲器 以及 64K 字節(jié)的片外數(shù)據(jù)存儲器地址空間 (可擴展數(shù)據(jù) RAM 或I/O 接口)。
1.程序存儲器
程序存儲器用于存放編好的程序和表格常數(shù)。
在 MCS-51 系列的指令系統(tǒng)中,同外部程序存儲器打交道的指令僅有兩條:
MCS-51 復位后, 程序計數(shù)器 PC 的內(nèi)容為 0000H ,故系統(tǒng)必須從 0000H 單元開始取指令,執(zhí)行程序。程序存儲器中的 0000H 地址是系統(tǒng)程序的啟動地址。 一般在該單元存放 一條跳轉(zhuǎn)指令,跳向用戶設(shè)計的主程序的起始地址。
MCS-51 最多可外擴 64K 字節(jié)程序存儲器 , 64K 程序存儲器中有 5 個單元具有特殊用途, 5 個特殊單元分別對應于 5 種中斷源的中斷服務(wù)程序的入口地址:
通常在這些入口地址處都放一條跳轉(zhuǎn)指令。加跳轉(zhuǎn)指令的目的是,由于兩個中斷入口間隔僅有八個單元,存放中斷服務(wù)程序往往是不夠用的。
2.數(shù)據(jù)存儲器
數(shù)據(jù)存儲器用以存放和讀取數(shù)據(jù),它不能存放和執(zhí)行程序指令。
數(shù)據(jù)存儲器在物理上和邏輯上都分 為兩個地址空間; 內(nèi)部數(shù)據(jù)存儲器(簡稱內(nèi)部 RAM) 和 外部數(shù)據(jù)存儲器(外部 RAM) 。內(nèi)部 RAM 的地址空間為 00H-7FH,128B (8052 為 00H~0FFH 為 256B),外部RAM 地址空間為 0000H~0FFFFH 的 64KB,
兩者是由不同指令來訪問的: 訪問內(nèi)部 RAM 用 MOV 類指令 ; 訪問外部 RAM 用 MOVX 指令。
8051 內(nèi)部 RAM 的 128B 單元,可按功能分為三個區(qū)域:
(1) 從 00H~1FH 的 32B 單元是 4 個工作寄存器組 。前面已介紹每一組包括 8 個工作寄存器, 寄存器名用 R0、R1、R2、R3、R4、R5、R6、R7 表示 , 單片機執(zhí)行程序時同時只能選用其中的一組,具體使用哪一組是通過對 PSW 的 RS1、RS0 兩位的設(shè)置來實現(xiàn)的 。設(shè)置四組工作寄存器,給程序設(shè)計帶來了好處,很容易實現(xiàn)子程序嵌套、中斷嵌套時的現(xiàn)場保護,如果在用戶程序中只使用了一組內(nèi)部 RAM 單元作為工作寄存器,則其他三組 RAM 單元可作為一般的內(nèi)部 RAM 作用, MCS-51 在復位后,RS1、RS0都為 0,即指定 00H—07H 單元為 R0—R7。
(2 )地址 20H 一 2FH 的 16B 共 128 位,是可位尋址的內(nèi)部 RAM 區(qū),它們既可字節(jié)尋址,亦可位尋址。 這些位尋址單元構(gòu)成了布爾處理器的數(shù)據(jù)存儲器空間。它們的位地址定義為 00H — 7FH。
(3) 其他 80B 是只能按字節(jié)尋址的內(nèi)部 RAM 區(qū),為用戶區(qū)。MCS-51 單片機的堆棧安排在內(nèi)部 RAM 內(nèi) , 堆棧的深度以不超過內(nèi)部 RAM 的空間為限。 對 8051類芯片最多為 128B ,對 8052 類芯片最多為 256B 。
1.程序計數(shù)器PC
程序計數(shù)器 PC 用于存放下—條要執(zhí)行的指令地址,是一個 16 位專用寄存器,可尋址范圍為 0 —65535(64K) , PC 在物理上是獨立的,不屬于 SFR ,但它與 SFR 有密切聯(lián)系,故放在此處介紹。
2.累加器A
累加器 A 是一個最常用的專用的寄存器,它屬于 SFR ,大部分單操作數(shù)指令的操作數(shù)取自累加器,很多雙操作數(shù)指令的一個操作數(shù)取自累加器,加、減、乘、除算術(shù)運算指令的運算結(jié)果都存放在累加器A 或 A 、 B 寄存器中。
3.B寄存器
在乘、除指令中,用到了 B 寄存器。乘法指令的兩個操作數(shù)分別取自 A 和 B ,其結(jié)果存放在 A 、 B寄存器對中。除法指令中,被除數(shù)取自 A,除數(shù)取自 B,運算后商數(shù)存放于 A,余數(shù)存放于 B。
4.程序狀態(tài)字寄存器PSW
PSW 是一個 8 位寄存器,它包含了程序狀態(tài)信息。
5.堆棧指針SP
堆棧指針 SP 是一個 8 位專用寄存器 。它指示出堆棧頂部在內(nèi)部 RAM 塊中的位置。 系統(tǒng)復位后,SP初始化為 07H,使得堆棧事實上由 08H 單元開始 ,考慮到 0BH — 1FH 單元分別屬于工作寄存器區(qū)1 ~ 3 ,若在程序設(shè)計中要用到這些區(qū),則最好把 SP 值改置為 1FH 或更大的值。單片機的堆棧是向上生成的。例如 SP=60H,CPU 執(zhí)行一條調(diào)用指令或響應中斷后,PC 進棧,PC 的低 8 位送入到 61H,PC 高 8位送入到 62H,(SP)=62H。
6.數(shù)據(jù)指針DPTR
數(shù)據(jù)指針 DPTR 是一個 16 位的 SFR , 其高位字節(jié)寄存器用 DPH 表示,低位字節(jié)寄存器用 DPL 表示 。 DPTR 即可以作為一個 16 位寄存器 DPTR 來用,也可以作為兩個獨立的 8 位寄存器 DPH 和DPL 來用。
7.端口P0-P3
特殊功能寄存器 P0-P3 分別為 I/O 端口 P0-P3 的鎖存器 。即每一個 8 位 I/O 口都對應 SFR 的一個地址( 8 位)。在 MCS-51 中, I/O 和 RAM 統(tǒng)一編址,使用起來較為方便,訪問 I/O 端口可用訪問RAM 的指令。
8.串行數(shù)據(jù)緩沖器SBUF
串行數(shù)據(jù)緩沖器 SBUF 用于存放欲發(fā)送或已接收的數(shù)據(jù) ,它在 SFR 塊中只有一個字節(jié)地址,但在物理上是由兩個獨立的寄存器組成, 一個是發(fā)送緩沖器 SBUF,另一個是接收緩沖器 SBUF ,當要發(fā)送的數(shù)據(jù)傳送到 SBUF 時,進的是發(fā)送緩沖器 SBUF ;接收時,外部來的數(shù)據(jù)存入接收緩沖器 SBUF 。
9.定時器
MCS-51 單片機有兩個 16 位定時器/計數(shù)器 T0 和 T1 ,它們各由兩個獨立的 8 位寄存器組成,共為 4個獨立的寄存器: TH0 、 TL0 、 THL 、 TL1 。可以對這 4 個寄存器尋址,但不能把 T0 或 T1 當作一個 16位寄存器來對待。
3.外部數(shù)據(jù)存儲器
MCS-51 外部數(shù)據(jù)存儲器尋址空間為 64KB ,這對多數(shù)應用領(lǐng)域已足夠使用。對外部數(shù)據(jù)存儲器可用R0,R1 及 DPTR 間接尋址寄存器。R0,R1 為 8 位寄存器,尋址范圍為 256B,DPTR 為 16 位的數(shù)據(jù)指針,尋址范圍為 64KB。在 MCS-51 的指令系統(tǒng)中, 同外部數(shù)據(jù)存儲器打交道的指令有 4 條:
4.I/O端口
MCS-51 單片機有 4 個雙向的 8 位并行 I/O 口:P0~P3,每一個口都有一個 8 位的鎖存器,復位后它們的初始狀態(tài)為全“1”。
P0 口是三態(tài)雙向口,既可作為并行 I/O 口,也可作為數(shù)據(jù)總線口。當外部擴展了存儲器或 I/O 端口,則只能作數(shù)據(jù)總線和地址總線低 8 位。當作為數(shù)據(jù)總線口時是分時使用的,即先輸出低 8 位地址,后用作數(shù)據(jù)總線,故應在外部加鎖存器將先送出的低 8 位地址鎖存,地址鎖信號用 ALE 。
P1 口是專門供用戶使用的 I/O 口,是準雙向接口。
P2 口是準雙向接口,既可作為并行 I/O 口,也可作為地址總線高 8 位口。當外部擴展了存儲器或 I/O端口,則只能作地址總線高 8 位。
P3 口是準雙向口,又是雙功能口。該口的每一位均可獨立地定義為第二功能,作為第一功能使用時,口的結(jié)構(gòu)與操作與 P1 口相同。下表表示了P3口作為第二功能時各位的定義:
5.I/O 口的讀一修改—寫特性
每個 I/O 端口均有兩種讀入方法,即讀鎖存器和讀引腳,并有相應的指令,那么如何區(qū)分讀端口的指令是讀鎖存器還是讀引腳呢?
讀鎖存器指令是從鎖存器中讀取數(shù)據(jù),進行處理,并把處理以后的數(shù)據(jù)重新寫入鎖存器中,這類指令稱為“讀一修改一寫”批令 。當目前操作數(shù)是一個 I/O 端口或 I/O 端口的某一位時,這些指令是讀鎖存器而不是讀引腳,即為“讀一修改一寫”指令,下面列出的是一些“讀一修改一寫”指令。
ANL (邏輯與,例如 ANL P1,A)
ORL (邏輯或,例如 ORL P2,A)
XRL (邏輯異或,例如 XRL P3,A)
JBC (若位=1,則轉(zhuǎn)移并清零,例如 JBC P1.1,LABEL)
CPL (取反位,例如 CPL P3.0)
INC (遞增,例如 INC P2)
DEC (遞減,例如 DEC P2)
DJNZ (遞減,若不等于 0 則轉(zhuǎn)移,例如 DJNZ P3,LABEL)
MOV P1.7,C (進位位送到端口 P1 的位 7)
CLR P1.4 (清零端口 P1 的位 4)
SETB P1.2 (置位端口 P1 的位 2)
讀引腳指令一般都是以 I/O 端口為原操作數(shù)的指令,執(zhí)行讀引腳指令時,打開三態(tài)門,輸入口狀態(tài)。
例如,讀 P1 口的輸入狀態(tài)時,讀引腳指令為:MOV A,P1。
讀—修改—寫指令指向鎖存器而不是引腳,其理由是為了避免可能誤解引腳上的電平。
6.復位電路
MCS-51 的復位輸入引腳 RST( 即 RESET) 為 MCS-51 提供了初始化的手段。有了它可以使程序從指定處開始執(zhí)行, 即從程序存儲器中的 0000H 地址單元開始執(zhí)行程序。只要 RST 保持高電平。則 MCS- 51 循環(huán)復位。只有當 RST 由高電平變低電平以后,MCS-51 才從0000H 地址開始執(zhí)行程序。
7.復位時片內(nèi)各寄存器的狀態(tài)
程序運行直接受程序計數(shù)器(PC)指揮。
? 復位后 PC 值為 0000H , 故復位后的程序入口地址為 0000H;
? 復位后 PSW=00H,使片內(nèi)存儲器中選擇 0 區(qū)工作寄存器 ,用戶標志為 F0 為 0 狀態(tài);
? 復位后 SP=07H,設(shè)定推棧棧底為 07H;
? TH1、TL1、TH0 、TL0 都為 00H,表明定時/計數(shù)器復位后皆清零;
? TMOD=00H 都處于方式 0 工作狀態(tài),并設(shè)定 T1、T0 為內(nèi)部定時器方式,定時器不受外部引腳
控制;
? TCON=00H,禁止計數(shù)器計數(shù),并表明定時/計數(shù)器無溢出中斷請求 ,并禁止外部中斷源的中斷請求,外部中斷源的中斷請求為電平觸發(fā)方式;
? SCON=00H 使串行口工作在移位寄存器方式(方式 0) ,并且設(shè)定允許串行移位接收或發(fā)送;
? 復位后 IE 的各位均為零,表明在中斷系統(tǒng) CPU 被禁止響應中斷,而且每個中斷源也被禁止中斷;
? 復位后 IP 的各位均為零,表明在斷斷系統(tǒng)的 5 個中斷源都設(shè)置為低優(yōu)先級中斷狀態(tài);
? 復位后的 P1 , P2 , P3 口鎖存器全為 1 狀態(tài),使這些準雙向口皆處于輸入狀態(tài)。
在復位有效期間(即高電平),MCS-51 的 ALE 引腳和引腳均為高電平,且內(nèi)部 RAM 不受復位的影響。
8.時序(未搞清楚,待更新)
9.MCS-51 單片機引腳功能
MCS-51 單片機 DIP 封裝有 40 條引腳,共分為端口線、電源線和控制線三類。
1.端口線(4×8 = 32 條)
MCS-51 共有四個并行 I/O 端口,每個端口都有 8 條端口線,用于傳送數(shù)據(jù)/地址或其它信息。 P0.0-P0.7 :
這組引腳共有 8 條,為 P0 口專用,其中 P0.7 為最高位 , P0.0 為最低位。這 8 條引腳共有兩種不同功能,分別使用于兩種不同情況之下。
第一種情況是 MCS-51 不帶片外存儲器的型號,P0 口可以作為通 用 I/O 口使用,P0.7~P0.0 用于傳送 CPU 的輸入/輸出數(shù)據(jù)。
輸出數(shù)據(jù)可以得到鎖存,不需外接 專用鎖存器,輸入數(shù)據(jù)可以得到緩沖,增加了數(shù)據(jù)輸入的可靠性。
第二種情況是帶片外程序存儲器,P0.7~ P0.0 在 CPU 訪問片外存儲器時先是用于傳送片外存儲器的低 8 位地址,然后傳送 CPU 對片外存儲器的讀 或?qū)憯?shù)據(jù)。
P1.0-P1.7 :
這 8 條引腳和 P0 口的 8 條引腳類似,P1.7 為最高位 , P1.0 為最低位。當 P1 口作為通用 I/O 使用時,P1.0-P1.7 的功能和 P0 口的第一功能相同,也用于傳送用戶的輸入/輸出數(shù)據(jù)。
P2.0-P2.7 :
第一功能和上述兩組引腳的第一功能相同,即它可以作為通用 I/O 使用。它的第二功能 和 P0 口引腳的第二功能相配合,用于輸出片外存儲器的高 8 位地址,共同選中片外存儲器單元,但并不 能像 P0 口那樣還可以傳送存儲器的讀寫數(shù)據(jù)。
P3.0-P3.7 :
這組引腳的第一功能和其余三個端口的第一功能相同,第二功能作控制用,每個引腳并不完全相同。
2.電源線(2條)
VCC 為 +5V 電源線, VSS 為地線。
3.控制線(6條)
1.
2.
3.
4.
5.
評論
查看更多