單片機內部結構
單片機是一種集成電路芯片,是采用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的微型計算機系統
分類:
1、通用型
按單片機(Microcontrollers)適用范圍來區分。例如,80C51式通用型單片機,它不是為某種專門用途設計的;專用型單片機是針對一類產品甚至某一個產品設計生產的,例如為了滿足電子體溫計的要求,在片內集成ADC接口等功能的溫度測量控制電路。
2、總線型
按單片機(Microcontrollers)是否提供并行總線來區分的??偩€型單片機普遍設置有并行地址總線、 數據總線、控制總線,這些引腳用以擴展并行外圍器件都可通過串行口與單片機連接,另外,許多單片機已把所需要的外圍器件及外設接口集成一片內,因此在許多情況下可以不要并行擴展總線,大大減省封裝成本和芯片體積,這類單片機稱為非總線型單片機。
3、控制型
按照單片機(Microcontrollers)大致應用的領域進行區分的。一般而言,工控型尋址范圍大,運算能力強;用于家電的單片機多為專用型,通常是小封裝、低價格,外圍器件和外設接口集成度高。 顯然,上述分類并不是惟一的和嚴格的。例如,80C51類單片機既是通用型又是總線型,還可以作工控用。
51單片機的結構與功能
基本功能:
1.8位數據總線,16位地址總線的CPU;
2.具有布爾處理能力和位處理能力;
3.采用哈佛結構,程序存儲器與數據存儲器地址空間各自獨立,便于程序設計;
4.相同地址的64KB程序存儲器和64KB數據存儲器;
5.0-8KB片內程序存儲器(8031無,8051有4KB,8052有8KB,89C55有20KB);
6.128字節片內數據存儲器(8051有256字節);
7.32根雙向并可以按位尋址的I/O線;
8.兩個16位定時/計數器(8052有3個);
9.一個全雙工的串行I/O接口;
10.多個中斷源的中斷結構,具有兩個中斷優先級;
11.片內時鐘振蕩器 。
特點:
1.以微處理器(CPU)為核心;
2.CPU與其他部件間通過三總線連接。
總線: 指能為多個部件服務的信息傳送線 。
內部結構
單片機外部結構
一共40根外部引腳如圖:
引腳功能介紹
1、P0口的結構
P0口字節地址為80H,位地址80H~87H。
如圖,一個端口由鎖存器、輸入緩沖器、多路開關、一個非門、一個與門及場效應管驅動電路構成。
P0位結構:
輸入緩沖器
在P0口中,有兩個三態的緩沖器,三態門有3個狀態,即在其輸出端可以是高電平、低電平,同時還有一種高阻狀態(或稱為禁止狀態),要讀取D鎖存器輸出端Q的數據,需要使讀鎖存器中這個緩沖器的三態控制端有效,下面一個是讀引腳的緩沖器,要讀取P0.X引腳上的數據,也要使標號為“讀引腳”的三態緩沖器的控制端有效,引腳上的數據才會傳輸到單片機的內部數據總線上。
D鎖存器
構成一個鎖存器,通常要用一個時序電路,一個觸發器可以保存一位二進制數(即具有保持功能),在51單片機的32根I/O口線中,都是用一個D觸發器來構成鎖存器的。圖1-4中的D鎖存器,D端是數據輸入端,CP是控制端(即時序控制信號輸入端),Q是輸出端,Q非是反向輸出端。
對于D鎖存器來講,當D輸入端有一個輸入信號,如果這時控制端CP沒有信號(即時序脈沖沒有到來),這時輸入端D的數據是無法傳輸到輸出端Q及反向輸出端的。如果時序控制端CP的時序脈沖到達,這時D端輸入的數據就會傳輸到Q及Q非端。數據傳送過來后,當CP時序控制端的時序信號消失時,輸出端還會保持著上次輸入端D的數據(即把上次的數據鎖存起來)。如果下一個時序控制脈沖信號到來,這時D端的數據才再次傳送到Q端,從而改變Q端的狀態。
多路開關
在51單片機中,當內部的存儲器夠用時(即不需要外擴展存儲器時,這里講的存儲器包括數據存儲器及程序存儲器),P0口可以作為通用的輸入/輸出端口(即I/O)使用,對于8031(內部沒有ROM)的單片機,或者編寫的程序超過了單片機內部的存儲器容量需要外擴存儲器時,P0口就作為地址/數據總線使用。那么這個多路選擇開關就是用于選擇是作為普通I/O口使用還是作為地址/數據總線使用的選擇開關了。從圖1-4可知,當多路開關與下端接通時,P0口作為普通的I/O口使用;當多路開關是與上端接通時,P0口作為地址/數據總線使用。
利用P0口進行擴展外部存儲器和I/O時,P0口將作為地址和數據分時復用,CPU發控制信號,打開與門,使MUX打向上邊,形成推拉式結構,數據信號可直接讀入或輸出到內部總線。利用P0作為通用I/O時,此時P0口是一個準雙向口,CPU發控制信號,封鎖與門,使上拉管截止,MUX打向下邊,與D觸發器Q連接。
2、P1口的結構
P1口字節地址為90H,位地址為90H~97H。
P1位結構:
與P0不同,P1口只能作為I/O口使用,無MUX,但其內部有一個上拉電阻,所以連接外圍負載時不需要外接上拉電阻,這一點P1、P2、P3都一樣。
3、P2口的結構
P2口字節地址為A0H,位地址為A0H~A7H
P2位結構:
P2口作為I/O口線時用法與P0口一樣,當內部開關撥向另一個方向,即作地址輸出時,可以輸出程序存儲器或外部數據存儲器的高8位地址,并與P0口輸出的低地址一起構成16位的地址線。
4、P3口的結構
P3口字節地址為B0H,位地址為B0H~B7H。
P3口作為I/O口線用時同其他的端口相同,也是準雙向口,不同的是,P3口的每一位都有另一種功能,也叫第二功能,具體作用在用到時將詳細解釋。當P3口作為通用I/O口時,準雙向口第二功能端保持高電平。
當P3口作為第二功能時,鎖存器輸出Q=1,如圖為P3口第二功能列表:
5、注意
(1)在無片外擴展存儲器的系統中,這4個端口的每一位都可以作為準雙向通用I/O端口使用。在具有片外擴展存儲器的系統中,P2口作為高8位地址線,P0口作為雙向總線,分時作為低8位地址和數據的輸入/輸出線。
(2)P0口作為通用雙向I/O口使用時,必須外接上拉電阻。
(3)P3口除了作通用I/O口使用外,各位還具有第二功能。當P3口某一位用于第二功能作輸出時,則不能再作通用I/O口使用。
(4)當P0~P4端口用作輸入時,為了避免誤讀,都必須先向對應的輸出鎖存器寫入1,使FET截止,然后再讀端口引腳,例如以下程序:
MOV P1, #0FFH
MOV A, P1
51的程序存儲器和數據存儲器是獨立分開的,數據寄存器除內部數據寄存器外,還可以擴展數據寄存器,并存但訪問指令不同。
程序寄存器
當EA引腳接高電平,CPU將使用內部程序寄存器,若程序超過內部程序存儲器空間時,則CPU會自動從外部程序存儲器重讀取超過部分的程序代碼。
數據寄存器
0000H ~ 007FH
1、寄存器組區
0000H~001FH共有32個地址位寄存器組區
每組寄存器組都包括R0、R1、R2、R3、R4、R5、R6、R7等8個寄存器,任何一個時間,都只能使用其中一個寄存器組。
寄存器組的切換,可由程序狀態字(PSW)中的RS1、RS0來決定。
RS0 RS1 寄存器組 位址
0 0 RB0 0000H~0007H
0 1 RB1 0008H~000FH
1 0 RB2 0010H~0017H
1 1 RB3 0018H~001FH
2、可位尋址區
0020H~002FH 共16字節的存儲區為可位尋址區
設置20H存儲器地址的位5設置為1:SETB 20H.5
設置20H存儲器地址的位5設置為0:CLR 20H.5
3、一般數據與堆棧區
0030H~007FH的80字節為一般數據訪問及堆棧區
0080H~00FFH之間的128B位特殊功能寄存器(SFR)
特殊功能寄存器
P0、P1、P2、P3
它們是51的4個輸入/輸出端口,其地址分別為80H、90H、A0H及B0H。
P0口:該8位都為漏級開路輸出,每個引腳可以驅動8個LS型TTL負載;且內部沒有上拉電阻,執行輸出功能時,外部必須接上拉電阻(10千歐即可);若要執行輸入功能,必須先輸出高電平,方能讀取該端口所連接的外部數據;若系統連接外部存儲器,則P0可作為地址總線(A0A7)及數據總線(D0D7)的多功能引腳。
P1口:內部有30千歐上拉電阻,執行輸出功能時,不必連接外部上拉電阻;該8位都為漏級開路輸出,每個引腳可以驅動4個LS型TTL負載;若要執行輸入功能,必須先輸出高電平,方能讀取該端口所連接的外部數據;
P2口:內部有30千歐上拉電阻,執行輸出功能時,不必連接外部上拉電阻;該8位都為漏級開路輸出,每個引腳可以驅動4個LS型TTL負載;若要執行輸入功能,必須先輸出高電平,方能讀取該端口所連接的外部數據;若系統連接外部存儲器,而外部存儲器的地址線超過8條時,則P0口可作為地址總線(A8~A15)引腳。
P3口:內部有30千歐上拉電阻,執行輸出功能時,不必連接外部上拉電阻;該8位都為漏級開路輸出,每個引腳可以驅動4個LS型TTL負載;若要執行輸入功能,必須先輸出高電平,方能讀取該端口所連接的外部數據;
P3口其他功能:
P3 其它功能 說明
P3.0 RXD 串行口的接收引腳
P3.1 RTD 串行口的傳送引腳
P3.2 INT0 INT0中斷輸入
P3.3 INT1 INT1中斷輸入
P3.4 T0 timer 0輸入
P3.5 T1 Timer 1輸入
P3.6 WR 寫入外部存儲器控制引腳
P3.7 RD 讀取外部存儲器控制引腳
SP
SP為堆棧指針寄存器,其地址為81H。
DPL、DPH
DPL與DPH均為8位的數據指針寄存器,其地址分別為82H、83H。若以DPL為低8位、DPH為高8位,即可組成一個16位的數據指針寄存器,簡稱DPTR,如此將可尋址到64KB的數據地址。
PCON
PCON作為電源控制寄存器,其地址位87H,其功能是設定CPU的電源方式。
它是一個不可位尋址的寄存器。如圖所示:
SMOD ― ― ― GF1 GF0 PD IDL
Bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
其中各位說明如下:
SMOD位為比特率倍增位。當串行端口工作于模式1、模式2、模式3,且使用定時器1為其比特率產生器時,若其為1,這比特率加倍,若為0,這比特率正常。
GF1、GF0位為一般用途標志位,用戶可自行設定或清除這兩個標志。通常使用這個兩個標志作為有中斷喚醒閑置模式中的8051系統。
PD位為功率下降模式位。為1時,進入功率下降模式;為0時,結束功率下降模式。
IDL位為閑置模式位。為1時,進入閑置模式;為0時,結束閑置模式。
TCON
TCON為定時器/計數器控制寄存器,其地址為88H
TMOD
TMOD為計數器/計數方式控制寄存器,其地址為89H,其功能是設置它的方式
TL0、TL1、TH0、TH1
TL0、TH0為第一組定時器、計數器的計量寄存器,其地址為8AH、8CH,將TL0與TH0組合即可進行16位的定時/計數。TL1、TH1為第二組定時器、計數器的計量寄存器,其地址為8BH、8DH,將TL1與TH1組合即可進行16位的定時/計數。
SCON
SCON為串行端口控制寄存器,其地址為98H,其功能是設定串行端口工作方式與標志。
SBUF
SBUF為串行端口緩沖器,其地址為99H, 這是由使用同一個地址的兩個寄存器所構成,其中一個寄存器作為傳送數據用的緩沖器,另一個寄存器作為接收數據用的緩沖器。至于如何分辨同一個地址的兩個寄 存器,則視指令而定,若是數據傳送指令,則自動定位到傳送數據用的緩沖器;若是接受數據指令,則自動定位到接收數據用的緩沖器。詳細以后再講咯。
? ? ? ?IE
IE為中斷使能寄存器,其地址為A8H。
IP
IP為中斷優先級寄存器。
T2CON
T2CON為Timer 2的定時器/計數器控制寄存器,其地址為C8H,其功能死設定Timer 2的啟動、記錄定時/計數溢出,以及外部中斷觸發方式等。
RCAP、RCAP2H
RCAP、RCAP2H為捕捉寄存器,其地址為CAH、CBH。當Timer 2在捕捉方式時,若T2EX(P1.1)引腳上的輸入信號有高電平轉為低電平時,TL2與TH2的內容將被載入RCAP與RCAP2H,就像是把Timer 2的內容捉進RCAP寄存器一樣。
TL2、TH2
TL2、TH2為第三組定時器、計數器的計量寄存器,其地址為CCH、CDH,將TL2與TH2組合即可進行16位的定時/計數。
PSW
PSW為CPU的程序狀態字寄存器,其地址為D0H,其內容如下:
7 6 5 4 3 2 1 0
PSW CY AC F0 RS1 RS0 OV P
PSW.7:本位為進位位(CY),加減法時產生進位或錯位,將自行設定為1,否則為0。
PSW.6:本位為輔助進位位(AC),進行加減法運算產生進位或錯位,將自行設定為1,否則為0。
PSW.5:本位為用戶標志位,用戶自行設定。
PSW.4與PSW.3:這兩個位為寄存器組選擇位(RS1、RS0),其功能如下表所示。
RS1 RS0 寄存器組
0 0 RB0
0 1 RB1
1 0 RB2
1 1 RB3
PSW.2:本位為溢出標志位(OV),運行時,若發生溢出,為1,否則為0。
PSW.1:本位為保留位,沒有提供服務。
PSW.0:本位位奇偶位(P),8051采用偶同位,若ACC中奇數個1,則為1,偶數個1,則為0。
ACC
ACC累加器又稱為A寄存器,其地址為E0H。
B
B寄存器的地址為F0H,主要功能是配合A寄存器進行乘法或除法運算。進行乘法運算時,乘數放在B寄存器,而運算結果,高8位放在B寄存器;進行除法運算時,除數放在B寄存器,而運算的結果,余數放在B寄存器。若不進行乘/除法運算,B寄存器也可當成一般寄存器使用。
門電路
與門
或門
非門
同或門
異或門
門間的組合電路
門電路的實現TTL和MOS集成門電路
寄存器和鎖存器
觸發器分類:
1、基本R-S觸發器
2、同步RS觸發器、同步D觸發器
3、主從R-S觸發器、主從JK觸發器
4、邊沿觸發器:
上升沿觸發器(D觸發器、JK觸發器)
下降沿觸發器(D觸發器、JK觸發器)
觸發器邏輯功能表示方法:
特性表、卡洛圖、特性方程、狀態圖、時序圖
各種觸發器介紹
評論
查看更多