第2章 51單片機的基本結構_第1頁
第2章 51單片機的基本結構_第2頁
第2章 51單片機的基本結構_第3頁
第2章 51單片機的基本結構_第4頁
第2章 51單片機的基本結構_第5頁
已閱讀5頁,還剩107頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第2章51單片機的基本結構80C51系列單片機的基本結構2.180C51單片機基本組成與內部結構2.2

80C51單片機的引腳功能2.380C51單片機的存儲器的配置2.480C51單片機的并行輸入/輸出端口2.580C51單片機的CPU時序80C51系列單片機芯片型號及制造工藝型號片內ROM片內RAMI/O口線備注80C31無128B+SFR8×4DIP40腳80C51掩膜4KB128B+SFR8×4DIP40腳87C51EPROM4KB128B+SFR8×4DIP40腳89C51FLASH4KB128B+SFR8×4DIP40腳89C2051FLASH2KB128B+SFR15簡化DIP20腳8XC5528K256B+SFR8×6增強多功能型返回80C51單片機內部基本組成

時鐘電路4KROM程序存儲器RAM數據存儲器2X16位定時/計數器CPU處理器中斷系統(tǒng)可編程并行I/O端口P0-3可編程串行口TXDRXDT0T1P0P1P2P3內部總線/INT0/INT180C51單片機的各個模塊的基本功能CPU:運算器+控制器內部程序存儲器ROM:4KB的存儲容量;內部數據存儲器RAM:256B(128B的RAM+128B的SFR)設4個寄存器區(qū),每個區(qū)有R0~R7八個工作寄存器;4個8位并行輸入/輸出端口:P0、P1、P2和P3;定時/計數器:2個16位的定時/計數器;串型口:全雙工的端口(RXD:接收端,TXD發(fā)送端);中斷系統(tǒng):設有5個中斷源;堆棧:設在RAM單元中,區(qū)域可以浮動,堆棧指針SP確定堆棧的位置(復位時SP=07H);布爾處理機:配合布爾運算(位運算)指令進行邏輯運算;指令系統(tǒng):111條指令。按功能可分為5大類。 數據傳送; 算術運算; 邏輯運算; 控制轉移; 布爾操作;CPU:運算器+控制器1運算器功能:算術和邏輯運算組成:ALU,ACC,TMP,B,PSWCPU:運算器+控制器2控制器(1)功能: 對指令譯碼; 通過定時和控制電路,發(fā)出內、外部控制信號,協(xié)調各功能模塊之間的工作。CPU:運算器+控制器(2)控制器組成: 程序計數器PC,指令寄存器,指令譯碼器,數據指針DPTR,堆棧指針SP、定時控制邏輯等 程序計數器PC:存放下一條將要執(zhí)行的指令代碼所在ROM單元的地址,長度16位。 自動増量功能 指令譯碼器:對指令譯碼 數據指針DPTR:對片外RAM+I/O端口尋址的指針,長度為16位。 堆棧指針SP:初始化時指示堆棧的起始地址;向上生長型堆棧-入棧后,SP增量51單片機外型圖(DIP封裝)51單片機的邏輯符號圖VCCRSTXTAL1

P0口XTAL2/EA/PSENALE

P1口RXDTXD/INT0/INT1P2口T0T1P3口/WR/RDGND87C51EPROM型AT89C51ATMELFLASH型2.280C51單片機的引腳功能1,電源引腳:Vcc(+5V---40腳)和Vss(GND20腳);2,外接晶體引腳:XTAL1(19腳)、XTAL2(18腳)

引腳圖引腳功能介紹51內部有一個高增益反相放大器,與外接石英晶體(或陶瓷諧振器)一起構成穩(wěn)定的自激震蕩器(見A),單片機的工作頻率取決于石英晶體的固有諧振頻率。如果使用外部震蕩器信號,其外來的時鐘脈沖信號加在XTAL1的引腳上(CMOS型,見B)。XTAL2XTAL1NC外時鐘B使用外部時鐘時的電路連接(CMOC型51)XTAL1XTAL230P30P返回A使用單片機內部震蕩電路連接3,控制線(4條):功能、引腳方向、有效電平(及持續(xù)時間)

RST/Vpd(第9腳):

①RST

單片機復位輸入端,高電平有效。 通過在該引腳上施加持續(xù)2個機器周期以上的高電平,使系統(tǒng)達到復位的目的。 為了使單片機系統(tǒng)可靠復位,需要外加復位電路(如圖)。復位狀態(tài)下: SFR的內容全變?yōu)椤?”, RAM內容不變。 并行端口輸出“1”。

51RSTVcctVT上電自動復位電路RCRST端上電電壓曲線

VCC51RSTVcc具有上電自動復位/按鍵手動復位功能復位電路RST/Vpd(第9腳):②Vpd

