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