




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1/150一、單片機(jī)的內(nèi)部結(jié)構(gòu)單片微型計(jì)算機(jī)(簡稱單片機(jī))在一片芯片上集成了前述微型計(jì)算機(jī)的功能結(jié)構(gòu),有些單片機(jī)不僅集成了CPU、存儲程序和數(shù)據(jù)的存儲器、I/O接口、定時/計(jì)數(shù)器等常規(guī)資源,而且還集成了工業(yè)測控系統(tǒng)中常用的模擬量模塊。
§3.2單片機(jī)的結(jié)構(gòu)2/150單片機(jī)產(chǎn)品8051內(nèi)核是Intel8051系列單片機(jī)的基本標(biāo)準(zhǔn),許多參考書上將這種單片機(jī)稱為MCS-51系列單片機(jī)。MCS-51系列單片機(jī)的典型產(chǎn)品為8051,它有4K×8ROM,128字節(jié)RAM,2個16位定時/計(jì)數(shù)器,4個8位I/O口,一個串行口。二十世紀(jì)80年代,Intel將8051內(nèi)核轉(zhuǎn)讓或出售給幾家著名的IC廠商,如Philips,Atmel等。這樣,8051單片機(jī)就變成眾多制造廠家支持的,發(fā)展成為上百個產(chǎn)品的大家族。最常用的宏晶STC系列單片機(jī),Atmel公司的AT89系列等51系列,等等。只要是8051內(nèi)核的單片機(jī),它們的最基本結(jié)構(gòu)是相同的,并且,指令系統(tǒng)完全兼容標(biāo)準(zhǔn)8051單片機(jī)。2023/11/153MCS-51單片機(jī)的結(jié)構(gòu)
在這一塊芯片上,集成了一臺微型計(jì)算機(jī)的各個部分。其中主要有CPU、存儲器、可編程I/O、定時/計(jì)數(shù)器、串行口等。各部分通過內(nèi)部總線相連。2023/11/154時鐘OSCCPU各種I/O定時器/計(jì)數(shù)器程序存儲器ROM數(shù)據(jù)存儲器RAM中斷MCS-51單片機(jī)組成框圖2023/11/1558051的內(nèi)部結(jié)構(gòu)展開圖128×8RAMRAM地址寄存器P3口P1口P2口P0口鎖存器鎖存器鎖存器鎖存器中斷控制定時/計(jì)數(shù)器串行I/O口SP寄存器B累加器A暫存器1暫存器2程序狀態(tài)字PSW指令寄存器IR指令譯碼器ID數(shù)據(jù)指針DPTR緩沖器程序計(jì)數(shù)器PC增1程序地址寄存器AR定時與控制4K×8ROMALUCPU2023/11/156CPU運(yùn)算器CPU算術(shù)/邏輯部件ALU(ArithmeticLogicUnit)累加器ACC
(Accumulator)程序狀態(tài)字寄存器PSW(ProgramStatusWord)暫存寄存器寄存器B控制器定時控制與條件轉(zhuǎn)移邏輯電路程序計(jì)數(shù)器PC指令寄存器IR指令譯碼器ID2023/11/1578051的片內(nèi)存儲器
8051單片機(jī)與一般微機(jī)的存儲器配置方式很不相同。一般微機(jī)通常只有一個邏輯空間,可以隨意安排ROM或RAM。訪問存儲器時,同一地址對應(yīng)唯一的存儲單元,可以是ROM也可以是RAM,并用同類訪問指令。而MCS-51則不同:2023/11/1588051在物理結(jié)構(gòu)上設(shè)計(jì)成程序存儲器與數(shù)據(jù)存儲器獨(dú)立分開的哈佛結(jié)構(gòu):片內(nèi)程序存儲器4KB(ROM0000H~0FFFH)片內(nèi)數(shù)據(jù)存儲器128B(RAM00H~7FH)8051的I/O端口8051有四個8位并行雙向I/O口P0、P1、P2、P3,一個串行口。2023/11/1598051的特殊功能寄存器SFR8051內(nèi)部有21個特殊功能寄存器,分別叫SP、IE、IP、PCON......(與內(nèi)部RAM統(tǒng)一編址80H~FFH)MCS-51單片機(jī)的存儲器組織8051在物理結(jié)構(gòu)上有四個存儲空間:片內(nèi)程序存儲器、片外程序存儲器、片內(nèi)數(shù)據(jù)存儲器、片外數(shù)據(jù)存儲器。new2023/11/151064KBROMEA=0EA=10000H0FFFH1000HFFFFH4KBROMFFH80H7FH00HSFRRAM64KBRAM(I/O)0000HFFFFH片內(nèi)片外片外程序存儲器數(shù)據(jù)存儲器2023/11/1511
8051在邏輯上,即從用戶角度上8051有三個存儲空間:片內(nèi)外統(tǒng)一編址的程序存儲器片內(nèi)外不統(tǒng)一編址的數(shù)據(jù)存儲器特殊功能寄存器(片內(nèi))★訪問這幾個不同的邏輯空間時,采用的指令:片內(nèi)外程序存儲器空間----MOVC
片內(nèi)數(shù)據(jù)存儲器空間和SFR----MOV
片外數(shù)據(jù)存儲器地址空間----MOVX2023/11/1512一、程序存儲器及地址空間作用--程序存儲器用于存放編好的程序和表格常數(shù)。①8051片內(nèi)有4K字節(jié)ROM,片外用16位地址線最多可擴(kuò)展64K字節(jié)ROM,兩者是統(tǒng)一編址的?!锶绻鸈A端保持高電平,8051執(zhí)行片內(nèi)前4KBROM地址(0000H~0FFFH)中的程序。當(dāng)尋址范圍超過4KB(1000H~FFFFH)時,則從片外存儲器取指令?!锂?dāng)EA端保持低電平時,8051的所有取指令操作均在片外程序存儲器中進(jìn)行,這時片外存儲器可以從0000H開始編址。2023/11/1513②在程序存儲器中,有6個單元具有特殊功能0003H:外部中斷0入口。000BH:定時器0溢出中斷入口。0013H:外部中斷1入口。001BH:定時器1溢出中斷入口。0023H:串行口中斷入口。
使用時,通常在這些入口地址處存放一條絕對跳轉(zhuǎn)指令,使程序跳轉(zhuǎn)到用戶安排的中斷程序起始地址,或者從0000H起始地址跳轉(zhuǎn)到用戶設(shè)計(jì)的初始程序上。0000H:8051復(fù)位后,PC=0000H,即程序從0000H
開始執(zhí)行指令。2023/11/1514數(shù)據(jù)存儲器及地址空間數(shù)據(jù)存儲器片外RAM64KB,地址范圍0000H~FFFFH片內(nèi)RAM128B,地址范圍00H~7FH使用時只能用MOVX指令訪問使用MOV指令訪問,可以進(jìn)行堆棧操作2023/11/1515片內(nèi)數(shù)據(jù)存儲器空間分布圖通用RAM區(qū)
(80B)
位地址區(qū)
(16B)寄存器區(qū)4組(32B)7FH寄存器3組寄存器2組寄存器1組寄存器0組寄存器區(qū)4組(32B).........①由PSW中的2位RS1、RS0來決定選哪一組為當(dāng)前工作寄存器:
RS1、RS0=00選0組
RS1、RS0=01選1組
RS1、RS0=10選2組
RS1、RS0=11選3組②在位地址區(qū),每一個BIT都有一個地址,共16×8=128位00H30H2FH20H1FH...2023/11/1516片內(nèi)數(shù)據(jù)存儲器空間分布圖通用RAM區(qū)
(80B)位地址區(qū)
(16B)7FH寄存器3組寄存器2組寄存器1組寄存器0組寄存器0組寄存器區(qū)4組(32B).........RS1、RS0=00R7R6R5R4R3R2R1R000H01H02H03H04H05H06H07H00H30H2FH20H1FH...2023/11/1517片內(nèi)數(shù)據(jù)存儲器空間分布圖通用RAM區(qū)
(80B)位地址區(qū)
(16B)7FH寄存器3組寄存器2組寄存器1組寄存器0組寄存器1組R7R6R5R4R3R2R1R008H09H0AH0BH0CH0DH0EH0FH寄存器區(qū)4組(32B).........RS1、RS0=0100H30H2FH20H1FH...2023/11/1518片內(nèi)數(shù)據(jù)存儲器空間分布圖通用RAM區(qū)
(80B)位地址區(qū)
(16B)7FH寄存器3組寄存器2組寄存器1組寄存器0組寄存器2組R7R6R5R4R3R2R1R010H11H12H13H14H15H16H17H寄存器區(qū)4組(32B).........RS1、RS0=1000H30H2FH20H1FH...2023/11/1519片內(nèi)數(shù)據(jù)存儲器空間分布圖通用RAM區(qū)
(80B)位地址區(qū)
(16B)7FH寄存器3組寄存器2組寄存器1組寄存器0組位地址區(qū)20H21H22H23H24H25H26H27H28H29H2AH2BH2CH2DH2EH2FH00H01H02H03H04H05H06H07H08H0FH10H7FH78H70H68H60H58H50H48H40H38H30H28H20H77H6FH67H1FH5FH57H4FH47H3FH37H2FH27H1FH17H........................D7D6D5D4D3D2D1D0.........00H30H2FH20H1FH...2023/11/1520片內(nèi)數(shù)據(jù)存儲器空間分布圖通用RAM區(qū)
(80B)位地址區(qū)
(16B)00H30H2FH20H1FH7FH寄存器3組寄存器2組寄存器1組寄存器0組通用RAM區(qū)............共80個字節(jié),作為一般的數(shù)據(jù)緩沖區(qū)并可設(shè)置堆棧區(qū)
80H~0FFH
為特殊功能寄存器(SFR)區(qū),除了程序計(jì)數(shù)器PC和四個工作寄存器組外,其余的寄存器都在SFR區(qū)中(8051共26個字節(jié))。對SFR必須采用直接尋址方式訪問。對于8052單片機(jī),80H~0FFH還是RAM區(qū),必須通過間接尋址訪問。對于8051單片機(jī),該段RAM空間的單元不存在,用戶不能對這些單元通過間接尋址進(jìn)行讀/寫操作。地址能被8整除的SFR可以位尋址。三、特殊功能寄存器(26個字節(jié)SFR)2023/11/1522①與ALU相關(guān)的(3個)
ARegister(Accumulator):累加器,通常用A或ACC表示。可字節(jié)尋址(E0H),也可位尋址(E0H~E7H)
它是一個寄存器,而不是一個做加法的部件。在運(yùn)算器做運(yùn)算時其中一個數(shù)一定是在ACC中。
BRegister:暫存寄存器。
暫存寄存器。在做乘、除法時放乘數(shù)或除數(shù)及結(jié)果。
PSW(ProgramStatusWord
):
PSW是8位寄存器,用于作為程序運(yùn)行狀態(tài)的標(biāo)志。這是一個很重要的部件,里面存放了CPU工作時的很多狀態(tài),借此,我們可以了解CPU的當(dāng)前狀態(tài),并作出相應(yīng)的處理。2023/11/1523它的各位功能如下:
當(dāng)CPU進(jìn)行各種邏輯操作或算術(shù)運(yùn)算時,為反映操作或運(yùn)算結(jié)果的狀態(tài),把相應(yīng)的標(biāo)志位置1或清0。這些標(biāo)志的狀態(tài),可由專門的指令來測試,也可通過指令來讀出。它為計(jì)算機(jī)確定程序的下一步進(jìn)行方向提供依據(jù)。PSW寄存器中各位的名稱及位置如上所示,下面說明各標(biāo)志位的作用。D7HD6HD5HD4HD3HD2HD1HD0HCYACF0RS1RS0OVPPSW位地址2023/11/1524
CY:進(jìn)位標(biāo)志。
加減運(yùn)算時,保存最高位進(jìn)位、借位狀態(tài)。
AC:半進(jìn)位標(biāo)志。
例:78H+97H01111000+10010111100001111
D7HD6HD5HD4HD3HD2HD1H
D0H
CY
ACF0RS1RS0OVPPSW位地址有進(jìn)位CY=1沒有半進(jìn)位AY=02023/11/1525
RS1、RS0:工作寄存器組選擇位。
00選擇工作寄存器0組
01選擇工作寄存器1組
10選擇工作寄存器2組
11選擇工作寄存器3組
P:奇偶校驗(yàn)位,它用來表示累加器A內(nèi)容中二進(jìn)制數(shù)位
“1”的個數(shù)的奇偶性。若為奇數(shù),則P=1,否則為0。例:某運(yùn)算結(jié)果是78H(01111000),P=0。D7HD6HD5HD4HD3HD2HD1H
D0HCY
ACF0
RS1RS0OV
PPSW位地址2023/11/1526F0:用戶標(biāo)志位。作為軟件標(biāo)志,由編程人員決定何時使用。OV:溢出標(biāo)志位。有符號數(shù)運(yùn)算時,如果發(fā)生溢出,OV置“1”,否則清“0”。D7HD6HD5HD4HD3HD2HD1H
D0HCY
AC
F0RS1RS0OVPPSW位地址2023/11/1527②與指針相關(guān)的(2個)
SP(StackPointer):
堆棧指針,8位寄存器,用來指定堆棧的棧頂位置,初值為07H。它是加1計(jì)數(shù).
DPTR(DataPointer)(分成DPH、DPL兩個):數(shù)據(jù)指針可以用它來訪問外部數(shù)據(jù)存儲器中的任一單元,也可以作為通用寄存器來用,由我們自已決定如何使用。2023/11/1528P0、P1、P2、P3:四個并行輸入/輸出口的寄存器。它里面的內(nèi)容對應(yīng)著管腳的輸出。SCON(SerialControlRegister)SBUF(SerialDateBuffer)PCON(PowerControlRegister)
③與端口相關(guān)的(7個)④與定時/計(jì)數(shù)器相關(guān)的(6個)TMOD(Timer/CounterModeRegister)
定時器工作模式寄存器。TCON(Timer/CounterControlRegister)
定時器控制寄存器。TH0、TL0、TH1、TL1:分別是T0、T1的記數(shù)初值寄存器。2023/11/1529IP(InterruptPriorityRegister)IE(InterruptEnableRegister)③與中斷相關(guān)的(2個)特殊功能寄存器地址映象表(一)特殊功能寄存器地址映象表(二)特殊功能寄存器地址映象表(三)注:帶括號的字節(jié)地址表示每位有位地址可位操作。采用DIP40
封裝的80C51引腳圖。返回
8051單片機(jī)的引腳⒈電源:⑴VCC-芯片電源,接+5V;⑵VSS-接地端;⒉時鐘:
XTAL1、XTAL2-晶體振蕩電路反相輸入端和輸出端。
⒊控制線:共有4根⑴ALE/PROG:地址鎖存允許/片內(nèi)EPROM編程脈沖
①
ALE功能:用來鎖存P0口送出的低8位地址
②PROG功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。⑵PSEN:外ROM讀選通信號。⑶EA/Vpp:內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。①EA功能:內(nèi)外ROM選擇端(低,片外)。②Vpp功能:片內(nèi)有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。
⑷RST/VPD:復(fù)位/備用電源。①RST(Reset)功能:復(fù)位信號輸入端,高電平有效,兩個機(jī)器周期。②VPD功能:在Vcc掉電情況下,接備用電源。37/150看門狗“看門狗”,是經(jīng)典自由主義傳播學(xué)說對媒體的定位:秉持公正、客觀立場的媒體,是代表民眾監(jiān)督政府行為的“看門狗”。比如媒體,微博對狗仗人勢的門衛(wèi)的貶義詞。應(yīng)用使單片機(jī)可以在無人狀態(tài)下實(shí)現(xiàn)連續(xù)工作:看門狗芯片和單片機(jī)的一個I/O引腳相連,該I/O引腳通過程序控制它定時地往看門狗的這個引腳上送入高電平(或低電平),一旦單片機(jī)由于干擾造成程序跑飛后而陷入某一程序段進(jìn)入死循環(huán)狀態(tài)時,寫看門狗引腳的程序便不能被執(zhí)行,送出一個復(fù)位信號,即程序從程序存儲器的起始位置開始執(zhí)行,這樣便實(shí)現(xiàn)了單片機(jī)的自動復(fù)位。⒋I/O線
80C51共有4個8位并行I/O端口:P0、P1、P2、P3口,共32個引腳。P0與數(shù)據(jù)/低8位地址復(fù)用總線復(fù)用P1I/O口P2與高8位地址總線復(fù)用P3復(fù)用功能: P3.0——RXD: 串行口輸入端; P3.1——TXD: 串行口輸出端; P3.2——/INT0:外部中斷0請求輸入端; P3.3——/INT1:外部中斷1請求輸入端; P3.4——T0: 定時/計(jì)數(shù)器0外部信號輸入端; P3.5——T1: 定時/計(jì)數(shù)器1外部信號輸入端; P3.6——/WR: 外RAM寫選通信號輸出端; P3.7——/RD: 外RAM讀選通信號輸出端。2023/11/1539MCS-51單片機(jī)的并行端口結(jié)構(gòu)與操作8051單片機(jī)有4個I/O端口,每個端口都是8位準(zhǔn)雙向口,共占32根引腳。每個端口都包括一個鎖存器(即專用寄存器P0~P3)、一個輸出驅(qū)動器和輸入緩沖器。通常把4個端口籠統(tǒng)地表示為P0~P3。2023/11/1540
在無片外擴(kuò)展存儲器的系統(tǒng)中,這4個端口的每一位都可以作為準(zhǔn)雙向通用I/O端口使用。在具有片外擴(kuò)展存儲器的系統(tǒng)中,P2口作為高8位地址線,P0口分時作為低8位地址線和雙向數(shù)據(jù)總線。
8051單片機(jī)4個I/O端口線路設(shè)計(jì)的非常巧妙,學(xué)習(xí)I/O端口邏輯電路,不但有利于正確合理地使用端口,而且會給設(shè)計(jì)單片機(jī)外圍邏輯電路有所啟發(fā)。下面簡單介紹一下輸入/輸出端口結(jié)構(gòu)。并行輸入和輸出端口P0
P0口的結(jié)構(gòu)雙向三態(tài)輸入輸出端口。P0口身兼兩職,既可作為地址總線(AB0-AB7),也可作為數(shù)據(jù)總線(DB0-DB7)。作為通用I/O時,是一個漏極開路電路。需外接上拉電阻。作為地址/數(shù)據(jù)總線使用時,不需處接上拉電阻。P0可驅(qū)動8個LSTTL,其它P口可以驅(qū)動4個LSTLL。2023/11/1542下圖為P0口的某位P0.n(n=0~7)結(jié)構(gòu)圖,它由一個輸出鎖存器、兩個三態(tài)輸入緩沖器和輸出驅(qū)動電路及控制電路組成。從圖中可以看出,P0口既可以作為I/O用,也可以作為地址/數(shù)據(jù)線用。DQCLKQMUXP0.n讀鎖存器內(nèi)部總線寫鎖存器讀引腳地址/數(shù)據(jù)控制VCCT1T2P0口引腳P0口的結(jié)構(gòu)2023/11/15431、P0口作為普通I/O口①輸出時CPU發(fā)出控制電平“0”封鎖“與”門,將輸出上拉場效應(yīng)管T1截止,同時使多路開關(guān)MUX把鎖存器與輸出DQCLKQMUXP0.n讀鎖存器內(nèi)部總線寫鎖存器讀引腳地址/數(shù)據(jù)控制VCCT1T2P0口引腳2023/11/1544驅(qū)動場效應(yīng)管T2柵極接通。故內(nèi)部總線與P0口同相。由于輸出驅(qū)動級是漏極開路電路,若驅(qū)動NMOS或其它拉流負(fù)載時,需要外接上拉電阻。P0的輸出級可驅(qū)動8個LSTTL負(fù)載。DQCLKQMUXP0.n讀鎖存器內(nèi)部總線寫鎖存器讀引腳地址/數(shù)據(jù)控制VCCT1T2P0口引腳2023/11/1545②輸入時----分讀引腳或讀鎖存器讀引腳:由傳送指令(MOV)實(shí)現(xiàn);下面一個緩沖器用于讀端口引腳數(shù)據(jù),當(dāng)執(zhí)行一條由端口輸入的指令時,讀脈沖把該三態(tài)緩沖器打開,這樣端口引腳上的數(shù)據(jù)經(jīng)過緩沖器讀入到內(nèi)部總線。DQCLKQMUXP0.n讀鎖存器內(nèi)部總線寫鎖存器讀引腳地址/數(shù)據(jù)控制VCCT1T2P0口引腳2023/11/1546DQCLKQMUXP0.n讀鎖存器內(nèi)部總線寫鎖存器讀引腳地址/數(shù)據(jù)控制VCCT1T2P0口引腳②輸入時----分讀引腳或讀鎖存器讀鎖存器:有些指令如:ANLP0,A稱為“讀-改-寫”
指令,需要讀鎖存器。上面一個緩沖器用于讀端口鎖存器數(shù)據(jù)。2023/11/1547**原因:如果此時該端口的負(fù)載恰是一個晶體管基極,且原端口輸出值為1,那么導(dǎo)通了的PN結(jié)會把端口引腳高電平拉低;若此時直接讀端口引腳信號,將會把原輸出的“1”電平誤讀為“0”電平。現(xiàn)采用讀輸出鎖存器代替讀引腳,圖中,上面的三態(tài)緩沖器就為讀鎖存器Q端信號而設(shè),讀輸出鎖存器可避免上述可能發(fā)生的錯誤。**DQCLKQMUXP0.n讀鎖存器內(nèi)部總線寫鎖存器讀引腳地址/數(shù)據(jù)控制VCCT1T2P0口引腳2023/11/1548DQCLKQMUXP0.n讀鎖存器內(nèi)部總線寫鎖存器讀引腳地址/數(shù)據(jù)控制VCCT1T2P0口引腳準(zhǔn)雙向口:
從圖中可以看出,在讀入端口數(shù)據(jù)時,由于輸出驅(qū)動FET并接在引腳上,如果T2導(dǎo)通,就會將輸入的高電平拉成低電平,產(chǎn)生誤讀。所以在端口進(jìn)行輸入操作前,應(yīng)先向端口鎖存器寫“1”,使T2截止,引腳處于懸浮狀態(tài),變?yōu)楦咦杩馆斎?。這就是所謂的準(zhǔn)雙向口。49/150P0口做地址/數(shù)據(jù)總線口使用時是一個真正的雙向口,輸入為高阻抗結(jié)構(gòu),輸出為推挽結(jié)構(gòu),不必外加上拉電阻。(不需要任何預(yù)操作就可直接讀入讀出)P0口作為一般I/O口使用時,是一個準(zhǔn)雙向口,即輸入數(shù)據(jù)時,應(yīng)先向口寫“1”,使輸出下拉FET截止,然后方可作高阻抗輸入;輸出數(shù)據(jù)時,接口為開漏輸出結(jié)構(gòu),輸出高電平時需外加上拉電阻。(只能有效的讀出0,對于1則采用讀取非0方式,即先寫1,再讀。)注意在P0口作為通用的I/O口時,必須外接上拉電阻(如下圖)。12345678P0VCC上拉電阻的連接方法拉電流方式和灌電流方式2023/11/15532、P0作為地址/數(shù)據(jù)總線
在系統(tǒng)擴(kuò)展時,P0端口作為地址/數(shù)據(jù)總線使用時,分為:
P0引腳輸出地址/數(shù)據(jù)信息。DQCLKQMUXP0.n讀鎖存器內(nèi)部總線寫鎖存器讀引腳地址/數(shù)據(jù)控制VCCT1T2P0口引腳2023/11/1554CPU發(fā)出控制電平“1”,打開“與”門,又使多路開關(guān)MUX把CPU的地址/數(shù)據(jù)總線與T2柵極反相接通,輸出地址或數(shù)據(jù)。由圖上可以看出,上下兩個FET處于反相,構(gòu)成了推拉式的輸出電路,其負(fù)載能力大大增強(qiáng)。DQCLKQMUXP0.n讀鎖存器內(nèi)部總線寫鎖存器讀引腳地址/數(shù)據(jù)控制VCCT1T2P0口引腳2、P0作為地址/數(shù)據(jù)總線2023/11/1555P0引腳輸出地址/輸入數(shù)據(jù)輸入信號是從引腳通過輸入緩沖器進(jìn)入內(nèi)部總線。此時,CPU自動使MUX向下,并向P0口寫“1”,“讀引腳”控制信號有效,下面的緩沖器打開,外部數(shù)據(jù)讀入內(nèi)部總線。2、P0作為地址/數(shù)據(jù)總線----真正的雙向口DQCLKQMUXP0.n讀鎖存器內(nèi)部總線寫鎖存器讀引腳地址/數(shù)據(jù)控制VCCT1T2P0口引腳2023/11/1556二、P2的內(nèi)部結(jié)構(gòu)1.P2口作為普通I/O口DQCLKQMUXP2.n讀鎖存器內(nèi)部總線寫鎖存器讀引腳地址控制VCCRTP2口引腳CPU發(fā)出控制電平“0”
,使多路開關(guān)MUX倒向鎖存器輸出Q端,構(gòu)成一個準(zhǔn)雙向口。其功能與P1相同。2023/11/1557
2.P2口作為地址總線在系統(tǒng)擴(kuò)展片外程序存儲器擴(kuò)展數(shù)據(jù)存儲器且容量超過256B(用MOVX@DPTR指令)時,CPU發(fā)出控制電平“1”,使多路開關(guān)MUX倒內(nèi)部地址線。此時,P2輸出高8位地址。DQCLKQMUXP2.n讀鎖存器內(nèi)部總線寫鎖存器讀引腳地址控制VCCRTP2口引腳2023/11/15582.3.2P1口、P3口的內(nèi)部結(jié)構(gòu)
①P1口的一位的結(jié)構(gòu)它由一個輸出鎖存器、兩個三態(tài)輸入緩沖器和輸出驅(qū)動電路組成----準(zhǔn)雙向口。DQCLKQP1.n讀鎖存器內(nèi)部總線寫鎖存器讀引腳VCCRTP1口引腳注意在P1口作為通用的I/O口使用時,在從I/O端口讀入數(shù)據(jù)時,應(yīng)該首先向相應(yīng)的I/O口內(nèi)部鎖存器寫“1”。舉例:從P1口的低四位輸入數(shù)據(jù)MOVP1,#00001111b;先給P1口低四位寫1MOVA,P1;再讀P1口的低四位2023/11/1560②P3的內(nèi)部結(jié)構(gòu)DQCLKQP3.n讀鎖存器內(nèi)部總線寫鎖存器讀引腳VCCRTP3口引腳第二輸入功能第二輸出功能一、作為通用I/O口與P1口類似----準(zhǔn)雙向口(W=1)W2023/11/1561②P3的內(nèi)部結(jié)構(gòu)DQCLKQP3.n讀鎖存器內(nèi)部總線寫鎖存器讀引腳VCCRTP3口引腳第二輸入功能第二輸出功能二、P3第二功能(Q=1)此時引腳部分輸入(Q=1、W=1)
,部分輸出(Q=1、W輸出)
。W2023/11/1562P3第二功能各引腳功能定義(確保不用第二功能時,才可用作IO線,上電復(fù)位自動使鎖存器Q=1)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外部讀控制63/150
以目前市場上常見的8051內(nèi)核單片機(jī)STC15F2K60S2為例,說明單片機(jī)的內(nèi)部結(jié)構(gòu)。STC12C5A60S2單片機(jī)主要集成了以下資源:增強(qiáng)型8051內(nèi)核,單時鐘機(jī)器周期,速度比傳統(tǒng)8051內(nèi)核單片機(jī)快8~12倍60KBFlash程序存儲器;1KB數(shù)據(jù)Flash;2048字節(jié)的SRAM3個16位可自動重裝載的定時/計(jì)數(shù)器(T0、T1、T2)可編程時鐘輸出功能至多42根I/O口線2個全雙工異步串行口(UART)1個高速同步通信端口(SPI)8通道10位ADC3通道PWM/可編程計(jì)數(shù)器陣列/捕獲/比較單元內(nèi)部高可靠上電復(fù)位電路和硬件看門狗內(nèi)部集成高精度R/C時鐘,常溫工作時,可以省去外部晶振電路。增強(qiáng)型8051內(nèi)核單片機(jī)STC15F2K60S2
標(biāo)準(zhǔn)8051的一個機(jī)器周期是12個時鐘周期,而STC15F2K60S2是1個時鐘周期。因此,在同樣的外部時鐘頻率下執(zhí)行同樣的代碼,其指令執(zhí)行速度要比8051快8~12倍。這樣用戶可以在較低的外部時鐘頻率下運(yùn)行STC15F2K60S2。與標(biāo)準(zhǔn)8051內(nèi)核相比,不僅降低了系統(tǒng)噪聲和電源功耗,而且提高了處理能力。時鐘周期是單片機(jī)的晶振周期,如果你接入的單片機(jī)是12M晶振,你的時鐘周期就是1/12M
機(jī)器周期是單片機(jī)的基本操作周期。標(biāo)準(zhǔn)8051單片機(jī)的一個機(jī)器周期分為6個狀態(tài)(S1~S6),每個狀態(tài)由兩個脈沖組成(稱為兩相),前一個周期叫P1,后一個周期叫P2。
指令周期是運(yùn)行一條指令所需要的機(jī)器周期64/15065/150圖3-7STC15F2K60S2單片機(jī)的內(nèi)部結(jié)構(gòu)圖STC15F2K60S2單片機(jī)內(nèi)部結(jié)構(gòu)框圖66/150STC15F2K60S2單片機(jī)的內(nèi)部資源中央處理器(CPU)程序存儲器(Flash)數(shù)據(jù)存儲器(RAM)數(shù)據(jù)Flash存儲器定時/計(jì)數(shù)器I/O接口通用異步串行通信接口(UART)中斷系統(tǒng)SPI接口(串行外設(shè)接口)高速A/D轉(zhuǎn)換模塊PWM脈寬調(diào)制(或捕獲/比較單元)看門狗電路電源監(jiān)控片內(nèi)RC振蕩器等模塊幾乎包含了數(shù)據(jù)采集和控制中所需的所有單元模塊,
—————可稱得上一個片上系統(tǒng)(SOC)67/1501、CPU結(jié)構(gòu)單片機(jī)的中央處理器(CPU)由運(yùn)算器和控制器組成。(1)運(yùn)算器以8位算術(shù)/邏輯運(yùn)算部件ALU為核心,加上通過內(nèi)部總線而掛在其周圍的暫存器TMP1、TMP2、累加器ACC、寄存器B、程序狀態(tài)標(biāo)志寄存器PSW以及布爾處理機(jī)組成了整個運(yùn)算器的邏輯電路。68/150PSW中有些位的狀態(tài)是在指令執(zhí)行過程中自動形成的,有些位可以由用戶采用指令加以改變。PSW的各位定義如下所示:位號D7D6D5D4D3D2D1D0符號CYACF0RS1RS0OVF1P69/150其他標(biāo)志位與51相同,新增加F1F1(PSW.1):用戶標(biāo)志1。該位是由用戶定義的一個狀態(tài)標(biāo)志。與F0類似,可以用軟件來使它置“1”或清“0”,也可以由軟件測試F1控制程序的流向。位號D7D6D5D4D3D2D1D0符號CYACF0RS1RS0OVF1P70/150布爾處理機(jī)——是單片機(jī)CPU中運(yùn)算器的一個重要組成部分。功能:為用戶提供豐富的位操作功能,有相應(yīng)的指令系統(tǒng),硬件有自己的“累加器”(進(jìn)位位C,即CY),和自己的位尋址RAM和I/O空間,是一個獨(dú)立的位處理機(jī)。大部分位操作均圍繞著其累加器——進(jìn)位位C完成。對任何可直接尋址的位,布爾處理機(jī)可執(zhí)行置位、取反、轉(zhuǎn)移、位的讀寫等操作。在任何可尋址的位(或該位內(nèi)容取反)和進(jìn)位標(biāo)志C之間,可執(zhí)行邏輯與、或操作,其結(jié)果送回到進(jìn)位標(biāo)志C。71/150(2)控制器控制器是CPU的大腦中樞,包括定時控制邏輯、指令寄存器、譯碼器、地址指針DPTR及程序計(jì)數(shù)器PC、堆棧指針SP、RAM地址寄存器、16位地址緩沖器等。72/150堆棧主要用于保存臨時數(shù)據(jù)、局部變量、中斷或子程序的返回地址。STC15F2K60S2單片機(jī)的堆棧設(shè)在內(nèi)部RAM中,是一個按照“先進(jìn)后出”規(guī)律存放數(shù)據(jù)的區(qū)域。堆棧指針SP是一個8位寄存器,能自動加1或減1。當(dāng)數(shù)據(jù)壓入堆棧時,SP自動加1;數(shù)據(jù)從堆棧中彈出后,SP自動減1。復(fù)位后,寄存器默認(rèn)值為07H,堆棧區(qū)在08H開始的區(qū)域。用戶通常將堆棧區(qū)域用指令設(shè)置在內(nèi)部RAM的80H~FFH之間。51常設(shè)在30H~7FH之間。73/150數(shù)據(jù)指針DPTRSTC15F2K60S2單片機(jī)有兩個16位的數(shù)據(jù)指針DPRT0和DPTR1,這兩個數(shù)據(jù)指針共用同一個地址,可通過設(shè)置輔助寄存器AUXR1中的DPS(AUXR1.0)位來選擇具體使用哪一個數(shù)據(jù)指針。74/1502、存儲器的結(jié)構(gòu)—STC15F2K60S2結(jié)構(gòu)特點(diǎn):程序存儲器和數(shù)據(jù)存儲器的尋址空間是分開的。結(jié)構(gòu)劃分:片內(nèi)集成有4個物理上相互獨(dú)立的存儲器空間:程序Flash存儲器、數(shù)據(jù)Flash存儲器(EEPROM)、內(nèi)部數(shù)據(jù)存儲器和外部數(shù)據(jù)存儲器。75/150圖3-8STC15F2K60S2單片機(jī)存儲器配置示意圖76/150(1)程序Flash存儲器功能:存放用戶程序、數(shù)據(jù)和表格等信息。空間大?。篠TC15F2K60S2片內(nèi)集成了60KB的程序Flash存儲器,地址為0000H~F000H。單片機(jī)復(fù)位后,程序計(jì)數(shù)器PC的內(nèi)容為0000H,從0000H單元開始執(zhí)行程序。77/150特殊單元在程序Flash存儲器中有些特殊的單元,這些單元是中斷服務(wù)程序的入口地址:0003H外部中斷0中斷服務(wù)程序的入口地址000BH定時/計(jì)數(shù)器0中斷服務(wù)程序的入口地址0013H外部中斷1中斷服務(wù)程序的入口地址001BH定時/計(jì)數(shù)器1中斷服務(wù)程序的入口地址0023H串行通信口1中斷服務(wù)程序的入口地址002BHADC中斷服務(wù)程序的入口地址0033H低電壓檢測中斷服務(wù)程序的入口地址003BHPCA中斷服務(wù)程序的入口地址0043H串行通信口2中斷服務(wù)程序的入口地址004BHSPI中斷服務(wù)程序的入口地址78/150中斷服務(wù)程序的入口地址0053H外部中斷2中斷服務(wù)程序的入口地址005BH外部中斷3中斷服務(wù)程序的入口地址0063H定時/計(jì)數(shù)器2中斷服務(wù)程序的入口地址0083H外部中斷4中斷服務(wù)程序的入口地址響應(yīng)中斷時,單片機(jī)自動轉(zhuǎn)到相應(yīng)的中斷入口地址去執(zhí)行程序。由于大部分相鄰中斷入口地址之間只有8個地址單元,無法保存完整的中斷服務(wù)程序,一般在中斷入口的地址區(qū)存放一條無條件轉(zhuǎn)移指令,指向真正存放中斷服務(wù)程序的空間。中斷響應(yīng)后,CPU執(zhí)行這條轉(zhuǎn)移指令,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。79/150使用指令讀取程序存儲器中保存的表格常數(shù)等內(nèi)容時,使用MOVC指令。程序Flash存儲器的擦寫次數(shù)為10萬次以上,大大提高了芯片利用率,降低了開發(fā)成本。不能訪問外部存儲器,沒有相應(yīng)的總線。80/150(2)數(shù)據(jù)存儲器—STC15F2K60S2數(shù)據(jù)存儲器也稱為隨機(jī)存取數(shù)據(jù)存儲器??臻g劃分在物理上和邏輯上都分為兩個地址空間:內(nèi)部數(shù)據(jù)存儲區(qū)和擴(kuò)展數(shù)據(jù)存儲區(qū)。81/1501)內(nèi)部數(shù)據(jù)存儲區(qū)(又稱為內(nèi)部RAM)
256字節(jié)內(nèi)部RAM,存放中間結(jié)果和過程數(shù)據(jù)。內(nèi)部RAM的地址范圍是00H~FFH,共256個單元,分三部分:低128字節(jié)RAM(00H~7FH):也稱為基本RAM區(qū)?;綬AM區(qū)又分為工作寄存器區(qū)、位尋址區(qū)、用戶RAM和堆棧區(qū)??梢灾苯訉ぶ泛烷g接尋址。用“MOV”和“MOV@Ri”形式的指令訪問。高128字節(jié)RAM(80H~FFH):只能間接尋址。用“MOV@Ri”形式的指令訪問。特殊功能寄存器(SFR)區(qū):地址范圍為80H~FFH,只可直接尋址,用“MOV”形式的指令訪問。82/150圖3-9內(nèi)部數(shù)據(jù)存儲器地址空間工作寄存器區(qū)位尋址區(qū)通用用戶RAM和堆棧區(qū)特殊功能寄存器區(qū)內(nèi)部數(shù)據(jù)存儲器地址空間分配83/150工作寄存器區(qū)地址分配:00H~1FH共32個單元。分為四組。功能:通過使用工作寄存器,可以提高運(yùn)算速度,也可以使用其中的R0或R1存放八位地址值,訪問一個256字節(jié)外部RAM塊中的單元。另外,R0~R7也可以用作計(jì)數(shù)器,在指令作用下加1或減1。工作寄存器組的選擇與8051相同。84/150位尋址區(qū)20H~2FH之間的單元既可以按字節(jié)存取,也可以按位存取共128位,地址范圍是00H~7FH。圖3-10內(nèi)部RAM中的位地址85/150除了20H~2FH之間的單元可以位尋址外,特殊功能寄存器中,直接地址可被8整除的寄存器(除了IP.7、IP.6和IE.6以外)也可以進(jìn)行位尋址。圖3-11特殊功能寄存器中的位地址86/150用戶RAM和堆棧區(qū)內(nèi)部RAM中的30H~7FH單元是用戶RAM和堆棧區(qū)。一個8位的堆棧指針SP,并且堆棧區(qū)只能設(shè)置在內(nèi)部數(shù)據(jù)存儲區(qū)。當(dāng)有子程序調(diào)用和中斷請求時,返回地址等信息被自動保存在堆棧內(nèi)。STC15F2K60S2單片機(jī)復(fù)位后,SP為07H,使堆棧事實(shí)上由08H單元開始,考慮08H~1FH單元分別屬于工作寄存器組1~3,若在程序設(shè)計(jì)中用到這些工作寄存器,則在用戶初始化程序中,最好把SP的值改變?yōu)?0H或更大的值。STC15F2K60S2單片機(jī)的堆棧是朝著地址增大的方向生成的,即將數(shù)據(jù)壓入堆棧后,SP的值增大。87/150高128字節(jié)RAM和特殊功能寄存器對于STC15F2K60S2單片機(jī),80H~FFH既為高128字節(jié)RAM區(qū)的地址范圍,又為特殊功能寄存器區(qū)(SFR)的地址范圍,地址空間重疊,但物理上是獨(dú)立的。使用時,通過不同的尋址方式加以區(qū)分:高128字節(jié)的RAM區(qū)使用間接尋址訪問,特殊功能寄存器使用直接尋址訪問。由于堆棧操作也是間接尋址方式,所以,高128位數(shù)據(jù)RAM亦可作為堆棧區(qū)使用。88/150除了程序計(jì)數(shù)器PC和4個工作寄存器組外,其余的寄存器都在SFR區(qū)中。特殊功能寄存器大體分為兩類
①一類與芯片的引腳有關(guān)。如P0~P5,它們實(shí)際上是6個鎖存器,每個鎖存器附加上相應(yīng)的輸出驅(qū)動器和輸入緩沖器就構(gòu)成了一個并行口。②另一類為芯片內(nèi)部功能的控制或者內(nèi)部寄存器。如中斷屏蔽及優(yōu)先級控制、定時器、串行口、SPI接口等。STC15F2K60S2單片機(jī)的特殊功能寄存器及其復(fù)位值如表3-2所列(P47)。89/1502)擴(kuò)展數(shù)據(jù)存儲區(qū)外部數(shù)據(jù)存儲區(qū)也稱為擴(kuò)展RAM區(qū)(簡稱,XRAM)。片內(nèi)集成了1792字節(jié)的外部RAM,地址范圍為0000H~06FFH,可用于存放數(shù)據(jù)。注意,這里的“內(nèi)部”和“外部”是邏輯上的概念,不是指芯片內(nèi)部和外部。在匯編語言中,XRAM使用“MOVX@DPTR”
或者“MOVX@Ri”指令訪問。在C語言中,可使用xdata聲明存儲類型即可。如:unsignedcharxdatai=0;90/150訪問片內(nèi)集成的外部RAM時,不影響P0口、P2口、P4.2、P4.4和ALE(地址數(shù)據(jù)、讀寫、鎖存)。STC15F2K60S2單片機(jī)還可以訪問片外擴(kuò)展的64KB外部數(shù)據(jù)存儲器。STC15F2K60S2單片機(jī)的外部擴(kuò)展I/O端口與擴(kuò)展數(shù)據(jù)存儲器統(tǒng)一編址,因此外部I/O端口的地址占用擴(kuò)展數(shù)據(jù)存儲器的地址單元,用MOVX指令訪問。91/150單片機(jī)內(nèi)部擴(kuò)展RAM是否可以訪問,受輔助寄存器AUXR(地址為8EH,復(fù)位值為01H)中的EXTRAM位控制。EXTRAM:0:內(nèi)部擴(kuò)展RAM可以存?。坏刂沸∮?00H時,訪問內(nèi)部擴(kuò)展RAM;地址大于或等于700H時,則訪問單片機(jī)外部擴(kuò)展的RAM或I/O空間。1:禁止訪問內(nèi)部擴(kuò)展RAM。位號D7D6D5D4D3D2D1D0位名稱T0x12T1x12UART_M0x6T2RT2_C/T2x12EXTRAMS1ST292/150(3)數(shù)據(jù)Flash存儲器空間大小:集成了1K字節(jié)的數(shù)據(jù)Flash存儲器,與程序空間是分開的地址范圍:0000H~03FFH。這1K字節(jié)的數(shù)據(jù)Flash存儲器分為2個扇區(qū),每個扇區(qū)包含512字節(jié),對應(yīng)的地址范圍分別為:第一扇區(qū):0000H~01FFH第二扇區(qū):0200H~03FFH93/150使用方法:建議同一次修改的數(shù)據(jù)放在同一個扇區(qū),不是同一次修改的數(shù)據(jù)放在不同的扇區(qū),不一定用滿。數(shù)據(jù)Flash存儲器的擦除操作是按扇區(qū)進(jìn)行的。數(shù)據(jù)Flash存儲器可以作為EEPROM使用,擦寫次數(shù)在10萬次以上,用于保存一些需要在應(yīng)用過程中修改并且掉電不丟失的參數(shù)數(shù)據(jù)。在用戶程中,可以對數(shù)據(jù)Flash區(qū)進(jìn)行字節(jié)讀/字節(jié)編程/扇區(qū)擦除操作。需使用相關(guān)特殊功能寄存器,見P50-P5294/1503.2.2單片機(jī)的引腳及功能1、STC15F2K60S2單片機(jī)的引腳封裝LQFP-44封裝圖3-12STC15F2K60S2單片機(jī)的引腳圖95/150DIP-40封裝圖3-12STC15F2K60S2單片機(jī)的引腳圖96/150STC15F2K60S2單片機(jī)的邏輯符號圖圖3-13STC15F2K60S2單片機(jī)的邏輯符號圖97/150DIP-40封裝的STC15F2K60S2單片機(jī)和LQFP-44封裝相比,除了沒有P4.0、P4.3、P4.6、P4.7引腳外,其他資源完全相同。由于DIP封裝的單片機(jī)焊接比較容易,因此,對于初學(xué)者,最好選用DIP封裝的單片機(jī)進(jìn)行學(xué)習(xí)。注意:在實(shí)際應(yīng)用中,設(shè)計(jì)單片機(jī)應(yīng)用系統(tǒng)的原理圖時,一般應(yīng)使用邏輯符號圖,以便進(jìn)行電路分析,而設(shè)計(jì)應(yīng)用系統(tǒng)的印刷電路板圖時,必須使用單片機(jī)的引腳圖。98/150控制和復(fù)位引腳ALE(與P4.5復(fù)用)功能:當(dāng)訪問外部存儲器或者外部擴(kuò)展的并行I/O口時,ALE(允許地址鎖存)的輸出用于鎖存地址的低位字節(jié)。標(biāo)準(zhǔn)8051單片機(jī)的ALE腳對系統(tǒng)時鐘進(jìn)行6分頻輸出,可對外提供時鐘。但時鐘頻率較高時,ALE腳是一個干擾源。STC15F2K60S2單片機(jī)直接禁止ALE腳對系統(tǒng)時鐘進(jìn)行6分頻輸出,徹底清除此干擾源,有利于系統(tǒng)的抗干擾設(shè)計(jì)。99/150RST(與P5.4復(fù)用)當(dāng)振蕩器運(yùn)行時,在此引腳上出現(xiàn)兩個機(jī)器周期的高電平將使單片機(jī)復(fù)位。如果需要單片機(jī)接上電源就可以復(fù)位,則需要使用上電復(fù)位電路。出廠默認(rèn)為IO口圖3-15上電復(fù)位電路圖100/150輸入/輸出(I/O)引腳STC12C5A60S2單片機(jī)最多可以有44根I/O口線,44根I/O口線分別為:P0口(8根):P0.0~P0.7P1口(8根):P1.0~P1.7P2口(8根):P2.0~P2.7P3口(8根):P3.0~P3.7P4口(8根):P4.0~P4.7P5口(2根):P5.4、P5.5。101/1501)I/O口的工作模式4種工作模式:準(zhǔn)雙向口/弱上拉,推挽/強(qiáng)上拉,輸入/高阻和開漏模式。復(fù)位后為準(zhǔn)雙向口/弱上拉工作模式。每個口的工作模式由2個控制寄存器中的相應(yīng)位控制(PnM0和PnM1,n=0、1、2、3、4、5)。102/150例如,P0M0和P0M1用于設(shè)定P0口的工作模式,其中P0M0.7和P0M1.7用于設(shè)置P0.7的工作模式,P0M0.6和P0M1.6用于設(shè)置P0.6的工作模式,以此類推。PnM1[7:0]PnM0[7:0]I/O口模式00準(zhǔn)雙向口(傳統(tǒng)8051單片機(jī)I/O口模式),灌電流可達(dá)20mA,拉電流為270μA,由于制造誤差,實(shí)際為270uA~150uA01推挽輸入輸出(強(qiáng)上拉輸出,可達(dá)20mA,要加限流電阻,盡量少用)10僅為輸入(高阻)11開漏(OpenDrain),內(nèi)部上拉電阻斷開,要外加上拉電阻表3-5I/O口工作模式設(shè)置103/150例如,若設(shè)置P1.7為開漏模式,P1.6為強(qiáng)推挽輸入輸出模式,P1.5為高阻輸入模式,P1.4、P1.3、P1.2、P1.1和P1.0為弱上拉模式,則可以使用下面的代碼進(jìn)行設(shè)置:
MOVP1M1,#10100000BMOVP1M0,#11000000B104/150STC15F2K60S2單片機(jī)的每個I/O口在弱上拉時都能承受20mA的灌電流(最好還是使用限流電阻,如1KΩ)在強(qiáng)推挽輸出時都能輸出20mA的拉電流(也要加限流電阻)。整個芯片的工作電流推薦不要超過90mA。即從MCU-Vcc流入的電流不超過90mA,從MCU-GND流出的電流不超過90mA,整體流入/流出電流都不能超過90mA。105/1502)I/O口的復(fù)用功能P0口用作數(shù)據(jù)總線(D7~D0)或者地址總線低8位(A7~A0)。用作普通I/O。P1口用作普通I/O。復(fù)用為ADC轉(zhuǎn)換輸入、捕獲/比較/脈寬調(diào)制、SPI通信線、第二串口或者第二時鐘輸出,如表所示。106/150表3-6P1口的復(fù)用功能引腳復(fù)用功能P1.0ADC0/CCP1(捕獲/比較/脈寬調(diào)制通道1)/RxD2(串口2輸入)P1.1ADC1/CCP0(捕獲/比較/脈寬調(diào)制通道0)/TxD2(串口2輸出)P1.2ADC2/ECI(可編程計(jì)數(shù)器陣列定時器的外部時鐘輸入)/SS(SPI從器件選擇)P1.3ADC3/MOSI(SPI主機(jī)輸出從機(jī)輸入)P1.4ADC4/MISO(SPI主機(jī)輸入從機(jī)輸出)P1.5ADC5/SCLK(SPI時鐘)P1.6ADC6/XTAL2(外接晶體引腳)/RxD_3(串口1輸入備用切換引腳)P1.7ADC7/XTAL1(外接晶體引腳)/TxD_3(串口1輸出備用切換引腳)107/150P2口用作地址總線的高8位輸出。用作通用I/O口使用。用于SPI和捕獲/比較/脈寬調(diào)制的備用切換端口引腳復(fù)用功能P2.0A8/RSTOUT_LOW(復(fù)位后輸出低電平引腳)P2.1A9/SCLK_2(SPI時鐘備用切換引腳)P2.2A10/MISO_2(SPI主機(jī)輸入從機(jī)輸出備用切換引腳)P2.3A11/MOSI_2(SPI主機(jī)輸出從機(jī)輸入備用切換引腳)P2.4A12//ECI_3(可編程計(jì)數(shù)器陣列定時器的外部時鐘輸入備用切換引腳)/SS_2(SPI從器件選擇備用切換引腳)P2.5A13/CCP0_3(捕獲/比較/脈寬調(diào)制通道0備用切換引腳)P2.6A14/CCP1_3(捕獲/比較/脈寬調(diào)制通道1備用切換引腳)P2.7A15/CCP2_3(捕獲/比較/脈寬調(diào)制通道2備用切換引腳)表3-7P2口的復(fù)用功能108/150P3口用作通用I/O口使用??蓮?fù)用為外部中斷輸入、計(jì)數(shù)器輸入、時鐘輸出、第一串口和外部總線的讀/寫控制,如表所示。109/150表3-8P3口的復(fù)用功能端口引腳復(fù)用功能P3.0RXD(串口1輸入)//INT4(外部中斷4,只能下降沿中斷)/T2CLKO(T2的時鐘輸出)P3.1TXD(串口1輸出)/T2CLKO(T2的外部輸入)P3.2/INT0(外部中斷0輸入,既可上升沿中斷也可下降沿中斷)P3.3/INT1(外部中斷1輸入,既可上升沿中斷也可下降沿中斷)P3.4T0(定時器0外部輸入)/T1CLKOU(T1時鐘輸出)/ECI_2(可編程計(jì)數(shù)器陣列定時器的外部時鐘輸入備用切換引腳)P3.5T1(定時器1外部輸入)/T0CLKOU(T0時鐘輸出)/CCP0_32(捕獲/比較/脈寬調(diào)制通道0備用切換引腳)P3.6/INT2(外部中斷2輸入,只能下降沿中斷)/RxD_2(串口1輸入備用切換引腳)/CCP1_2(捕獲/比較/脈寬調(diào)制通道1備用切換引腳)P3.7/INT3(外部中斷3輸入,只能下降沿中斷)/TxD_2(串口1輸出備用切換引腳)/CCP2(捕獲/比較/脈寬調(diào)制通道2)/CCP2_2(捕獲/比較/脈寬調(diào)制通道2備用切換引腳)110/150P4口作通用I/O口使用。某些口線具有復(fù)用功能,可配置為SPI通信線、捕捉/比較/脈寬調(diào)制、第二串口線等。表3-9P4口的復(fù)用功能端口引腳復(fù)用功能P4.0MOSI_3(SPI主輸出從輸入備用切換引腳)P4.1MISO_3(SPI主輸入從輸出備用切換引腳)P4.2
(外部總線寫控制信號)P4.3SCLK_3(SPI時鐘備用切換引腳)P4.4
(外部總線讀控制信號)P4.5ALE(地址鎖存控制信號,主要用于外部總線擴(kuò)展)P4.6RxD2_2(第二串口輸入備用切換引腳)P4.7TxD2_2(第二串口輸出備用切換引腳)111/150P5口P5.4/RST(復(fù)位腳)/MCLKO(內(nèi)部R/C振蕩時鐘輸出;輸出的頻率可為MCLK/1或MCLK/2)/SS_3(SPI接口的從機(jī)選擇信號備用切換引腳)。該引腳默認(rèn)為I/O口,可以通過ISP編程將其設(shè)置為RST(復(fù)位)引腳。P5.5沒有復(fù)用功能。112/1503)STC15F2K60S2單片機(jī)I/O口的結(jié)構(gòu)準(zhǔn)雙向口工作模式的結(jié)構(gòu)圖3-16準(zhǔn)雙向口工作模式的I/O位結(jié)構(gòu)113/150作為一個準(zhǔn)雙向口使用時,輸入數(shù)據(jù)時,應(yīng)先向口寫1,使T4截止,然后方可作高阻抗輸入。這是準(zhǔn)雙向口的主要特點(diǎn)。114/150推挽輸入輸出工作模式的結(jié)構(gòu)圖3-17推挽輸入輸出工作模式的I/O位結(jié)構(gòu)115/150推挽輸入輸出工作模式的下拉結(jié)構(gòu)與準(zhǔn)雙向口的下拉結(jié)構(gòu)相同,但當(dāng)鎖存器為“1”時可提供持續(xù)的強(qiáng)上拉。推挽工作模式一般用于需要更大驅(qū)動電流的情況。工作于推挽輸入輸出模式時,一個I/O位也帶有一個施密特觸發(fā)輸入以及一個干擾抑制電路。此時,若輸出高電平,拉電流最大可達(dá)20mA;若輸出低電平,灌電流也可達(dá)20mA。116/150僅為輸入(高阻)工作模式的結(jié)構(gòu)輸入口帶有一個施密特觸發(fā)輸入以及一個干擾抑制電路。注意,僅為輸入(高阻)工作模式下,I/O口不提供20mA灌電流的能力。圖3-18僅為輸入(高阻)工作模式的I/O位結(jié)構(gòu)
117/150開漏輸出工作模式的結(jié)構(gòu)圖3-19開漏輸出工作模式的I/O位結(jié)構(gòu)118/150當(dāng)口線鎖存器為0時,開漏輸出關(guān)斷所有上拉場效應(yīng)管。當(dāng)作為一個邏輯輸出時,這種配置方式必須有外部上拉電阻,即通過電阻外接到Vcc。這種方式的下拉結(jié)構(gòu)與準(zhǔn)雙向口模式的下拉結(jié)構(gòu)相同。開漏端口帶有一個施密特觸發(fā)輸入以及一個干擾抑制電路。這種工作模式下,輸出低電平時,灌電流也可達(dá)20mA。119/1501、P4口和P5口的使用對STC15F2K60S2單片機(jī)P4口和P5口的訪問,如同訪問常規(guī)的P0/P1/P2/P3口一樣,并且均可按位尋址,P4的地址C0H,P5口的地址在C8H?!?.3單片機(jī)的I/O口的使用120/1502、上拉電阻的連接雖然作為準(zhǔn)雙向口使用時,單片機(jī)內(nèi)部已經(jīng)集成了上拉場效應(yīng)管,但在實(shí)際應(yīng)用時,一般情況下,最好還是外接上拉電阻。例如,當(dāng)外接的是SPI/I2C等漏極開漏的電路時。121/150以P0.0為例,接上拉電阻的電路連接如圖所示。典型的上拉電阻的阻值為5.1K
或者10K
。圖3-20上拉電阻的連接方法122/1503、拉電流方式和灌電流方式STC15F2K60S2單片機(jī)的I/O口線作為輸出可以提供20mA的驅(qū)動能力,在使用時,可采用拉電流或灌電流方式。以P0.0控制發(fā)光二極管電路為例說明,電路連接如圖所示。圖3-21拉電流方式和灌電流方式123/150采用灌電流方式時,應(yīng)將單片機(jī)的I/O口設(shè)置為弱上拉/準(zhǔn)雙向口工作模式;采用拉電流方式時,應(yīng)將單片機(jī)的I/O口設(shè)置為推挽/強(qiáng)上拉工作模式。在實(shí)際使用時,應(yīng)盡量采用灌電流方式,這樣可以提高系統(tǒng)的負(fù)載能力和可靠性。有特別需要時,可以采取拉電流方式,如供電線路要求比較簡單時。124/150使用時應(yīng)該特別注意圖中的限流電阻千萬不能省略,否則,會毀壞I/O口。在按鍵掃描電路中的兩側(cè)需要各加300
的限流電阻,或者在編程時不要出現(xiàn)按鍵兩端的I/O口同時為低的情況。125/1504、典型的三極管控制電路單片機(jī)I/O引腳本身的驅(qū)動能力有限,如果需要驅(qū)動功率較大的器件,如小型繼電器或者固態(tài)繼電器,可以采用單片機(jī)I/O引腳控制三極管進(jìn)行輸出的方法。以P0.0為例。圖3-22典型的三極管控制電路126/150如果用弱上拉控制,建議加上拉電阻R1(3.3K
~10K
);如果不加上拉電阻R1,建議R2的值在15K
以上,或用強(qiáng)推挽輸出。當(dāng)需要驅(qū)動的功率器件較多時,建議采用ULN2008,其內(nèi)部采用達(dá)林頓結(jié)構(gòu),是專門用來驅(qū)動繼電器的芯片,甚至在芯片內(nèi)部做了一個消去線圈反電動勢的二極管。ULN2008的輸出端允許通過IC電流200mA,飽和壓降VCE約為1V左右,耐壓BVCEO約為36V。輸出口的外接負(fù)載可根據(jù)以上參數(shù)估算。采用集電極開路輸出,輸出電流大,可以直接驅(qū)動繼電器或固體繼電器(SSR)。ULN2008可以驅(qū)動8個繼電器。127/1505、I/O外部狀態(tài)的輸入存在問題:當(dāng)I/O口工作于準(zhǔn)雙向口時,由于STC15F2K60S2單片機(jī)是1個時鐘周期(1T)的8051單片機(jī),速度很快,如果通過指令執(zhí)行由低變高指令后立即讀外部狀態(tài),此時由于實(shí)際輸出還沒有變高,有時可能讀入的狀態(tài)不對。解決方法:在軟件設(shè)置由低變高后加1到2個空操作指令延時,然后再讀I/O口的狀態(tài)。128/1506、P1.7/XTAL1與P1.6/XTAL2的特別說明STC15F2K60S2系列單片機(jī)的所有I/O口上電復(fù)位后均為準(zhǔn)雙向口/弱上拉模式。但是由于P1.7和P1.6口還可以分別作外部晶體或時鐘電路的引腳XTAL1和XTAL2,所以P1.7/XTAL1和P1.6/XTAL2上電復(fù)位后的模式不一定就是準(zhǔn)雙向口/弱上拉模式。當(dāng)P1.7和P1.6口作為外部晶體或時鐘電路的引腳XTAL1和XTAL2使用時,P1.7/XTAL1和P1.6/XTAL2上電復(fù)位后的模式是高阻輸入。129/150每次上電復(fù)位時,單片機(jī)對P1.7/XTAL1和P1.6/XTAL2的工作模式按如下步驟進(jìn)行設(shè)置首先,單片機(jī)短時間(幾十個時鐘)會將P1.7/XTAL1和P1.6/XTAL2設(shè)置成高阻輸入;然后,單片機(jī)會自動判斷上一次用戶是將P1.7/XTAL1和P1.6/XTAL2設(shè)置成普通I/O口還是XTAL1/XTAL2;如果上一次用戶是將P1.7/XTAL1和P1.6/XTAL2設(shè)置成普通I/O口,則單片機(jī)會將P1.7/XTAL1和P1.6/XTAL2上電復(fù)位后的模式設(shè)置成準(zhǔn)雙向口/弱上拉;如果上一次用戶是將P1.7/XTAL1和P1.6/XTAL2設(shè)置成XTAL1/XTAL2,則單片機(jī)會將P1.7/XTAL1和P1.6/XTAL2上電復(fù)位后的模式設(shè)置成高阻輸入。130/1507、管腳P5.4/RST的特別說明P5.4/RST即可作普通I/O使用,也可作復(fù)位管腳。當(dāng)用戶將P5.4/RST設(shè)置成普通I/O口用時,其上電后為準(zhǔn)雙向口/弱上拉模式。每次上電時,單片機(jī)會自動判斷上一次用戶是將P5.4/RST設(shè)置成普通I/O口還是復(fù)位腳。如果上一次用戶是將P5.4/RST設(shè)置成普通I/O口,則單片機(jī)會將P5.4/RST上電后的模式設(shè)置成準(zhǔn)雙向口/弱上拉。如果上一次用戶是將P5.4/RST設(shè)置成復(fù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 加盟連鎖項(xiàng)目服務(wù)合同范本
- 農(nóng)村小區(qū)搬遷合同范本
- 中學(xué)食堂承包團(tuán)隊(duì)合同范本
- 人力股分紅合同范例
- 個人技術(shù)投資合同范本
- 制造模具合同范本
- 中建施工員合同范本
- 中藥原料采購合同范本
- 不需交社保員工合同范本
- 傳媒公司培訓(xùn)合同范例
- 植物抗逆性育種和遺傳改良
- GB/T 44122-2024工業(yè)互聯(lián)網(wǎng)平臺工業(yè)機(jī)理模型開發(fā)指南
- DL-T-5759-2017配電系統(tǒng)電氣裝置安裝工程施工及驗(yàn)收規(guī)范
- 城市更新模式探討
- 2024年江蘇農(nóng)林職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫含答案
- 現(xiàn)代通信技術(shù)導(dǎo)論智慧樹知到期末考試答案章節(jié)答案2024年北京科技大學(xué)
- SY∕T 7087-2016 石油天然氣工業(yè) 鉆井和采油設(shè)備 液氮泵送設(shè)備
- 1.1時代為我搭舞臺(課件)-【中職專用】中職思想政治《心理健康與職業(yè)生涯》(高教版2023·基礎(chǔ)模塊)
- 下肢靜脈曲張危險(xiǎn)因素
- 小學(xué)思政課活動實(shí)施方案
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案解析
評論
0/150
提交評論