備用電壓輸入端。當單片機的主電源因故障而下降到某一個臨界值時,RST/VPD上的電源可自動與片內RAM連接以確保RAM內的信息不丟失。

ALE/PROG(第30腳):

①當單片機訪問外部存儲器時,輸出地址鎖存信號。用以鎖存P0口送出的低八位地址(P0口的數據/地址分時復用)不訪問外部存儲器時,以系統(tǒng)時鐘fosc/6的頻率周期性輸出正脈沖。 ②對于EPROM型的單片機,此腳用于燒寫程序(編程)時,輸入編程脈沖。

/PSEN(29腳):

外部程序程序存儲器的讀選通信號。 當單片機使用外部程序存儲器ROM時,此腳在一個機器周期內產生兩次負脈沖。 注意:訪問內部ROM或外部RAM時,不產生此信號。

/EA/Vpp(31腳):

① /EA-訪問外部程序存儲器的控制信號,輸入;

只使用外部的程序存儲器(內部無ROM或內部有ROM不用)將/EA=“0”電平,外部程序存儲器編址從0000H單元開始。 只有內部的程序存儲器將/EA=“1”電平 既使用內部程序存儲器(4K字節(jié))又使用外部程序存儲器:將/EA=“1”電平先使用單片機內部的程序存儲器,地址為0000H-0FFFH;當程序計數器PC的值超過0FFFH(4K)時,單片機將自動轉向外部程序存儲器,外部程序存儲器編址從1000H單元開始。

②Vpp-對于EPROM型的單片機,此腳用于寫程序時,加入21伏的編程電壓。4,并行輸入/輸出端口引腳(P0-P3)P0.0-P0.7P0端口線(39-32腳):

①8位漏極開路型準雙向并行I/O端口, 輸出能力最強,可以驅動8個LSTTL門電路-吸收電流方式。

②如果系統(tǒng)使用外接存儲器,該口作為低八位地址/數據的復用總線。 此種情況下,P0口不再作I/O端口。P2.0–P2.7P2端口線(21–28腳):

①帶有內部上拉電阻的8位準雙向并行I/O端口; 負載能力為4個LSTTL門電路

②當系統(tǒng)使用外接存儲器時,該口作為高八位地址總線。 在這種情況下,P2口不再作I/O端口。P1.0-P1.7P1端口線(1–8腳):

帶有內部上拉電阻的8位準雙向并行I/O端口, 負載能力為4個LSTTL門電路。P3.0–P3.7P3端口線(10–17腳):

①帶有內部上拉電阻的8位準雙向并行I/O端口;

負載能力為4個LSTTL門電路。

②具有第二功能??诰€定義說明口線定義說明P3.0RXD串行數據輸入口P3.4T0計數器0外部輸入信號P3.1TXD串行數據輸出口P3.5T1計數器1外部輸入信號P3.2INT0外部中斷0輸入口P3.6/WR外部數據存儲器寫信號P3.3INT1外部中斷1輸入口P3.7/RD外部數據存儲器讀信號P3口第二功能表返回/PSEN/WR

/RD

P2口80C51

P0口

ALED7Q7∶∶D0Q0/CP/WR/RDA15∶∶A8

64K

A7RAMD0∶∶A0D7/OEA15∶∶A8

64KA7ROMD0∶∶A0D7A7…A0A15…A8D0…D780C51單片機片外并行擴展時的三總線提供2.380C51單片機的存儲器的配置2.3.080C51單片機的存儲器的配置特點2.3.1程序存儲器ROM(片內與片外)2.3.2內部數據存儲器RAM2.3.3外部數據存儲器RAM2.3.080C51單片機的存儲器的配置特點物理分區(qū) 四個存儲空間: 片內ROM、RAM 片外ROM、RAM

內部集成 --4K的程序存儲器(ROM) --256B的數據存儲器(RAM)片外擴展 --64K的程序存儲器 --64K的數據存儲器單片機系統(tǒng)的存儲器結構圖-物理結構

(四個部分)

51單片機片內ROM4K片內RAM256B片外RAM64K片外ROM64K000HFFFH0000HFFFFH0FFFH1000H邏輯分區(qū)(用戶編程的角度) 三個存儲空間:片內RAM,片外RAM和ROM。掌握80C51單片機的存儲器邏輯分區(qū):片內RAM功能分區(qū)、

各邏輯空間的尋址方式、訪問指令 是80C51單片機編程的關鍵。

單片機系統(tǒng)的存儲器結構圖-邏輯空間2.3.1程序存儲器ROM(片內與片外)程序存儲器功能:存放編好的程序、常數表格。尋址范圍:0000H-FFFFH尋址指針:PC,DPTR程序存儲器的訪問:1程序指令的自主操作:PC2表格的查表操作: MOVC指令:使用的指針DPTR、PC系統(tǒng)只使用片外的ROM:/EA=0

