單片機按存儲結構可分為二類:一類是哈佛結構,另一類是普林斯頓結構。
①哈佛結構所謂哈佛結構是指程序存儲器地址空間與數據存儲器地址空間分開的單片機結構,如80C51單片機采用哈佛結構,所以80C51單片機的程序存儲器地址空間與數據存儲器地址空間是分開的,各有64K存儲空間。
②普林斯頓結構所謂普林斯頓結構是指程序存儲器地址空間與數據存儲器地址空間合并的單片機結構,如MCS-96單片機采用普林斯頓結構,所以MCS-96單片機的程序存儲器地址空間與數據存儲器地址空間是合并的,共有64K存儲空間。
1.單片機的CPU
圖1是80C51單片機的內部結構框圖。若除去圖中的存儲器電路和I/O部件,剩下的便是CPU。它可以分為運算器和控制器兩部分。運算器功能部件包括算術邏輯運算單元ALU、累加器ACC、寄存器B、暫存寄存器TMP1、TMP2、程序狀態字寄存器PSW等??刂破鞴δ懿考ǔ绦蛴嫈灯鱌C、指令寄存器IR、指令譯碼器ID、定時控制邏輯電路CU、數據指針寄存器DPTR、堆棧指針SP及時鐘電路等。
(1)運算器
①算術邏輯運算單元ALU(Arithmetic Logical Unit)
ALU可以進行算術、邏輯運算。算術運算有:加、減、乘、除,邏輯運算有:與、或、異或等。
②累加器ACC
累加器ACC的主要功能是在運算前存放一個操作數,運算后存放一個操作結果。80C51系列單片機雖然在結構上仍然以累加器A作為重要部件。但由于內部電路采取了措施,使得累加器A在數據傳送、邏輯操作等方面的核心作用有所削弱。數據可以在片內直接/間接地址的存儲器之間直接傳送,而不必經過累加器A。但,加、減、乘、除算術運算指令的運算結果都存放在累加器A或AB寄存器對中。
③暫存器TMP1、TMP2由圖1可知,ALU進行算術邏輯運算前的兩個操作數來自暫存器TMP1、TMP2,所以暫存器TMP1、TMP2用于存放運算前的兩個操作數。
④程序狀態字寄存器PSW程序狀態字寄存器PSW用來存放運算結果的狀態標志。PSW寄存器各位的含義如下,其中PSW.1未定義,其它各位說明如下:
CY | AC | F0 | RS1 | RS0 | OV | / | P |
CY:進位標志。它是累加器A的進位位,如果操作結果在最高位有進位(加法)或借位(減法)時置1,否則清0。
AC:半進位標志。它是低半字節的進位位(累加器A中A3位向A4位的進位),主要用于BCD碼調整。低4位有進位(加法時)或向高4位有借位時(減法時),AC是1,否則,AC清0。
F0:用戶定義的狀態標志位??赏ㄟ^軟件對它置位、復位或測試,以控制程序的流向。
RS1、RS0:工作寄存器區選擇控制位,用于選擇4組工作寄存器之一??梢杂密浖碇梦换蚯辶?,以確定工作寄存器區。RS1、RS0與寄存器區的對應關系如下:
RS1、RS0=00——0區(地址00H~07H)RS1、RS0=01——1區(地址08H~0FH)RS1、RS0=10——2區(地址10H~17H)RS1、RS0=11——3區(地址18H~1FH)
OV:溢出標志位,用于表示有符號數算術運算的溢出。溢出時OV為1,否則OV為0。
P:奇偶標志位。每個指令周期都由硬件來置位或清零,以表示累加器A中1的個數的奇偶性。若1的個數為奇數,則P置位;若1的個數為偶數,則清零。
⑤寄存器B
在乘除指令中,用到了寄存器B。
(2)控制器
控制器是控制單片機各種操作的部件,用于完成指令規定的操作。它包括程序計數器PC、指令寄存器IR、指令譯碼器ID、定時控制邏輯、數據指針寄存器DPTR、時鐘發生器、復位電路、堆棧指針SP等。
①程序計數器 PC
程序計數器PC為16位寄存器,用于存放下一條要執行指令地址,具有自動加1功能。
②指令寄存器IR、指令譯碼器ID、定時控制邏輯電路
指令寄存器IR用來暫時存放當前取出的指令,并由指令譯碼器ID譯碼,產生相應的譯碼信號,并傳送給定時控制電路,定時控制電路發出各種控制信號控制各器件完成指令規定的操作。
③數據指針DPTR
DPTR為16位寄存器。由于80C51單片機采用哈佛結構,因此,其程序存儲器與地址存儲器是分開的,程序存儲器的地址是由程序計數器PC提供,而數據存儲器的地址是由數據指針DPTR提供的,所以DPTR用于存放片外數據存儲器及I/O口的地址。
④時鐘電路
時鐘電路是計算機的心臟,它控制著計算機的工作節奏。
⑤復位和復位電路
計算機在啟動運行時都需要復位,復位就是使CPU和系統中的其它部件處于一個確定的初始狀態,并從這個狀態開始工作。
⑥堆棧指針SP
堆棧指針SP用于存放棧頂單元的地址。
2.單片機的存儲器配置
由于80C51單片機采用哈佛結構,所以其程序存儲器和數據存儲器是分開的,各有自身的尋址系統、控制信號和功能。程序存儲器用來存放程序和表格常數;數據存儲器通常用來存放程序運行所需要的給定參數和運行結果。
從實際的物理存儲介質來看,80C51有4種存儲空間,它們是片內程序存儲器、片外程序存儲器、片內數據存儲器(含特殊功能寄存器)和片外數據存儲器。80C51的存儲器配置情況如圖2所示。
邏輯地址空間來看,80C51單片機可分為三部分,即:程序存儲器、片外數據存儲器、片內數據存儲器。這3部分分別使用不同的地址指針,不同的訪問指令。因此,下面按邏輯結構介紹80C51的存儲器結構。
(1)程序存儲器
由圖3可知,程序存儲器以程序計數器PC作地址指針,通過16位地址總線,可尋址的地址空間為0000H~0FFFFH共64K(216=64K)字節,其訪問指令為MOVC。用于存放程序指令碼與固定的數據表格等。
80C51單片機中內部和外部共64K字節程序存儲器的地址空間是統一的。對于有內部ROM的單片機,在正常運行時,應把引腳接高電平,使程序從內部ROM開始執行。當PC值超出內部ROM的容量時,會自動轉向外部程序存儲器空間。
(2)片外數據存儲器
由圖可知,片外數據存儲器以DPTR作為地址指針,通過16位地址總線,可尋址的地址空間為0000H~0FFFFH共64K(216=64K)字節,其訪問指令為MOVX。用于存放數據與運算結果。
(3)片內據存儲器
片內數據存儲器的地址空間從00H~FFH共256字節,其訪問指令為MOV。其地址可由R0、R1寄存器提供。內部數據存儲器是最靈活的地址空間,它分成物理上獨立且性質上不同的2個區:00H~7FH單元組成的128字節RAM區,地址為80H~FFH的特殊功能寄存器區(簡稱SFR區)。
1)RAM區(00H~7FH)
由圖2-3可知,RAM區又分為3個區:工作寄存器區、位地址區與數據緩沖區。
①工作寄存器區(00H~1FH)
80C51單片機的內部RAM區結構如圖2-3所示。
②位地址區(20H~2FH)
內部RAM的20H~2FH為位尋址區域,見表1所示。這16個單元的每一位都有一個位地址,位地址范圍為00H~7FH。通常把各種程序狀態標志、位控制變量設在位尋址區內。位尋址區的RAM單元也可以作為一般的數據緩沖區使用。
表1 內部RAM區的位地址映像表
③數據緩沖區
數據緩沖區的地址空間從30H~7FH共80個字節單元,用于存放數據與運算結果,如加法運算時,存放加數、被加數及運算和。通常堆棧區也設置在該區內。有些單片機將顯示緩沖區設置在該區內。
2)特殊功能寄存器SFR(80H~FFH)
80C51單片機內的I/O口鎖存器、狀態標志寄存器、定時器、串行口、數據緩沖器以及各種控制寄存器統稱為特殊功能寄存器,它們離散地分布在內部RAM地址空間(80H~0FFH)內,表2列出了這些特殊功能寄存器的標識符、名稱及地址。由表2-2可知累加器ACC、寄存器B、程序狀態字PSW、I/O口P0~P3等均為特殊功能寄存器。
表2 特殊功能寄存器SFR
注:帶“·”號的寄存器可按字節和按位尋址,其特征是直接地址能被8整除。帶“*”號的寄存器是與定時器/計數器2有關的寄存器,僅在80C52系列中存在。下面以一個實例說明單片機的內部存儲器。
3.80C51單片機并行輸入/輸出口
80C51單片機含有4 個8位并行I/O口P0、P1、P2和P3。每個口有8個引腳,如圖2-1所示,共有32個I/O引腳,每一個并行I/O口都能用作輸入或輸出。各口的第一、第二功能如下:
I/O口 引腳 第一功能 第二功能P0口 P0.0~P0.7 輸入與輸出 分時的傳送地址低8位與數據線P1口 P1.0~P0.7 輸入與輸出 無第二功能P2口 P2.0~P2.7 輸入與輸出 傳送地址的高8位P3口 P3.0~P3.7 輸入與輸出 P3.0——RXD:串行口輸入端
P3.1——TXD:串行口輸出端P3.2——INT0:外部中斷0中斷請求輸入端P3.3——INT1:外部中斷1中斷請求輸入端P3.4——T0:定時器/計數器0外部輸入端P3.5——T1:定時器/計數器1外部輸入端P3.6——WR:外部數據存儲器寫選通信號
P3.7——RD:外部數據存儲器讀選通信號
四個通道口都有一種特殊的線路結構,每個口都包含一個鎖存器,即特殊功能寄存器P0~P3,一個輸出驅動器和兩個(P3口有三個)三態緩沖器。這種結構在數據輸出時,可以鎖存,即在重新輸出新的數據之前,口上的數據一直保持不變。但對于輸入信號是不鎖存的,所以外設欲輸入的數據必須保持到取數指令執行(把數據讀取后)為止。
下面分別敘述各個端口的結構、功能和使用方法。
(1)P0口的組成與功能1)位結構
在訪問外部存儲器時,P0口是一個真正的雙向數據總線口,并分時送出地址的低8位。圖2-4所示的是P0口的一位結構圖。它包含兩個輸入緩沖器、一個輸出鎖存器以及輸出驅動電路、輸出控制電路。輸出驅動電路由兩只場效應管V1和V2組成,其工作狀態受輸出控制電路的控制。輸出控制電路包括與門、反相器和多路模擬開關MUX。P0口既能用作通用I/O口,又能用作地址/數據總線。
2)作為通用I/O口P0口作為通用I/O口使用時,CPU令控制信號為低電平。這時多路開關MUX接通B端即輸出鎖存器的 端,同時使與門輸出低電平,場效應管V1截止,因而輸出級為開漏輸出電路。
①作為輸出口當用P0口輸出數據時,寫信號加在鎖存器的時鐘端CL上,此時與內部總線相連的D端其數據經反相后出現的 端上,再經V2管反相,于是在P0口引腳上出現的數據正好是內部總線上的數據。由于輸出級為開漏電路,所以用作輸出口時應外接上拉電阻。
②作為輸入口當P0口用于輸入數據時,要使用端口中的兩個三態輸入緩沖器之一。這時有兩種工作方式:讀引腳和讀鎖存器。
當CPU執行一般的端口輸入指令時,“讀引腳”信號使圖2-4中下面一個緩沖器開通,于是端口引腳上的數據經過緩沖器輸入到內部總線上。
當CPU執行“讀一修改一寫”一類指令時,“讀鎖存器”信號使圖2-4上面一個緩沖器開通,鎖存器Q端的數據經緩沖器輸入內部數據總線。
在P0口作為輸入口使用時,必須首先向端口鎖存器寫入“1”。這是因為當進行讀引腳操作時,如果V2是導通的,那么不論引腳上的輸入狀態如何,都會變為低電平。為了正確讀入引腳上的邏輯電平,先要向鎖存器寫1,使其 端為0,V2截止。該引腳成為高阻抗的輸入端。
3)作為地址/數據總線P0口還能作為地址總線低8位或數據總線,供系統擴展時使用。這時控制信號為高電平,多路開關MUX接通A端。有兩種工作情況:一種是總線輸出,另一種是外部數據輸入。作為總線輸出時,從“地址/數據”端輸入的地址或數據信號通過與門驅動V2,同時通過非門驅動V2,結果在引腳上得到地址或數據輸出信號。
作為數據總線輸入數據時,從引腳上輸入的外部數據經過讀引腳緩沖器進入內部數據總線。對于80C51、87C51單片機,P0口能作為I/O口或地址/數據總線使用。對于80C31單片機,P0口只能用作地址/數據總線。
綜上所述,P0口既可以作為地址/數據總線口,這時它是真正的雙向口,也可作通用的I/O口,但只是一個準雙向口。準雙向口的特點是:復位時,口鎖存器均置“1”,8根引腳可當一般輸入線使用,而在某引腳由原輸出狀態變成輸入狀態時,則應先寫入“1”,以免錯讀引腳上的信息。一般情況下,P0口已當作地址/數據總線口使用時,就不能再作通用I/O口使用。
(2)P1口組成與功能
P1口只用作通用I/O口,其一位結構圖如圖所示。與P0口相比,P1口的位結構圖中少了地址/數據的傳送電路和多路開關,上面一只MOS管改為上拉電阻。
P1口作為一般I/O的功能和使用方法與P0口相似。當輸入數據時,應先向端口寫“1”。它也有讀引腳和讀鎖存器兩種方式。所不同的是當輸出數據時,由于內部有了上拉電阻,所以不需要再外接上拉電阻。
(3)P2口的組成與功能
當系統中接有外部存儲器時,P2口可用于輸出高8位地址,若當作通用I/O口用,P2口則是一個準雙向口。因此說P2口能用作通用I/O口或地址總線,其一位的結構如圖所示。
①作為通用I/O口
當控制信號為低電平時,多路開關接到B端,P2口作為通用I/O口使用,其功能和使用方法與P1口相同。
②作為地址總線當控制端輸出高電平時,多路開關接到A端,地址信號經反相器、V從引腳輸出。這時P2口輸出地址總線高8位,供系統擴展使用。
對80C51、87C51單片機,P2口能作為I/O口或地址總線作用。對于80C31單片機,P2口只能用作地址總線。
(4)P3口組成與功能
P3口能作通用I/O口,同時每一引腳還有第二功能。P3口的一位結構如圖2-7所示。
作為通用I/O口:當“第二功能輸出”端為高電平時,P3口用作通用I/O口。這時與非門對于輸入端Q來說相當于非門,位結構與P2口完全相同,因此P3口用作通用I/O口時的功能和使用方法與P2口、P1口相同。
用作第二功能: 當P3口的某一位作為第二功能輸出使用時,應將該位的鎖存器置“1”,使與非門的輸出狀態只受“第二功能輸出”端的控制?!暗诙δ茌敵觥倍说臓顟B經與非門和驅動管V輸出到該位引腳上。
當P3口的某一位作為第二功能輸入使用時,該位的鎖存器和“第二功能輸出”端都應為“1”,這樣,該位引腳上的輸入信號經緩沖器送入“第二功能輸入”端。
至此,可以對組成一般單片機應用系統時各個并行口的分工小結如下:P0口:分時的用作地址低8位與數據線,低8位地址由PC低8位或DPL提供。P1口:按位可編址的輸入輸出口。P2口:地址線的高8位,高8位地址由PC高8位或DPH提供。P3口:雙功能口,若不用第二功能,可作為一般的I/O口。
-
控制器
+關注
關注
112文章
16332瀏覽量
177808 -
cpu
+關注
關注
68文章
10854瀏覽量
211583 -
運算器
+關注
關注
1文章
163瀏覽量
16567 -
80C51單片機
+關注
關注
4文章
34瀏覽量
18323
原文標題:80C51單片機的內部結構
文章出處:【微信號:edn-china,微信公眾號:EDN電子技術設計】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論