一、單片機(jī)的結(jié)構(gòu)原理
1.1 主要性能和特點(diǎn)
- 內(nèi)部程序存儲(chǔ)器ROM :4K的flash程序存儲(chǔ)器;
- 寄存器區(qū):4個(gè)寄存器區(qū),每個(gè)區(qū)有R0-R7八個(gè)工作寄存器;
- 8位并行輸入輸出端口:P0、P1、P2和P3;
- 定時(shí)/計(jì)數(shù)器:2個(gè)16位的定時(shí)/計(jì)數(shù)器 T0、T1;
- 串型口:全雙工串行端口(RXD:接收端、TXD發(fā)送端);
- 中斷系統(tǒng):設(shè)有5個(gè)中斷源(T0、T1、Int0、Int1、ES);
- 系統(tǒng)擴(kuò)展能力:可外接64K的 ROM 和64K的 RAM;
- 堆棧:設(shè)在RAM單元、位置可以浮動(dòng)(通過(guò)指針SP來(lái)確定堆棧在RAM中的位置)系統(tǒng)復(fù)位時(shí)SP=07H;
- 布爾處理機(jī):配合布爾運(yùn)算的指令進(jìn)行各種邏輯運(yùn)算;
- 指令系統(tǒng):111條指令。按功能可分為數(shù)據(jù)傳送、算術(shù)運(yùn)算、邏輯運(yùn)算、控制轉(zhuǎn)移和布爾操作5大類(lèi)。
1.2 內(nèi)部框圖
1.3 CPU
CPU由運(yùn)算器和控制器兩部分組成,主要完成取指令、指令譯瑪、發(fā)出各種操作所需的控制信號(hào),使單片機(jī)各個(gè)部分協(xié)調(diào)工作。
1.3.1 運(yùn)算器
運(yùn)算器是以算術(shù)邏輯單元ALU為核心,加上累加器A、寄存器B、程序狀態(tài)字PSW及專(zhuān)門(mén)用于位操作的布爾處理機(jī)等組成的,它可以實(shí)現(xiàn)數(shù)據(jù)的算術(shù)運(yùn)算、邏輯運(yùn)算、位變量處理和數(shù)據(jù)傳送等操作。
1.3.2 控制器
控制器是單片機(jī)的控制中心,它包括定時(shí)和控制電路、指令寄存器、指令譯碼器、程序計(jì)數(shù)器PC、堆棧指針SP、數(shù)據(jù)指針DPTR以及信息傳送控制部件等。
它先以振蕩信號(hào)為基準(zhǔn)產(chǎn)生CPU的時(shí)序,從ROM中取出指令到指令寄存器,然后在指令譯碼器中對(duì)指令進(jìn)行譯碼,產(chǎn)生指令執(zhí)行所需的各種控制信號(hào),送到單片機(jī)內(nèi)部的各功能部件,指揮各功能部件產(chǎn)生相應(yīng)的操作,完成指令對(duì)應(yīng)的功能。
1.4 幾個(gè)主要的特殊功能寄存器SFR說(shuō)明
1.4.1 程序指針PC
- 為CPU指明將要執(zhí)行的指令地址,(存放下一條指令的地址)。長(zhǎng)度為16位,所以尋址范圍為0-65535(64K)。
- 單片機(jī)在復(fù)位時(shí)PC=0000H,這就意味著一旦將單片機(jī)復(fù)位,CPU就從ROM的0000H單元執(zhí)行程序。
- 在物理上是獨(dú)立于SFR。
1.4.2 累加器A
最常用的寄存器。所有的算術(shù)運(yùn)算指令所要使用的寄存器且運(yùn)算結(jié)果都存放在A中。
1.4.3 寄存器B
乘、除法指令專(zhuān)用的寄存器,當(dāng)然也可作為一般的工作寄存器使用。
1.4.4 數(shù)據(jù)指針DPTR
- 由兩個(gè)8位寄存器構(gòu)成。高八位寄存器DPH和低八位寄存器DPL構(gòu)成16位的寄存器DPTR。
- DPTR主要用來(lái)存放外部數(shù)據(jù)存儲(chǔ)器RAM的地址,作為CPU訪(fǎng)問(wèn)外部RAM的數(shù)據(jù)指針;
- CPU的查表指令使用DPTR提供ROM中表格的首地址;
- 在MCS-51單片機(jī)中,CPU訪(fǎng)問(wèn)外部RAM中的數(shù)據(jù)或ROM中的表格、常數(shù)必須借助DPTR做指針來(lái)實(shí)現(xiàn)數(shù)據(jù)的讀取訪(fǎng)問(wèn)。
1.4.5 程序狀態(tài)字PSW
8位寄存器,表征程序執(zhí)行的狀態(tài)信息。
介紹
- CY(PSW.7)進(jìn)位標(biāo)志:
在加減法運(yùn)算中,累加器A的最高位D7有進(jìn)位,則CY=1,否則CY=0。同理,在減法運(yùn)算中,如果A7有借位,則CY=1.因此CY往往作為無(wú)符號(hào)數(shù)運(yùn)算是否有溢出的標(biāo)志。 - AC(PSW.6)輔助進(jìn)位位:
用來(lái)判斷加減法運(yùn)算時(shí),低四位是否向高四位進(jìn)位或借位(既A3的進(jìn)位或借位)。往往用來(lái)處理壓縮的BCD碼的運(yùn)算處理。 - F0(PSW.5) 用戶(hù)標(biāo)志位:
完全由用戶(hù)來(lái)定義和使用。 - RS1,RS0工作寄存器區(qū)選擇位:
補(bǔ)充:寄存器區(qū):4個(gè)寄存器區(qū),每個(gè)區(qū)有R0-R7八個(gè)工作寄存器;
確定工作寄存器R0-R7在4個(gè)區(qū)中的位置(單片機(jī)在復(fù)位后RS1、RS0=00 — 選擇0區(qū))??梢酝ㄟ^(guò)修改RS1,RS0的值來(lái)改變工作寄存器區(qū)的選擇。 - OV(PSW.2)溢出標(biāo)志位
判斷有符號(hào)數(shù)運(yùn)算時(shí)是否有溢出。
OV的結(jié)果可以用一個(gè)算法來(lái)表示: OV=CP異或CS
其中:CP為A7的進(jìn)位,CS為A6的進(jìn)位OV=1表明有溢出。
百度解釋?zhuān)阂绯鰳?biāo)志位:對(duì)于單字節(jié)的有符號(hào)數(shù),若用最高位(b7)表示正、負(fù)號(hào),則只有7位有效數(shù)位(b6~b0),能表示-128~+127之間的數(shù)。運(yùn)算結(jié)果超出了這個(gè)數(shù)值范圍,就會(huì)發(fā)生溢出,此時(shí)OV=1,否則OV=0。 - P(PSW.0)奇偶標(biāo)志位:
用來(lái)標(biāo)志累加器A中運(yùn)算后“1”的個(gè)數(shù)。
當(dāng)P=1時(shí),表明A中1的個(gè)數(shù)為奇數(shù)個(gè),反之為偶數(shù)個(gè)。
例子
1.4.6 堆棧指針SP
SP 堆棧指針:8位寄存器,用來(lái)指示堆棧的位置,可由軟件修改。
堆棧的介紹
堆棧是一種按“先進(jìn)后出”規(guī)律操作的存儲(chǔ)結(jié)構(gòu)。不同類(lèi)型的處理器其堆棧的設(shè)計(jì)各不相同:
SP寄存器作為堆棧指針。這種結(jié)構(gòu)的特點(diǎn)是充分的利用RAM的空間,使堆棧的空間得以擴(kuò)大。但它也有一種“致命”的弱點(diǎn):數(shù)據(jù)很容易與堆棧發(fā)生沖突,特別是初學(xué)編程者。
為了避免上述問(wèn)題的出現(xiàn),編程者往往在程序的開(kāi)始加上一條指令: MOV SP,60H 試分析為什么?
百度解釋?zhuān)?br> 單片機(jī)復(fù)位后SP的值一般要用一條指令賦值為60H,這只是個(gè)別人寫(xiě)程序的愛(ài)好與習(xí)慣罷了,沒(méi)有任何規(guī)定必須是賦值60H,更沒(méi)有任何原因必須選60H。
就單片機(jī)復(fù)位后,SP=07H,不用重新賦值也是可以的,否則,為什么當(dāng)初設(shè)計(jì)者會(huì)這么設(shè)計(jì)呢。由于51單片機(jī)的堆棧是向上增長(zhǎng)的,所以,為了避免堆棧區(qū)與用戶(hù)數(shù)據(jù)區(qū)互相影響,才將SP設(shè)置在60H以后,比較合理的是賦值為6FH,這樣堆棧區(qū)可用70H~7FH,預(yù)留有16個(gè)單元足夠,也不浪費(fèi)。
堆棧的作用
①保護(hù)程序的斷點(diǎn)地址(既返回地址);
②保護(hù)數(shù)據(jù)(也稱(chēng)保護(hù)現(xiàn)場(chǎng))。
堆棧操作的兩種方式
①斷點(diǎn)地址的保護(hù)是靠執(zhí)行子程序調(diào)用指令或發(fā)生中斷調(diào)用時(shí),由硬件自動(dòng)實(shí)現(xiàn)斷點(diǎn)地址的進(jìn)棧保護(hù);在子程序或中斷服務(wù)程序返回時(shí)有RET或RETI指令實(shí)現(xiàn)恢復(fù)斷點(diǎn);
②而對(duì)于其它需要保護(hù)的數(shù)據(jù)都要由專(zhuān)用的指令PUSH或POP來(lái)實(shí)現(xiàn)進(jìn)棧保護(hù)或恢復(fù)。
二、單片機(jī)的存儲(chǔ)器結(jié)構(gòu)
- 程序存儲(chǔ)器ROM要掌握的要點(diǎn)是:6個(gè)特定的入口單元;
- 數(shù)據(jù)存儲(chǔ)器RAM要掌握的要點(diǎn)是:內(nèi)部結(jié)構(gòu)(包括寄存器區(qū)、堆棧區(qū)、位尋址區(qū)和特殊功能寄存器SFR區(qū))。
① 內(nèi)部集成了4K的程序存儲(chǔ)器ROM;
② 內(nèi)部具有256B的數(shù)據(jù)存儲(chǔ)器RAM;
③ 可以外接64K的程序存儲(chǔ)器ROM和數(shù)據(jù)存儲(chǔ)器RAM。
從物理結(jié)構(gòu)的角度講,51單片機(jī)的存儲(chǔ)系統(tǒng)可以分為四個(gè)存儲(chǔ)空間:既片內(nèi)ROM,RAM和片外ROM、RAM。
從邏輯上講(既編程的角度),51單片機(jī)的存儲(chǔ)系統(tǒng)實(shí)際上分為三個(gè)存儲(chǔ)空間。
1. 片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM;
2. 片外數(shù)據(jù)存儲(chǔ)器RAM;
3. 片內(nèi)或外的程序存儲(chǔ)器ROM(由EA電平?jīng)Q定)。
結(jié)構(gòu)圖:
2.1 程序存儲(chǔ)器ROM(片內(nèi)、片外)
-
程序存儲(chǔ)器ROM用于存放程序、常數(shù)或表格。
-
在51單片機(jī)中,由引腳 /EA 上的電平選擇內(nèi)、外ROM;
EA=1時(shí),CPU執(zhí)行片內(nèi)的4KROM中的程序;
EA=0時(shí),CPU選擇片外ROM中的程序。 -
無(wú)論是使用片內(nèi)還是使用片外ROM,程序的起始地址都是從ROM的0000H單元開(kāi)始。
-
盡管系統(tǒng)可以同時(shí)具備片內(nèi)ROM和外部ROM,但是在一般正常使用情況下,通過(guò)/EA的設(shè)定來(lái)選擇其一(或者使用內(nèi)部ROM,或者使用外部ROM)。
-
如果EA=1(執(zhí)行片內(nèi)程序存儲(chǔ)器中程序時(shí)):
如果程序計(jì)數(shù)器的指針PC值超過(guò)0FFFH(4K)時(shí),單片機(jī)就要自動(dòng)的轉(zhuǎn)向片外的ROM存儲(chǔ)器且從1000H單元開(kāi)始執(zhí)行程序(無(wú)法使用片外ROM的低4K空間)。
2.1.1 程序存儲(chǔ)器六個(gè)特殊的單元
0000H單元:復(fù)位時(shí)程序計(jì)數(shù)器PC所指向的單元,因此用來(lái) 存放程序中的第一條指令;
0003H單元:外部中斷/INT0的矢量入口地址;
000BH單元:定時(shí)器T0溢出中斷的矢量入口地址;
0013H單元:外部中斷/INT1的矢量入口地址;
001BH單元:定時(shí)器T1的溢出中斷矢量入口地址;
0023H單元:串行口接收、傳送的中斷矢量入口地址。
矢量入口單元:在編寫(xiě)中斷程序時(shí),寫(xiě)入對(duì)應(yīng)的“跳板指令”。
因?yàn)樵趶?fù)位時(shí),程序指針PC指向0000H
2.1.2 外部程序存儲(chǔ)器
當(dāng)單片機(jī)使用外ROM存儲(chǔ)器時(shí)(擴(kuò)展系統(tǒng)),必須設(shè)定/EA=0,此時(shí)單片機(jī)的端口功能就要發(fā)生相應(yīng)的改變:
① P0、P2作為外部ROM的地址和數(shù)據(jù)總線(xiàn);
② 使用引腳/psen信號(hào)來(lái)選通外部ROM的數(shù)據(jù)三態(tài)輸出。
2.2 數(shù)據(jù)存儲(chǔ)器RAM
無(wú)論在物理上還是邏輯上,系統(tǒng)中RAM 都可分為兩個(gè)獨(dú)立空間:內(nèi)部和外部RAM。由不同的指令來(lái)訪(fǎng)問(wèn)。
- 訪(fǎng)問(wèn)內(nèi)部數(shù)據(jù)存儲(chǔ)單元時(shí),使用 MOV 指令;
- 訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),使用 MOVX 指令。
內(nèi)部RAM從功能上將256B空間分為二個(gè)不同的塊:
- 低128B的RAM塊;
- 高128B的SFR(Special Function Register )塊。
在低128B的RAM存儲(chǔ)單元中又可劃分為:
- 工作寄存器區(qū);
- 位尋址區(qū);
- 通用存儲(chǔ)數(shù)據(jù)的“便簽區(qū)”。
高128B的專(zhuān)用寄存器區(qū)SFR中僅僅使用了21寄存器(51系列),其它107個(gè)單元不能使用。
2.2.1 AT89 片內(nèi)、片外數(shù)據(jù)存儲(chǔ)器示意圖
2.2.2 片內(nèi)RAM低128B 字節(jié)功能分配圖
工作寄存區(qū)區(qū)結(jié)構(gòu)圖(0區(qū))
片內(nèi)RAM中具有雙重功能的存儲(chǔ)結(jié)構(gòu)圖
RAM的20H~2FH的存儲(chǔ)特點(diǎn)(位尋址區(qū))
-
20H~2FH本身是字節(jié)地址,因此這些單元可以按照常規(guī)存儲(chǔ)16個(gè)字節(jié)的數(shù)據(jù)。如:
MOV 20H,A ;將累加器A中的數(shù)據(jù)送RAM的 20H單元(字節(jié)傳送操作)
-
將20H~2FH中的16*8既128個(gè)bit分別定義其位地址00H~7FH(如圖),這樣CPU可以按位來(lái)訪(fǎng)問(wèn)這些bit:
MOV 20H,C ;將Cy中的布爾變量送20H位地 址中(位傳送)
2.2.3 特殊功能寄存器SFR
特殊功能寄存器 SFR (Special Function Register) 離散分布在256B字節(jié)中的高128B中。
- 設(shè)定單片機(jī)內(nèi)部各模塊的工作方式,存放相關(guān)模塊的狀態(tài)與標(biāo)志。如定時(shí)器、串行口,并行端口和中斷設(shè)置等。
- 盡管特殊功能寄存器與RAM在同一個(gè)單元中,但不能作為普通的RAM存儲(chǔ)單元來(lái)使用。
- 在編程中根據(jù)需要,進(jìn)行一些特定功能的設(shè)定,或者是從中查尋相關(guān)部件的狀態(tài)時(shí),才能對(duì)其進(jìn)行讀、寫(xiě)操作。如中斷方式的設(shè)定、定時(shí)器工作模式的設(shè)定,查詢(xún)串行口發(fā)送或接收是否結(jié)束等等。
具有位地址和位名稱(chēng)的SFR才可以位尋址。
位地址有以下4種表示形式:
- 直接使用位地址表示
例如:0D7H —— PSW最高位的位地址 - 使用位名稱(chēng)表示、
例如:CY —— PSW最高位的位名稱(chēng) - 使用SFR字節(jié)地址.位形式表示
例如:0D7H.7 —— PSW字節(jié)地址.最高位 - 使用SFR名稱(chēng). 位形式表示
例如:PSW.7 —— PSW名稱(chēng).最高位
位尋址:20H-2FH和能被8整除的SFR
2.3 外部數(shù)據(jù)存儲(chǔ)器
當(dāng)單片機(jī)需要外加RAM存儲(chǔ)器時(shí)(擴(kuò)展系統(tǒng)),必須使用專(zhuān)用的MOVX指令,此時(shí)單片機(jī)的端口功能就要發(fā)生相應(yīng)的改變:
① P0、P2作為外部RAM的地址和數(shù)據(jù)總線(xiàn);
② 使用MOVX指令進(jìn)行讀寫(xiě)操作。
③ MOVX指令在執(zhí)行時(shí),會(huì)自動(dòng)地產(chǎn)生/RD或/WR信號(hào)對(duì) 外部RAM實(shí)現(xiàn)控制。
指令通過(guò)P0、P2輸出DPTR中的16位地址信號(hào)。這里使用了16位的寄存器DPTR,其尋址范圍為64KB。
此時(shí): P0口做低8位地址總線(xiàn)和數(shù)據(jù)的“復(fù)用”總線(xiàn);
P2口做高8位地址總線(xiàn)。
2.4 小結(jié)
MCS-51單片機(jī)的存儲(chǔ)器的配置
片內(nèi)4K的程序存儲(chǔ)器ROM;
片內(nèi)256B的數(shù)據(jù)存儲(chǔ)器RAM;
片外可以擴(kuò)展64K的ROM和RAM.
-
程序存儲(chǔ)器
當(dāng)引腳EA=1時(shí), CPU從片內(nèi)ROM的0000H單元運(yùn)行程序;
若引腳EA=0時(shí), CPU從片外ROM的0000H單元運(yùn)行程序。
當(dāng)引腳EA=1,且PC值大于0FFFH時(shí), CPU會(huì)自動(dòng)從內(nèi)部ROM轉(zhuǎn)到片外ROM的1000H單元運(yùn)行程序。無(wú)論是片內(nèi)還是片外, ROM有六個(gè)單元是有特定意義的:
- 0000H單元:上電,復(fù)位后的啟動(dòng)地址;
- 0003H單元:外部中斷INT0的入口地址;
- 000BH單元:定時(shí)器T0的中斷入口地址;
- 0013H單元:外部中斷INT1的入口地址;
- 001BH單元:定時(shí)器T1的中斷入口地址;
- 0023H單元:串行口中斷的入口地址。
-
內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM
低128B: 1,工作寄存器區(qū);2,位尋址區(qū);3,便箋區(qū);
高128B: 做特殊功能寄存器SFR用。
注意:- SFR不同于一般的數(shù)據(jù)RAM,它不是用于存儲(chǔ)數(shù)據(jù),而是用來(lái)控制和 表征單片機(jī)內(nèi)部幾個(gè)邏輯部件的特征,狀態(tài)等重要信息。
- 在使用RAM時(shí),要注意字節(jié)地址和位地址的概念.
- 訪(fǎng)問(wèn)內(nèi)部RAM的指令為 MOV 指令。
-
外部數(shù)據(jù)存儲(chǔ)器
- 在硬件具備的條件下,MCS-51單片機(jī)可以使用64KB的外部數(shù)據(jù)存儲(chǔ)器.如果要訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器RAM時(shí),只能使用間址的尋址方式.
- 間址寄存器有R0,R1或DPTR.前者尋址范圍為256KB(00H-FFH);后者為64KB(0000H-FFFFH).使用的指令是 MOVX。
三、單片機(jī)的引腳功能
3.1 51單片機(jī)的外形和邏輯符號(hào)
3.2 51單片機(jī)的引腳定義
3.2.1 主電源引腳
主電源引腳:Vcc(+5V— 40腳)和 Vss (GND 20腳);
3.2.2 外接晶體引腳
外接晶體引腳:XTAL1(19腳)、XTAL2(18腳)
兩腳之間接入一個(gè)晶體震蕩器,單片機(jī)就以此晶體的頻率開(kāi)始工作(其頻率范圍為:0~24MHz)。
頻率越高,單片機(jī)的工作速度就越快,但單片機(jī)的功耗就要增加,其產(chǎn)生的高次諧波也會(huì)對(duì)系統(tǒng)內(nèi)部的模擬電路(如ADC)產(chǎn)生嚴(yán)重的干擾。
3.2.3 控制與電源復(fù)用引腳
RST / V pd(9腳)
RST / V pd(9腳):復(fù)位信號(hào)輸入,高電平有效。
- 復(fù)位操作可以確保CPU從程序的開(kāi)始端運(yùn)行程序;
- 微處理器在“上電”時(shí)必須對(duì)其施行“復(fù)位”操作,以避免電源從0V至5V時(shí)電源的過(guò)度性造成系統(tǒng)“混亂”。而MCS-51單片機(jī)不具備“上電復(fù)位”功能。因此,必須通過(guò)外部對(duì)此引腳施加一個(gè)(大于兩個(gè)時(shí)鐘周期的)高電平使單片機(jī)復(fù)位。
在復(fù)位狀態(tài)下:
- 程序指針PC=0000H;
- 堆棧指針SP=07H;
- SFR的內(nèi)容全變?yōu)椤?”;
- P0~P3四個(gè)端口輸出“全1”(FFH);
- RAM內(nèi)容不變。
【思考題】PC=0000H 意味著什么?
意味著程序從頭開(kāi)始執(zhí)行
Vpd 功能:當(dāng)單片機(jī)掉電時(shí),此引腳可以接入備用電源向單片機(jī)內(nèi)部的RAM供電,防止RAM中的數(shù)據(jù)丟失。
ALE/PROG(30腳)
以系統(tǒng)時(shí)鐘 fosc 的1/6的頻率,周期性輸出方波脈沖。
- 系統(tǒng)擴(kuò)展時(shí),作為外部存儲(chǔ)器低八位地址的鎖存信號(hào);
- 可為系統(tǒng)提供一個(gè)頻率為 fosc/6 的方波信號(hào);
- EPROM型單片機(jī)編程時(shí)編程輸入脈沖(第二功能)。
/PSEN(29腳)
/PSEN(29腳):外部程序程序存儲(chǔ)器的選通輸出信號(hào)。
- 當(dāng)單片機(jī)使用外部程序存儲(chǔ)器時(shí),此腳在一個(gè)機(jī)器周期內(nèi)產(chǎn)生兩次負(fù)脈沖,作為外部程序存儲(chǔ)器ROM的選通信號(hào);
- 訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器 RAM 時(shí),此信號(hào)無(wú)效。
/EA / Vdd (31腳)
/EA / Vdd (31腳):程序存儲(chǔ)器的選擇控制端
CPU 執(zhí)行片內(nèi)ROM還是外部ROM中的程序,由硬件設(shè)計(jì)者通過(guò)對(duì)EA引腳的設(shè)置來(lái)決定:
/EA=“1” 時(shí):?jiǎn)纹瑱C(jī)使用內(nèi)部的程序存儲(chǔ)器ROM;
/EA=“0” 時(shí):?jiǎn)纹瑱C(jī)使用外部的程序存儲(chǔ)器ROM。
【注意】:如果EA=1既使用單片機(jī)內(nèi)部的程序存儲(chǔ)器時(shí),如果程序計(jì)數(shù)器PC的值超過(guò)0FFFH時(shí),單片機(jī)將自動(dòng)轉(zhuǎn)向外部程序存儲(chǔ)器1000H開(kāi)始的單元。
對(duì)于EPROM型的單片機(jī),此腳還是用于寫(xiě)程序時(shí),加入21伏的編程電壓。
四、單片機(jī)的I/O口
4.1 P0
P0.0 - P0.7: P0端口線(xiàn)(39-32腳)
輸出能力最強(qiáng)的端口,可帶動(dòng)8個(gè)TTL負(fù)載;
- 具有兩種工作方式:
①普通的I/O方式;
②系統(tǒng)擴(kuò)展時(shí)的總線(xiàn)方式。 - 當(dāng)處于I/O方式時(shí):端口內(nèi)部輸出電路呈“開(kāi)路結(jié)構(gòu)”,所以當(dāng)驅(qū)動(dòng)MOS負(fù)載時(shí),應(yīng)接一個(gè)10K左右的上拉電阻,否則無(wú)法輸出高電平。
-
當(dāng)處于擴(kuò)展方式時(shí):P0口成為外部存儲(chǔ)器提供低八位地址和數(shù)據(jù)的“復(fù)用總線(xiàn)” (此時(shí)不能作為通用的I/O端口)。
4.2 P1
P1.0 - P1.7: P1端口線(xiàn)(1 – 8腳):
- 負(fù)載能力4個(gè)TTL負(fù)載。
- MCS-51單片機(jī)中唯一“功能單一”的I/O端口。在系統(tǒng)設(shè)計(jì)中只能設(shè)計(jì)為“通用的I/O端口”;
4.3 P2
P2.0 – P2.7: P2端口線(xiàn)(21 – 28腳):
- 同P0端口類(lèi)似:具有兩種工作方式:
①普通的I/O方式;
②系統(tǒng)擴(kuò)展時(shí)的總線(xiàn)方式(高八位地址總線(xiàn))。
4.4 P3
P3.0 – P3.7 P3端口線(xiàn) (10 – 17腳):
- P3口的引腳具有兩種用途:
①做通用的I/O端口,負(fù)載能力為4個(gè)TTL ;
②引腳具有第二功能。
4.4.1 小結(jié)
【注意】: 在系統(tǒng)設(shè)計(jì)中,P3端口原則上不作I/O端口,而是盡量保留其第二功能;
如:串行通信中所使用的發(fā)送TXD、接收RXD以及外部中斷的兩個(gè)輸入信號(hào)INT0、INT1等。
**這種方法利于系統(tǒng)設(shè)計(jì)中最大限度的調(diào)用MCS-51單片機(jī)的內(nèi)部硬件資源,以簡(jiǎn)化外部電路的設(shè)計(jì)。**
4.5 片外總線(xiàn)結(jié)構(gòu)
4.5.1 地址總線(xiàn)(AB)
地址總線(xiàn)的寬度是16位,因此可以尋址的范圍是64?KB。采用分時(shí)復(fù)用技術(shù),可以對(duì)外部64?KB的數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器直接尋址。它由P0口提供16位地址總線(xiàn)的低8位(A0~A7),由P2口提供地址總線(xiàn)的高8位(A8~A15)。
4.5.2 數(shù)據(jù)總線(xiàn)(DB)
數(shù)據(jù)總線(xiàn)的寬度是8位,它由P0口提供。
4.5.3 控制總線(xiàn)(CB)
控制總線(xiàn)由P3口的第二功能(RXD、TXD、INT0、INT1、T0、T1、RD、WR)和4根獨(dú)立的控制線(xiàn)(RST、EA、ALE、PSEN)組成。
4.6 小結(jié)
- MCS-51單片機(jī)的四個(gè)端口其功能在芯片設(shè)計(jì)中各不相同,所以其內(nèi)部結(jié)構(gòu)和特點(diǎn)也不一樣;
- P0~P3四個(gè)端口都可以作為普通的具有雙向傳輸功能的I/O端口;
- 當(dāng)系統(tǒng)硬件設(shè)計(jì)中如果采用外部存儲(chǔ)器(ROM或RAM)擴(kuò)展方式時(shí),P0、P2端口變?yōu)橄到y(tǒng)總線(xiàn)。在此時(shí)P0、P2不能再做I/O端口。
- P3口在系統(tǒng)設(shè)計(jì)上,盡可能的保留其第二功能,以可充分利用單片機(jī)的內(nèi)部系統(tǒng)資源。
- 對(duì)程序存儲(chǔ)器ROM的使用選擇取決于引腳EA的設(shè)定:EA=1使用片內(nèi)4K的ROM;EA=0時(shí)使用外部ROM。
- 一個(gè)微處理器在上電時(shí),必須進(jìn)行“復(fù)位”操作,而MCS-51單片機(jī)不具備“上電復(fù)位”功能,所以必須外加一個(gè)上電復(fù)位電路,其復(fù)位時(shí)間大于2個(gè)機(jī)器周期即可;
- 單片機(jī)的工作頻率 fosc 取決于外接晶體的振蕩頻率。如何選擇晶體的振蕩頻率不單純考慮系統(tǒng)的工作速度,還要考慮到系統(tǒng)的功耗、工作的穩(wěn)定向和可靠性,而這些都與外接晶體的振蕩頻率有著直接的關(guān)系;
五、單片機(jī)內(nèi)部看門(mén)狗定時(shí)器
看門(mén)狗定時(shí)器(WDT)簡(jiǎn)介
WDT是為了解決CPU運(yùn)行時(shí)可能進(jìn)入混亂或死循環(huán)而設(shè)置的,AT89S51的WDT由一個(gè)14bit計(jì)數(shù)器和看門(mén)狗復(fù)位SFR(WDTRST)構(gòu)成。
**外部復(fù)位時(shí),WDT默認(rèn)為關(guān)閉狀態(tài),要打開(kāi)WDT,用戶(hù)必須順序?qū)?1EH和0E1H寫(xiě)到WDTRST寄存器(SFR地址為0A6H)中。**
當(dāng)啟動(dòng)WDT后,它會(huì)隨晶體振蕩器在每個(gè)機(jī)器周期計(jì)數(shù),除硬件復(fù)位或WDT溢出復(fù)位外沒(méi)有其它方法關(guān)閉WDT。
WDT溢出將使RST引腳輸出**高電平的復(fù)位脈沖**,復(fù)位脈沖持續(xù)時(shí)間**98個(gè)時(shí)鐘周期**
六、單片機(jī)復(fù)位工作方式
6.1 介紹
復(fù)位:將單片機(jī)系統(tǒng)置成特定初始狀態(tài)的操作,復(fù)位后程序從頭(0000H單元)開(kāi)始執(zhí)行程序。
系統(tǒng)剛接通電源或重新啟動(dòng)時(shí)均進(jìn)入復(fù)位狀態(tài)。
當(dāng)系統(tǒng)處于正常工作狀態(tài)時(shí),如果RST引腳上有一個(gè)高電平并維持2個(gè)機(jī)器周期(24個(gè)振蕩周期)以上,則CPU就可以實(shí)現(xiàn)可靠復(fù)位,如圖2-17所示,其中TCY為機(jī)器周期,等于12個(gè)時(shí)鐘周期。各寄存器和程序計(jì)數(shù)器PC的狀態(tài)見(jiàn)表2-11所示。
6.2 兩種上電復(fù)位電路
6.2.1 上電復(fù)位電路
上電復(fù)位電路:當(dāng)接通電源的瞬間,RST端與VCC同電位,隨著電容上的電壓逐漸上升,RST端的電壓逐漸下降,于是在RST端便形成了一個(gè)正脈沖,只要該正脈沖的寬度持續(xù)兩個(gè)機(jī)器周期的高電平,就可實(shí)現(xiàn)系統(tǒng)自動(dòng)復(fù)位。
6.2.2 上電復(fù)位及按鈕復(fù)位
上電復(fù)位和按鈕復(fù)位:(也稱(chēng)為手動(dòng)復(fù)位)的組合,當(dāng)人工按下P按鈕后就可實(shí)現(xiàn)系統(tǒng)復(fù)位。單片機(jī)復(fù)位后,各寄存器和程序計(jì)數(shù)器PC的狀態(tài)見(jiàn)表2-11所示。
6.3 復(fù)位的初始狀態(tài)
七、單片機(jī)低功耗方式
7.1 介紹
AT89系列單片機(jī)提供了兩種省電工作方式:空閑方式和掉電方式。其目的是盡可能地降低系統(tǒng)的功耗。
在空閑工作方式中(IDL=1),振蕩器繼續(xù)工作,時(shí)鐘脈沖輸出到中斷系統(tǒng)、串行口以及定時(shí)器模塊,但卻不提供給CPU。在掉電方式中(PD=1),振蕩器停止工作。
兩種工作方式都是由SFR中的電源控制寄存器PCON的控制位來(lái)定義的,PCON寄存器的控制格式如圖2-19所示。
SMOD:串行口波特率倍率控制位。
GF0,GF1:通用標(biāo)志位。
PD:掉電方式控制位。PD=1,進(jìn)入掉電工作方式。
IDL:空閑方式控制位。IDL=1,進(jìn)入空閑工作方式。
PCON寄存器的復(fù)位值為0XXX000,PCON.4~PCON.6為保留位,用戶(hù)不要對(duì)它們進(jìn)行寫(xiě)操作。
7.2 空閑工作方式
當(dāng)CPU執(zhí)行完置IDL=1( ORL PCON,#01H,PCON.0=1)的指令后,系統(tǒng)進(jìn)入了空閑工作方式。
這時(shí),內(nèi)部時(shí)鐘不提供給CPU,而只供給中斷、串行口、定時(shí)器部分。CPU的內(nèi)部狀態(tài)維持不變,即包括堆棧指針SP、程序計(jì)數(shù)器PC、程序狀態(tài)字PSW、累加器ACC等其他所有的內(nèi)容保持不變,端口狀態(tài)也保持不變。ALE保持邏輯高電平。
有兩種方法可以使系統(tǒng)退出空閑工作方式:
1、**任何的中斷請(qǐng)求都可以由硬件將PCON.0(IDL)清0而中止空閑工作方式。**當(dāng)執(zhí)行完中斷服務(wù)程序返回時(shí),從置空閑工作方式指令的下一條指令開(kāi)始繼續(xù)執(zhí)行程序。
2、**硬件復(fù)位。**RST端的復(fù)位信號(hào)直接將PCON.0(IDL)清0,從而退出空閑狀態(tài),CPU則從進(jìn)入空閑方式的下一條指令開(kāi)始重新執(zhí)行程序。
7.3 掉電工作方式
當(dāng)CPU執(zhí)行一條置PCON.1位(PD)為1的指令后,系統(tǒng)進(jìn)入掉電工作方式。
在這種工作方式下,內(nèi)部振蕩器停止工作。由于沒(méi)有振蕩時(shí)鐘,因此所有的功能部件都停止工作,但內(nèi)部RAM區(qū)和特殊功能寄存器的內(nèi)容被保留,而端口的輸出狀態(tài)值都保存在對(duì)應(yīng)的SFR中,ALE和都為低電平。
**退出掉電方式的惟一方法是硬件復(fù)位。**復(fù)位后將所有的特殊功能寄存器的內(nèi)容初始化,但不改變內(nèi)部RAM區(qū)的數(shù)據(jù)。
而在準(zhǔn)備退出掉電方式之前,**Vcc必須恢復(fù)到正常的工作電壓值,并維持一段時(shí)間(約10?ms),**使振蕩器重新啟動(dòng)并穩(wěn)定后,方可退出掉電方式。
八、單片機(jī)的時(shí)序
8.1 介紹
單片機(jī)取出指令后要對(duì)指令進(jìn)行譯碼產(chǎn)生各種操作信號(hào),所謂時(shí)序,就是指各種操作信號(hào)的時(shí)間序列,它表明了指令執(zhí)行中各種信號(hào)之間的相互關(guān)系。為達(dá)到同步協(xié)調(diào)工作的目的,各操作信號(hào)在時(shí)間上有嚴(yán)格的先后次序,這些次序就是CPU的時(shí)序。
CPU執(zhí)行指令的一系列動(dòng)作都是在時(shí)序電路控制下一拍一拍進(jìn)行的,為了便于對(duì)CPU時(shí)序進(jìn)行分析,人們按指令的執(zhí)行過(guò)程規(guī)定了幾種周期,即時(shí)鐘周期、狀態(tài)周期、機(jī)器周期和指令周期,也稱(chēng)為時(shí)序定時(shí)單位。
8.2 基本時(shí)序
8.2.1 時(shí)鐘周期
也稱(chēng)為振蕩周期,定義為時(shí)鐘脈沖頻率(fosc)的倒數(shù),是計(jì)算機(jī)中最基本的、最小的時(shí)間單位。
在一個(gè)時(shí)鐘周期內(nèi),中央處理器CPU僅完成一個(gè)最基本的動(dòng)作。一個(gè)振蕩周期也稱(chēng)為一個(gè)節(jié)拍,用P表示,通常稱(chēng)為P節(jié)拍,如圖2.20所示。
8.2.2 狀態(tài)周期
時(shí)鐘周期經(jīng)2分頻后成為內(nèi)部的時(shí)鐘信號(hào),用作單片機(jī)內(nèi)部各功能部件按序協(xié)調(diào)工作的控制信號(hào),稱(chēng)為狀態(tài)周期,用S表示。
**一個(gè)狀態(tài)周期包含兩個(gè)時(shí)鐘周期,前半狀態(tài)周期相應(yīng)的時(shí)鐘周期定義為P1,后半周期對(duì)應(yīng)的時(shí)鐘周期定義為P2。**一般情況下,CPU中的算術(shù)邏輯運(yùn)算在P1有效期間完成,在P2有效期間進(jìn)行內(nèi)部寄存器間的信息傳送。
8.2.3 機(jī)器周期
機(jī)器周期:完成一個(gè)基本操作所需要的時(shí)間稱(chēng)為機(jī)器周期。
51單片機(jī)有固定的機(jī)器周期,規(guī)定一個(gè)機(jī)器周期有6個(gè)狀態(tài),分別表示為S1~S6,而一個(gè)狀態(tài)包含兩個(gè)時(shí)鐘周期,那么一個(gè)機(jī)器周期就有12個(gè)時(shí)鐘周期,可以表示為S1P1, S1P2, …, S6P1, S6P2,一個(gè)機(jī)器周期共包含12個(gè)振蕩脈沖,即機(jī)器周期就是振蕩脈沖的12分頻。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-409454.html
8.2.4 指令周期
指令周期:指CPU執(zhí)行一條指令所需要的時(shí)間,一般由若干個(gè)機(jī)器周期組成,指令不同,所需要的機(jī)器周期數(shù)也不同。51系統(tǒng)中,一個(gè)指令周期通常含1~4個(gè)機(jī)器周期。大多數(shù)指令是單字節(jié)單周期指令,還有一些指令是單字節(jié)雙周期指令和雙字節(jié)雙周期指令,而乘法指令MUL和除法指令DIV都是單字節(jié)四周期指令(參見(jiàn)附錄B)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-409454.html
到了這里,關(guān)于單片機(jī)原理與應(yīng)用以及C51編程技術(shù)——硬件體系結(jié)構(gòu)梳理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!