片外ROM編址從0000H開始系統(tǒng)只使用片內的4KROM來存儲程序:/EA=1內部帶有ROM的51芯片,如果要使用片內ROM,且在片外擴展部分ROM:/EA=1

先使用單片機內部的程序存儲器:地址為0000H-0FFFH;程序計數器PC的值超過0FFFH(4K):單片機將自動轉向外部程序存儲器,且從片外ROM的1000H單元開始執(zhí)行程序。注意:片外擴展ROM的編址應從1000H開始。程序存儲器六個特殊的單元在程序存儲器中,有六個單元具有特定功能。編程者不能隨便使用。0000H單元:上電復位時,程序計數器PC所指向的單元0003H單元:/INT0外部中斷0的入口地址;000BH單元:定時器T0溢出中斷的入口地址;0013H單元:/INT1外部中斷1的入口地址;001BH單元:定時器T1溢出中斷的入口地址;0023H單元:串行口接收、發(fā)送中斷的入口地址;返回程序框架格式

ORG0000H LJMPMAIN ORG0023H LJMPSERV_S ORG0100HMAIN:MOVSP,#60H …… ……SER_S:CLREA CLRRI …… RETI0100HSER_INT0SER_T0SER_S0000H0003H000BH0013H001BH0023HLJMP0100H…LJMPSER_INT0…LJMPSER_T0…LJMPSER_INT1…LJMPSER_T1…LJMPSER_S…MOVSP,#60H……什么是中斷入口地址?符號地址2.3.2內部數據存儲器RAM數據存儲器無論在物理上還是邏輯上都分為兩個地址空間:內部的數據存儲空間 外部的數據存儲空間訪問內部數據存儲器單元時:MOV

指令;

訪問外部數據存儲器單元時:MOVX指令。51單片機片內、片外數據存儲器示意圖

特殊功能寄存器SFR通用數據存儲器80H7FH00HFFH片內數據存儲器片外數據存儲器256B64KB片外數據存儲器64KB0000HFFFFH注意:1,訪問片內RAM20H存儲單元;MOVA,20H2,訪問片外RAM存儲單元;MOVR0,#20hMOVXA,@R03,盡管片內與片外的RAM單元的00H-FFH地址相重疊但由于指令的不同不會發(fā)生地址混亂。內部數據存儲器RAM分塊內部數據存儲器空間256B,從功能上分為二個不同的塊:1低128B的RAM塊:

工作寄存器區(qū)、位尋址區(qū)、通用數據存儲區(qū)2高128B的SFR(SpecialFunctionRegister)高128B的SFR區(qū)中僅僅使用了21個RAM單元(51系列),其它單元未定義不能使用。SFR高128B低128B0FFH80H7FH00H片內RAM1片內RAM低128B功能分區(qū)圖

位尋址區(qū)3區(qū)2區(qū)1區(qū)0區(qū)通用區(qū)08H07H00H7FH30H2FH20H1FH18H17H10H0FH四個工作寄存器區(qū)每區(qū)包含八個工作寄存器:R0-R7位尋址區(qū)16個單元20H-2FH,共有128個可位尋址位。位地址:00H-7FH注意:位地址與字節(jié)地址的區(qū)別通用的RAM區(qū)(包含棧區(qū))地址:30H-7FH0區(qū)工作寄存器區(qū)結構圖R7R6R5R4R3R2R1R0RAM地址07H06H05H04H03H02H01H00H返回上一次片內RAM(20H-2FH)中的位尋址區(qū)結構圖7F7E7D7C7B7A797877767574737271706F6E6D6C6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A393837262524232221202F2E2D2C2B2A292827262524232221201F1E1D1C1B1A191817161514131211100F0E0D0C0B0A090807060504030201002FH20H字節(jié)地址位地址位尋址區(qū)內的地址是位地址。共有00-7FH(共128個位);區(qū)分字節(jié)地址和位地址: ①從物理的角度:每一個字節(jié)地址內包含了8個位,既:

D7,D6,D5,D4,D3,D2,D1,D0 (我們提到的RAM地址一般都是指字節(jié)地址)。

②從邏輯的角度:字節(jié)地址和位地址是靠不同類型的指令來 區(qū)分的。如,

MOVA,20h;將RAM的20單元內容送字節(jié)累加器A;MOVC,20h;將RAM位尋址區(qū)中20H位送位累加器CY中。第一條指令為字節(jié)傳送指令,既20H為字節(jié)地址;第二個指令為位操作指令,20H為位地址。返回2特殊功能寄存器SFR

(SpecialFunctionRegister)特殊用途寄存器的集合,不作普通的RAM單元使用。

功能-作用于單片機內部功能模塊

①特定功能的設定: 用來設定單片機內部各個功能模塊的工作方式:中斷方式的設定、定時器工作模式的設定;

②存放相關模塊的狀態(tài)、標志等。查尋相關模塊的工作狀態(tài),以便進行后續(xù)處理操作:查詢串行口發(fā)送或接收是否結束等等。SFR高128B低128B0FFH80H7FH00H特殊功能寄存器SFR在片內RAM中的位置片內RAM

標識符名稱直接地址ACCBPSWSPDPTRP0P1P2P3IPIETMODTCON累加器B寄存器程序狀態(tài)字堆棧指針數據指針(包括DPH,DPL)口0鎖存器口1鎖存器口2鎖存器口3鎖存器中斷優(yōu)先級控制寄存器中斷允許控制寄存器定時/計數器方式控制寄存器定時/計數器控制寄存器0E0H0F0H0D0H81H83H,82H80H90H0A0H0B0H0B8H0A8H89H88H特殊功能寄存器SFR(表一)SFR(表二)

標識符名稱地址TH0TL0TH1TL1SCONSBUFPCON定時/計數器0初值寄存器高8位定時/計數器0初值寄存器低8位定時/計數器1初值寄存器高8位定時/計數器1初值寄存器低8位串行口控制寄存器串行口數據緩沖器(接收,發(fā)送)電源控制寄存器8CH8AH8DH8BH98H99H97H注:表中黃色的單元為可按位尋址的字節(jié)特殊功能寄存器SFR說明累加器ACC

:

最常用的專用寄存器,大多數的指令,操作數中的一個都來自累加器A。所有的算術運算指令的運算結果都暫存在A中。B寄存器:乘除法指令使用的專用寄存器。數據指針DPTR:

16位的寄存器.由高八位DPH和低八位DPL構成.1DPTR主要用來存放片外RAM的地址. 單片機通過間接尋址的方式來訪問片外的RAM。

例:片外RAM3000H單元中有一個數x,試將其送到累加器A中。

MOVDPTR,#3000H ;DPTR←3000H MOVXA,@DPTR;A←x2訪問ROM ROM中存放了一個表格,首單元地址為:LEDTAB MOVDPTR,#LEDTAB MOVA,#3 MOVCA,@A+DPTR程序狀態(tài)字PSW:

8位寄存器.表征當前指令執(zhí)行后的狀態(tài)信息。CY(PSW.7)進位標志:

在加法運算中,累加器A的最高位A7有進位,則CY=1,否則CY=0. 在減法運算中,如果A7有借位,則CY=1.CY往往作為無符號數運算是否有溢出的標志。AC(PSW.6):輔助進位位: 用來判斷加減法運算時,低四位是否向高四位進位或借位(既A3的進位或借位). 用來判斷壓縮的BCD碼的運算處理.F0(PSW.5)用戶標志位:

完全由用戶來定義和使用。RS1,RS0工作寄存器區(qū)選擇位: 確定工作寄存器R0-R7在哪個區(qū)中. 單片機在上電或復位后RS1、RS0=00。可通過指令修改RS1,RS0的值來改變工作寄存器區(qū)的位置。CYACF0RS1RS0OV-POV(PSW.2)溢出標志位:

判斷符號數加減法運算時是否溢出.OV=1表明有溢出。OV的結果可以用一個算法來表示:OV=CP⊕CS

其中:CP為A7的進位;CS為A6的進位。

P(PSW.0)奇偶標志位:

用來對累加器A中的數據做偶校驗當A中1的個數為奇數個時,P=1

10010001A1P當A中1的個數為偶數個時,P=010010011A0PSP堆棧指針: 8位寄存器,指示堆棧的當前位置。 在51單片機的設計中,片內RAM區(qū)為堆棧的可用空間。 上電或復位時,SP被初始化為07H,應重新初始化SP: MOVSP,#60H

進棧:PUSHACC指令(設SP=60H)1,SP+1送SP,SP=61H;2,FFH送RAM的61H單元;SP=60H(執(zhí)行前61HRAMFFH累加器A堆棧操作示意圖SP始終指向有意義的單元FFHSP=61H(執(zhí)行后60H

出棧:

POPACC(設SP=61H)1,將RAM中61H單元內容送A;2,SP-1送SP,此時SP=60H。SP=61H(執(zhí)行前)61H60HRAMFFH累加器A堆棧操作示意圖SP始終指向有意義的單元FFHSP=60H(執(zhí)行后)并行端口P0-P3: P0-P3的RAM地址:80H、90H、A0H、B0H。51單片機中的輸入、輸出操作

同普通的RAM單元操作 輸出指令: MOV80H,A;將累加器中的數據輸出到P0 MOVP0,A 輸入指令: MOVA,90H;將P1口的數據輸入到累加器AMOVP1,A51把P0-P3作為普通的內存單元來使用,指令系統(tǒng)中沒有專用的輸入、輸出(IN、OUT)指令.串行數據緩沖器SBUF: 用來存放將要發(fā)送或已經接收的數據,物理上它是兩個獨立的寄存器。邏輯上占用一個地址:99H根據指令“發(fā)送”或“接收”兩種不同的操作,硬件會自動的區(qū)分,將數據送如對應的緩沖單元。定時/計數器T0、T1:

實質是一個16位的計數器:是一個“計數器”在計數。計數器由兩個8位寄存器(高位和低位):

T0:TH0、TL0

T1:

TH1、TL1在使用計數器實現定時或計數功能之前,要對它進行初始化,其中就要對TH、TL賦初值。如:

MOV8BH,#01H;(MOVTH0,#01H)MOV8AH,#20H;(MOVTL0,#20H)TH0TL02.3.3外部數據存儲器在片內RAM不能滿足存儲需要時,要在片外擴展RAM。P0、P2端口作為外部RAM的地址和數據總線。 51對外部數據存儲器的擴展能力為64KB。

專用指令MOVX來訪問外部數據存儲器。

1

R0做間址寄存器,尋址范圍為256KB。MOVR0,#20H;將外部RAM單元地址20H送R0寄存器

MOVXA,@R0;從外部RAM20H單元取數據到累加器A

2使用16位的DPTR做間址寄存器,尋址范圍為64KB。

MOVDPTR,#2000H;將外部RAM單元的地址的2000送DPTR

MOVXA,@DPTR

;從外部RAM2000H單元中取數據到A

內容小結51單片機的存儲器邏輯分區(qū) 三個存儲空間: ROM、片內RAM、片外RAM。程序存儲器當引腳/EA=1時,從片內ROM的0000H單元運行程序;若引腳/EA=0時,從片外ROM的0000H單元運行程序。當引腳EA=1,且PC值大于1FFFH時,自動轉到片外2000H單元運行程序。無論是片內還是片外,ROM有六個單元是有特定意義的:

1,0000H單元:上電復位后的啟動地址;2,0003H單元:外部中斷/INT0的入口地址;3,000BH單元:定時器T0溢出中斷的入口地址;4,0013H單元:外部中斷/INT1的入口地址;5,001BH單元:定時器T1溢出中斷的入口地址;6,0023H單元:串行口發(fā)送/接受中斷的入口地址。2內部數據存儲器RAM

低128B:1,工作寄存器區(qū);2,位尋址區(qū);3,棧區(qū);高128B:做特殊功能寄存器SFR用。注意:

1,SFR不同于一般的數據RAM,它不是用于存儲數據,而是用來控制和表征單片機內部幾個邏輯部件的特征,狀態(tài)重要信息。2,在使用RAM時,要注意字節(jié)地址和位地址的概念。 3,訪問內部RAM的指令為MOV指令。3外部數據存儲器①在硬件具備的條件下,80C51單片機可以使用64KB的外部數據存儲器.訪問外部數據存儲器RAM時,只能使用間址的尋址方式.②間址寄存器有R0,R1或DPTR.前者尋址范圍為256B(00H-FFH);后者為64KB(0000H-FFFFH).使用的指令是MOVX. ③CPU通過P0、P2口作為地址/數據總線,訪問外部存儲器。51單片機片外擴展系統(tǒng)擴展

片外擴展:ROM(64KB);RAM+I/O接口(64KB)

可片外并行擴展并行三總線:DB,AB,CB可片外串行擴展數據線+時鐘線

2.480C51單片機的并行輸入/輸出端口

CPU輸入/輸出端口外部設備輸入/輸出端口成為CPU與外部設備進行數據交換的橋梁80C51單片機內部總線端口引腳四個端口都是具有輸出鎖存功能的準雙向端口,輸出鎖存器都在SFR中, P0P1P2P3地址分別為:80H、90H、A0H、B0H。在硬件設計上對每一個端口都有不同的要求,每一個端口又具有不同的特點。繼續(xù)2.4.1P0口2.4.2P1口2.4.3P2口2.4.4P3口2.4.5并行端口在使用時應注意的幾個問題/PSEN/WR

/RD

P2口80C51

P0口

ALED7Q7∶∶D0Q0/CP/WR/RDA15∶∶A8

64K

A7RAMD0∶∶A0D7/OEA15∶∶A8

64KA7ROMD0∶∶A0D7A7…A0A15…A8D0…D780C51單片機片外并行擴展時的三總線提供2.4.1P0口

【特點】:

“通用I/O端口”和“地址/數據復用總線”。1作為通用I/O端口 具有較強的驅動能力(8個LSTTL負載)。 輸出時需外接一個上拉電阻。2作為“地址/數據復用總線”使用 P0口先輸出外部存儲器的低八位地址, 然后再作為數據總線進行數據的輸入或輸出。 注意:P0口功能1和2是矛盾的。硬件組成:一個輸出鎖存器(D型觸發(fā)器);與門和MUX等元件組成的輸出控制電路;一對場效應晶體管FET構成的輸出驅動電路。二個三態(tài)輸入緩沖器(控制讀引腳或讀鎖存器);P0口的位結構圖DQ

鎖存器CL/QP0.x引腳Vcc地址/數據1/0控制(=0時)讀鎖存器讀引腳內部總線寫鎖存器MUX(控制=0時)Vcc1P0口的I/O操作(通用I/O端口)在P0口作為通用I/O端口時,控制電路中的“控制”為“0”電平:多路開關MUX接入鎖存器的/Q端;使上端的FET截止,P0口在做I/O口時輸出為“漏極開路”的結構。DQ

鎖存器CL/QP0.x引腳Vcc地址/數據1/0控制(=0時)讀鎖存器讀引腳內部總線寫鎖存器MUX(控制=0時)Vcc MOVP0,A;A→P0 數據送到鎖存器的“D”端,經“/Q”端送場效管應輸出極。

①送“1”時,/Q=“0”,使下端的FET截止,輸出極的兩個FET全部截止。在外部上拉電阻的作用下,使端口為高電平;②送“0”時,鎖存器的/Q=1,使下端的FET導通(上面的FET截止),端口呈現“0”電平。(一)通用I/O端口輸出操作:DQ

鎖存器CL/QP0.x引腳Vcc地址/數據1/0控制(=0時)讀鎖存器讀引腳內部總線寫鎖存器MUX(控制=0時)Vcc 輸入操作有兩種,由三態(tài)門控制:

①讀引腳:該引腳用于數據輸入時的操作;②讀鎖存:該引腳用于輸出時常用的操作。結構圖(二)通用I/O端口輸入操作a,讀引腳:端口引腳作為輸入的連接下,讀外部送到端口引腳的電平。如: MOVA,P0;A←P0 【注意】:P0為端口引腳電平!單片機控制“讀引腳”的三態(tài)門導通,使引腳處的外部電平經三態(tài)門送入內部總線DQ

鎖存器CL/QP0.x引腳Vcc地址/數據1/0控制(=0時)讀鎖存器讀引腳內部總線寫鎖存器MUX(控制=0時)Vcc

端口在讀引腳時,鎖存器的狀態(tài)可能影響引腳電平的輸入。如:原來鎖存器的狀態(tài)為“0”態(tài),電路將不能正確讀入引腳電平(引腳輸入高電平時).DQ

鎖存器CL/QP0.x引腳Vcc地址/數據1/0控制(=0時)讀鎖存器讀引腳內部總線寫鎖存器MUX(控制=0時)Vcc解決的方法:讓下端的FET截止,即讀引腳前要先向輸出鎖存器寫“1”MOVP0,#0FFHMOVA,P0進行輸入的MOV指令都是“讀引腳”指令,相當于其它系統(tǒng)中的IN指令。P口單片機的引腳設計為輸入時使用MOV指令結構圖MOVA,P0b,讀鎖存器:

算術、邏輯運算指令:ORL、XRL、ANL、INC、DEC、DJNZ及位操作指令。讀入的數據不是來自引腳,而是端口內部鎖存器的內容 ANLP0,A;“讀——修改——寫”操作:先將端口鎖存器中的數據讀到CPU中,然后再與累計器A中的數據進行算術、邏輯運算,最后將結果寫回到端口鎖存器中。DQ

鎖存器CL/QP0.x引腳Vcc地址/數據1/0控制(=0時)讀鎖存器讀引腳內部總線寫鎖存器MUX(控制=0時)Vcc在端口設計為輸出時:有時在前面完成一次端口的輸出操作(MOVP0,A)后再將前面輸入的狀態(tài)取回來,進行再處理然后重新輸出。為什么輸出結果還要讀入?

采用讀“鎖存器”而不是讀“引腳”,是保證讀數據的準確。例如:使用一個晶體管驅動繼電器, 當端口輸出“1”電平驅動晶體管導通時,P0.0引腳的輸出電平只有0.7伏。如果將引腳信號讀回來只會得到一個“0”電平的錯誤結果。P0.0JVDD返回結構圖在當前狀態(tài)下,將某條口線的電平變“1”,其余位不變。

MOVA,#00000100BORLP0,A

P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7“讀——修改——寫”操作舉例在進行硬件系統(tǒng)的設計中,如果使用了外部存儲器/I/O接口時,P0口成為整個系統(tǒng)的地址/數據復用總線。P0口不能再作為通用的I/O端口。只要使用了外部ROM,CPU從中取指令或使用了外部RAM(或I/O),CPU執(zhí)行MOVX指令,P0、P2口就自動變?yōu)閿祿?地址總線。2P0口的總線方式

(系統(tǒng)片外擴展存儲器/I/O接口時)2P0口的總線方式

作用: 輸出片外ROM/RAM單元的低8位地址; 輸出/輸入8位數據。(1)地址/數據輸出(2)數據輸入DQ

鎖存器CL/QP0.x引腳Vcc地址/數據1/0控制(=1時)讀鎖存器讀引腳內部總線寫鎖存器MUX(控制=1時)(1)地址/數據輸出控制電路的“控制”=1,MUX接向“地址/數據”信號;地址/數據信息通過“地址/數據”線經反相器送至下FET輸出。與門打開,輸出極的兩個FET都處于正常的工作狀態(tài),不用外加上拉電阻。DQ

鎖存器CL/QP0.x引腳Vcc地址/數據1/0控制(=1時)讀鎖存器讀引腳內部總線寫鎖存器MUX(控制=1時)(1)地址/數據輸出輸出的地址/數據信息為1: 與門輸出為1,上方的場效應管導通,下方的場效應管截止,P0.x引腳輸出為1; 上方的場效應管起到內部上拉電阻的作用。輸出的地址/數據信息為0:上方的場效應管截止,下方的場效應管導通,P0.x引腳輸出為0。輸出電路是上、下兩個場效應管形成的推拉式結構,提高負載能力;(2)數據輸入對應的“控制”=0,MUX接通鎖存器的/Q端。P0口作為地址/數據復用方式訪問外部存儲器時,CPU自動向P0口寫入FFH,使下方場效應管截止,上方場效應管由于控制信號為0也截止,從而保證數據信息的高阻抗輸入,從外部存儲器輸入的數據信息直接由P0.x引腳通過輸入緩沖器進入內部總線。DQ

鎖存器CL/QP0.x引腳Vcc地址/數據1/0控制(=0時)讀鎖存器讀引腳內部總線寫鎖存器MUX(控制=0時)(2)數據輸入具有高阻抗輸入的I/O口具有高電平、低電平和高阻抗3種狀態(tài)。P0口作為地址/數據總線使用時是一個真正的雙向端口。DQ

鎖存器CL/QP0.x引腳Vcc地址/數據1/0控制(=0時)讀鎖存器讀引腳內部總線寫鎖存器MUX(控制=0時)P0口的特點

(1)當P0口用作地址/數據復用口時: 是真正的雙向口;(2)當P0口用作通用I/O口時: 是一個準雙向口: 在進行輸入操作前,需先向口輸出鎖存器置1,使下方的FET截至。1做通用數據I/O端口時,必須外接“上拉電阻”,否則不能正確的輸出高電平;2在輸入引腳操作前,必須先向端口鎖存器“寫1; 為保證引腳信號的正確讀入,應首先向鎖存器寫1。(單片機復位后,鎖存器自動被置1)

返回結構圖P0口用作通用I/O口注意點特點:單純的通用I/O端口,負載能力為4個LSTTL。

與P0口的區(qū)別:內部具有上拉電阻,輸出時不用外接上拉電阻。2.4.2P1口的位結構圖DQ

鎖存器CL/QP1.x引腳Vcc讀鎖存器讀引腳內部總線寫鎖存器內部上拉電阻2.4.3P2口

特點:“通用I/O端口”和“高八位地址總線”端口DQ

鎖存器CL/QP2.x引腳Vcc地址控制讀鎖存器讀引腳內部總線寫鎖存器MUX(地址/數據=0)內部上拉電阻返回上一次注意:使用外數據存儲器時,P2口分兩種情況:1,使用256B的外部RAM時,用8位的寄存器R0或R1作間址寄存器,這時P2口無用。P2口仍然可以做通用I/O端口。如: movr0,#30h

movr1,#40h

movxa,@r0或 movxa,@r12,使用大于256BRAM或訪問外部ROM時,P2口必須作為外存儲器的高八位地址總線。如: movdptr,#2000H movxa,@dptr;訪問外部數據存儲器

movdptr,#3000H movca,@a+dptr;訪問外部程序存儲器

2.4.4P3口

特點:通用I/O端口、多用途端口

通常情況下,P3口不做通用I/O口,以充分利用單片機的第二功能。DQ

鎖存器CL/QP3.x引腳第二輸出功能讀鎖存器讀引腳內部總線寫鎖存器Vcc返回第二輸入功能1P0,P1,P2,P3作通用I/O口時,都是準雙向口為保證引腳信號的正確讀入,應首先向鎖存器寫1。輸入前,必須先向口鎖存器輸出11111111B,然后才能輸入。 MOVP1,#0FFH MOVA,P12P0做通用數據I/O端口,必須外接“上拉電阻”。P0、P1、P2、P2作通用I/O口使用時的注意事項2.580C51單片機CPU的時序2.5.180C51單片機的時序

(1)單字節(jié)單周期指令的時序 (2)雙字節(jié)單周期指令時序 (3)單字節(jié)雙周期指令的時序2.5.2訪問外部程序存儲器ROM的時序2.5.3訪問外部數據存儲器RAM的指令時序繼續(xù)2.5.180C51單片機的時序

時序:CPU執(zhí)行指令時所需控制信號的時間順序。時序圖中時間參數的描述:

①震蕩周期

②時鐘周期(狀態(tài)周期)

③機器周期

返回震蕩周期T:時序中最小的時間單位。 由外接晶體或外輸入時鐘決定: T=1/fosc;為石英振蕩器頻率或輸入頻率的倒數。

【例如】:在單片機外接12MH的晶體,則單片機的震蕩周期: T=1/fosc=1/(12MHz)=1/12μs.TS1S1S6S5S4S3機器周期時鐘周期: 晶體震蕩器的震蕩信號經過片內時鐘發(fā)生器二分頻。 時鐘周期是震蕩周期的2倍。機器周期:

CPU執(zhí)行一條指令所需要的時間的單位。 51單片機中的機器周期由12個震蕩周期構成, 分為6個狀態(tài)周期(S1-S6), 每個狀態(tài)又分為P1和P2兩相時鐘:S1P1,S1P2,S2P1,S2P2,S3P1,S3P2…S6P1,S6P2

TS1S1S6S5S4S3機器周期指令周期:CPU執(zhí)行一條指令所需要的時間,以機器周期為單位。在51系統(tǒng)中,不同的指令執(zhí)行時所需要的機器周期數不同:

1,單機器周期指令;2,雙機器周期指令;3,四機器周期指令;64條指令執(zhí)行時間為1個機器周期;45條指令執(zhí)行時間為2個機器周期;只有乘除法指令需4個機器周期;指令的運算速度與它所包含的機器周期數有關:機器周期數越少,執(zhí)行的速度就越快。例如:使用一個12M的晶體震蕩器

一個機器周期為:1/12μs×12×1=1μs;兩個機器周期為:1/12μs×12×2=2μs;四個機器周期為:1/12μs×12×4=4μs。

指令的字節(jié)數:一條指令翻譯成機器代碼后所占內存單元的數量。 MCS-51單片機的指令系統(tǒng)中有: 單字節(jié)指令(占用1個ROM字節(jié));操作碼+操作數=1字節(jié) 雙字節(jié)指令(占用2個ROM字節(jié)); 三字節(jié)指令(占用3個ROM字節(jié))。操作碼+操作數ROM操作碼操作數或地址ROM操作碼1#操作數或地址2#操作數或地址ROM單字節(jié)指令雙字節(jié)指令三字節(jié)指令指令特點:指令在程序存儲器ROM中僅占一個存儲單元。每個機器周期內,ALE兩次有效①在ALE第一次有效(S2P1)時,從ROM中讀取指令的操作碼,送入指令寄存器IR中譯碼并執(zhí)行,PC加1。②在ALE第二次有效時,讀下一個操作碼,但丟棄,且PC不加1。(1)單字節(jié)單周期指令的時序機器周期讀操作碼一讀操作碼丟棄ALE返回S1S2S6S5S4S3T震蕩周期INCA

【注意】:1每一個機器周期出現兩次ALE信號;2ALE信號對應從ROM中讀指令。 在一個機器周期中CPU可以完成兩次取指操作;3對于單字節(jié)單周期的指令,CPU是通過對指令的OP譯碼后,得到單字節(jié)信息。

指令特點:一條指令長度為兩個字節(jié),并存儲在ROM相鄰的兩個單元中。該指令的執(zhí)行必須從ROM中取指兩次。OP2-2OP2-1n+1n程序ROMPC(2)雙字節(jié)單周期指令時序返回ADDA,#DATA在ALE第一次有效時: CPU從ROM的n單元中取出指令的第一個字節(jié)OP2-1,并送入IR譯碼。 通過譯碼CPU得到雙字節(jié)指令的信息,使PC加1,指向n+1單元;在ALE第二次有效時: 從ROM的n+1單元取出指令的第二個字節(jié)OP2-2送入IR進行譯碼, 并產生對應的操作,最后在S6P2時完成本條指令的運行。S1S2S6S5S4S3機器周期讀操作碼一讀操作碼二ALET震蕩周期

指令特點:單字節(jié),卻需要兩個機器周期運行。如:INCDPTR

DPTR為兩個8位的寄存器,加1時,必須分兩步完成: 第一步:DPL加1, 第二步:如果DPL加1有進位,則還要對DPH加1.

(3)單字節(jié)雙周期指令的時序在指令周期的第一個ALE:

將ROM中的操作碼OP取出,經IR譯碼后得知為單字節(jié)雙

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論