版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
單片機原理及應(yīng)用課前熱身請問:你對單片機有什么了解?請問:單片機可以應(yīng)用到哪個領(lǐng)域?
請問:學這門課有什么用?單片機是把CPU、RAM、ROM、中斷系統(tǒng)、定時器/計數(shù)器以及I/O接口電路等集成在一塊芯片上的微型計算機。單片機概述-單片機定義AB—地址總線;
CB—控制總線;
DB—數(shù)據(jù)總線換一種說法:單片機是不包括輸入/輸出設(shè)備、不帶外部設(shè)備的微型計算機,可稱它為單片微型計算機(SingleChipMicro-Computer,SCMC),簡稱單片機。
—屬于微型機的一種
—具有一般微型機的基本組成和功能單片機概述-單片機定義5單片機在應(yīng)用時通常處于被控系統(tǒng)的核心地位并融入其中,即以嵌入的方式使用。為了強調(diào)其“嵌入”的特點,也常常將單片機稱為嵌入式微控制器(EmbeddedMicro-ControllerUnit,EMCU)。不同型號不同封裝的單片機單片機概述-單片機定義61.集成度高、體積小、可靠性高2.控制功能強3.低電壓、低功耗,便于生產(chǎn)便攜式產(chǎn)品4.易擴展5.性能價格比優(yōu)異單片機概述-單片機的特點智能儀器儀表機電一體化產(chǎn)品實時工業(yè)控制分布式系統(tǒng)的前端模塊家用電器單片機的應(yīng)用-應(yīng)用領(lǐng)域通信及電子設(shè)備為什么要學這門課?支撐課程體系的需要(大綱)畢業(yè)設(shè)計的需要創(chuàng)新項目的需要學分的需要......考核方式總成績=測驗×6%
+作業(yè)×9%+實驗×15%+期末閉卷筆試×70%怎么學?硬件:電腦、單片機學習板、手機軟件:KeilμVision4、STC-ISP、Proteus等語言:匯編語言、C語言11單片機單片機單片機內(nèi)含:CPU存儲器I/O接口單片機概述-單片機系統(tǒng)單片機應(yīng)用系統(tǒng)(學習板)單片機概述-單片機的程序設(shè)計語言
程序?qū)嶋H上是一系列計算機指令的有序集合1.匯編語言
匯編語言是用助記符表示的機器指令2.C語言
單片機開發(fā)用的C語言是在標準C上經(jīng)過擴充的C語言,也稱為C51語言12應(yīng)用實例單片機P1口連接了8個發(fā)光二極管,若想點亮其中某1個發(fā)光二極管,如何編程? ORG 0000HMAIN: MOV
P1,#7FH
LJMP $ END匯編語言程序#include
<reg51.h>voidmain(
) {
while(1)
{
P1=0x7f;
}}C語言程序利用KeilμVision4編寫程序新建工程新建文件夾,并給工程命名(無尾綴)選擇設(shè)備C語言選“是”匯編語言選“否”是否生成初始化文件?新建源程序文件錄入程序保存文件C語言:后綴“.c”匯編:后綴“.asm”
保存后的源程序文件,字體和顏色發(fā)生改變但與project并沒有關(guān)聯(lián)程序保存后的樣子將源程序文件加載到項目管理器在“Sourcegroup1”上點右鍵注意:加載對話框不會自動關(guān)閉需要手動關(guān)閉默認C語言程序
修改文件類型
Target1處點右鍵,修改屬性設(shè)置輸出屬性,以便生成.hex文件編譯、鏈接,并生成.hex文件將.hex文件下載到單片機學習板按下學習板SW2按鍵軟件仿真——利用keil仿真軟件仿真——利用keil仿真軟件仿真——利用Proteus仿真新建設(shè)計選擇模版保存文件選取元器件放置元器件放置后效果編輯屬性編輯屬性放置電源連線完整電路圖雙擊AT89C51,載入.hex文件加載.hex文件仿真仿真效果思考題若想每隔1s依次點亮8個發(fā)光二極管,該如何編程?流水燈程序(匯編語言程序) ORG 0000HMAIN:
MOV
A,#0FEHLOOP:
MOV
P1,A LCALL D_1s RL A
LJMP
LOOPD_1s:
MOV R6,#100D10ms: MOV
R5,#40DL: MOV
R4,#125 DJNZ
R4,$ DJNZ
R5,DL DJNZ
R6,D10ms RET END#include<reg51.h>#include<intrins.h>voiddelay() //延時函數(shù){
unsignedchari,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++);}voidmain() //主函數(shù){
P1=0xfe; //點亮一個發(fā)光二極管
while(1){
P1=_crol_(P1,1);
delay();}}流水燈程序(C語言程序)51
單片形成階段1976年,Intel推出MCS-48列單片機:8位CPU、1KBROM、64BRAM、27根I/O線和1個8位定時器/計數(shù)器。特點:存儲器容量較小,尋址范圍小(不大于4KB),無串行接口,指令系統(tǒng)功能不強。
單片機的歷史和發(fā)展-單片機的發(fā)展歷史52特點:結(jié)構(gòu)體系完善,性能已大大提高,面向控制的特點進一步突出?,F(xiàn)在,MCS-51已成為公認的單片機經(jīng)典機種。性能完善提高階段
1980年,Intel推出MCS-51系列單片機:8位CPU、4KBROM、128BRAM、4個8位并行口、1個全雙工串行口、2個16位定時器/計數(shù)器。尋址范圍64KB,并有控制功能較強的布爾處理器。單片機的歷史和發(fā)展-單片機的發(fā)展歷史53微控制器化形成階段特點:片內(nèi)增強了面向測控系統(tǒng)外圍電路。“微控制器”的稱謂更能反應(yīng)單片機的本質(zhì)。1982年,Intel推出MCS-96系列單片機:16位CPU、8KBROM、232BRAM、5個8位并行口、1個全雙工串行口、2個16位定時器/計數(shù)器,尋址范圍為64KB,片上還有8路10位ADC、1路PWM輸出及高速I/O部件等。單片機的歷史和發(fā)展-單片機的發(fā)展歷史54微控制器化完善階段特點:單片機的綜合品質(zhì)(如成本、性能、體系結(jié)構(gòu)、開發(fā)環(huán)境、供應(yīng)狀態(tài))有了長足的進步。近期推出的單片機產(chǎn)品,內(nèi)部集成有高速I/O口、ADC、PWM、WDT等部件,并在低電壓、低功耗、串行擴展總線、控制網(wǎng)絡(luò)總線和開發(fā)方式(在系統(tǒng)可編程,ISP)等方面都有了進一步的增強。單片機的歷史和發(fā)展-單片機的發(fā)展歷史1.低功耗2.RISC體系結(jié)構(gòu)的發(fā)展3.ISP及基于ISP的開發(fā)環(huán)境55單片機的歷史和發(fā)展-單片機的發(fā)展趨勢典型單片機簡介-MCS-51系列單片機MCS-51是Intel公司生產(chǎn)的8051單片機系列名稱。MCS-51系列單片機采用兩種生產(chǎn)工藝:HMOS工藝和CHMOS工藝。其他廠商以8051為基核開發(fā)的基于CMOS工藝的單片機產(chǎn)品統(tǒng)稱為80C51系列,而MCS-51系列和80C51系列統(tǒng)稱為51系列單片機。
5657
ATMEL公司,AT89系列,F(xiàn)lash存儲器技術(shù)
Philips公司,80C552系列,含ADC華邦公司,W78C51系列,高速低價
ADI公司,ADμC8xx系列,高精度ADC
LG公司,GMS90/97系列,低壓高速
Maxim公司,DS89C420系列,高速(50MIPS)
Cygnal公司,C8051F系列,高速SOC典型單片機簡介-80C51系列單片機58典型單片機簡介-51系列單片機分類及性能指標分類芯片型號存儲器類型及字節(jié)數(shù)片內(nèi)其他功能單元數(shù)量ROMRAM并行口串行口定時器/
計數(shù)器中斷源總線型基本型80C31無128B4個1個2個5個80C514KB掩模128B4個1個2個5個87C514KBEPROM128B4個1個2個5個89C51/89S514KBFlashROM128B4個1個2個5個增強型80C32無256B4個1個3個6個80C528KB掩模256B4個1個3個6個87C528KBEPROM256B4個1個3個6個89C52/89S528KBFlashROM256B4個1個3個6個非總線型89C20512KBFlashROM128B2個1個2個5個89C40514KBFlashROM128B2個1個2個5個AT89系列單片機是Atmel公司的8位Flash單片機系列。AT89系列單片機的主要型號有:AT89C51、AT89C52、AT89C2051、AT89S51、AT89S52。AT89系列單片機具有以下優(yōu)點:
(1)內(nèi)部含F(xiàn)lashROM
(2)和MCS-51系列單片機引腳兼容
(3)靜態(tài)時鐘方式59典型單片機簡介-AT89系列單片機PIC(PeripheralInterfaceController)單片機是一種用來控制外圍設(shè)備的可編程集成電路,是由Microchip公司推出的采用RISC結(jié)構(gòu)的單片機。PIC系列單片機具有以下優(yōu)點:
(1)適用性廣
(2)運行效率高
(3)開發(fā)環(huán)境優(yōu)越
(4)可靠性高
(5)保密性好60典型單片機簡介-PIC系列單片機MSP430系列單片機是美國德州儀器公司(TI)1996年開始推向市場的一種16位超低功耗、具有精簡指令集(RISC)的混合信號處理器(MixedSignalProcessor)。MSP430系列單片機具有以下優(yōu)點:
(1)處理能力強
(2)運算速度快
(3)超低功耗
(4)片內(nèi)資源豐富
(5)方便高效的開發(fā)環(huán)境61典型單片機簡介-MSP430系列單片機單片機的應(yīng)用-應(yīng)用特點1.控制系統(tǒng)在線應(yīng)用
2.軟/硬件結(jié)合
3.應(yīng)用現(xiàn)場環(huán)境惡劣62第2章
單片機基本結(jié)構(gòu)和工作原理主要介紹MCS-51單片機的內(nèi)部結(jié)構(gòu)及外部引腳、存儲器結(jié)構(gòu)及特殊功能寄存器功能、并行I/O端口結(jié)構(gòu)和工作原理、CPU工作時序和工作方式等內(nèi)容。第2章
單片機的基本結(jié)構(gòu)和工作原理單片機的組成和內(nèi)部結(jié)構(gòu)2.1單片機的外部引腳及功能2.2單片機的存儲器結(jié)構(gòu)2.3單片機的I/O電路2.4單片機的輔助電路2.5單片機的工作時序和工作方式2.62.1單片機的組成和內(nèi)部結(jié)構(gòu)2.1.1單片機的組成單片機內(nèi)部通常包含以下部件:一個8位CPU;一個片內(nèi)振蕩器及時鐘電路;4KBROM(8031沒有片內(nèi)ROM,增強型為8KB);128BRAM(增強型為256B);兩個16位定時器/計數(shù)器(增強型為三個);可尋址64KB外部數(shù)據(jù)存儲器和64KB外部程序存儲器空間的控制電路;32條可編程的I/O口(四個8位并行I/O端口);一個可編程全雙工串行口;具有五個中斷源、兩個優(yōu)先級嵌套中斷結(jié)構(gòu)(增強型為六個中斷源)。2.1.1
單片機的組成2.1.2單片機的內(nèi)部邏輯結(jié)構(gòu)包括:算術(shù)/邏輯運算單元ALU、布爾處理器、累加器、B寄存器、暫存器、程序狀態(tài)字PSW等部件。功能:實現(xiàn)數(shù)據(jù)的算術(shù)邏輯運算、位變量處理和數(shù)據(jù)傳送等操作。一.運算器2.1.3CPU的內(nèi)部結(jié)構(gòu)1.算術(shù)邏輯單元ALU運算器的核心部件,實質(zhì)上是全加器。對數(shù)據(jù)進行加、減、乘、除等算術(shù)運算以及對數(shù)據(jù)進行與、或、異或、循環(huán)、置1、清0等邏輯運算。2.累加器ACC或A是一個8位寄存器,很多運算都要通過累加器提供操作數(shù),多數(shù)運算結(jié)果也在ACC中存放。2.1.3CPU的內(nèi)部結(jié)構(gòu)3.B寄存器暫時存儲數(shù)據(jù)總線或其他寄存器送來的操作數(shù)。4.暫存寄存器(TMP1和TMP2)5.程序狀態(tài)字寄存器(PSW)一個8位的專用寄存器,主要用于存放當前運算結(jié)果的狀態(tài)。B寄存器是為乘法和除法而設(shè)置的,在進行乘法和除法運算時A和B組成寄存器對,記為AB。在不執(zhí)行乘法和除法時,B寄存器可以作為一個普通寄存器使用。2.1.3CPU的內(nèi)部結(jié)構(gòu)二.控制器
控制器是單片機的指揮控制部件。功能:接受來自程序存儲器中的指令并對指令進行譯碼和分析并根據(jù)指令的性質(zhì)控制單片機各功能部件從而保證單片機各部分能自動而協(xié)調(diào)的工作。
包括:程序計數(shù)器、指令寄存器、指令譯碼器、數(shù)據(jù)指針、堆棧指針、定時與控制邏輯電路等。2.1.3CPU的內(nèi)部結(jié)構(gòu)1.程序計數(shù)器(PC)16位專用寄存器,用于存放一條將要執(zhí)行指令的地址,具有自動加1功能。執(zhí)行轉(zhuǎn)移、子程序調(diào)用指令和中斷響應(yīng)時,PC內(nèi)容不再加1。單片機復(fù)位時,PC裝入0000H。2.指令寄存器(IR)一個8位寄存器,用于寄存等待執(zhí)行的指令。
2.1.3CPU的內(nèi)部結(jié)構(gòu)源程序
ORG0000H
LJMPSTARTORG0040HSTART:MOVSP,#5FH;設(shè)堆棧
LOOP:NOP
LJMPLOOP
;循環(huán)
END
;結(jié)束目標文件也就是最終寫入EPROM的文件:020040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75815F
00
0200433.指令譯碼器(ID)對指令寄存器中的指令進行譯碼。
4.數(shù)據(jù)指針(DPTR)一個16位專用寄存器,通常在訪問外部數(shù)據(jù)存儲器時作地址指針。5.堆棧指針(SP)一個8位專用寄存器,用于存放堆棧棧頂?shù)刂贰?.定時與控制邏輯電路產(chǎn)生各種控制信號,協(xié)調(diào)各功能部件的工作。2.1.3CPU的內(nèi)部結(jié)構(gòu)2.2單片機的外部引腳及功能I/O引腳控制引腳電源與晶振引腳I/O引腳即輸入/輸出端口,有P0(P0.0~P0.7)、P1(P1.0~P1.7)、P2(P2.0~P2.7)、P3(P3.0~P3.7)4個8位準雙向輸入/輸出端口。P0、P2和P3口可以組成三總線,用于外圍芯片擴展。2.2.1I/O引腳地址總線(AB)805187518031P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7PSENEAALERST用戶I/O控制總線(CB)鎖存器P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ALEA15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0D7D6D5D4D3D2D1D0VCCVSS數(shù)據(jù)總線(DB)VCCVSSRST:復(fù)位輸入端,該引腳出現(xiàn)連續(xù)2個周期高電平使單片機復(fù)位。ALE/PROG:當訪問外部存儲器時,ALE為地址鎖存器提供鎖存信號,用于鎖存地址的低位字節(jié),不訪問外部存儲器時,ALE端仍以不變的頻率(為振蕩頻率的1/6)周期性地出現(xiàn)正脈沖信號。注意:訪問外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。在對片內(nèi)ROM編程時,該引腳的第二功能用于輸入編程脈沖。2.2.2控制引腳PSEN:外部程序存儲器取指使能。在訪問外部ROM時,該信號自動產(chǎn)生,每個機器周期輸出兩個脈沖。EA/Vpp:外部訪問允許;當EA為高電平時,CPU從內(nèi)部程序存儲器執(zhí)行指令,當PC值超過片內(nèi)程序存儲器最大地址范圍時,將自動轉(zhuǎn)向外部存儲器執(zhí)行程序。當EA為低電平時,CPU只從外部程序存儲器執(zhí)行指令。在片內(nèi)ROM編程期間,該引腳的第二功能用于加12V的編程允許電源。思考:8031單片機的EA引腳應(yīng)該接什么電平?2.2.2控制引腳Vcc:電源端。GND:接地端。XTAL1:接外部晶振的一個引腳。XTAL2:接外部晶振的一個引腳。(后面講)2.2.3電源與晶振引腳應(yīng)用舉例--P1口驅(qū)動流水燈單片機的組成和內(nèi)部結(jié)構(gòu)-單片機的內(nèi)部邏輯結(jié)構(gòu)從物理上看,MCS-51單片機有4個存儲空間:內(nèi)部ROM、外部ROM、內(nèi)部RAM、外部RAM。從用戶角度看,MCS-51單片機有3個存儲地址空間:片內(nèi)外統(tǒng)一尋址的ROM空間----用MOVC指令訪問片內(nèi)RAM空間和SFR----用MOV指令訪問片外RAM空間----用MOVX指令訪問MCS-51單片機的存儲器組織采用哈佛結(jié)構(gòu),即程序存儲器與數(shù)據(jù)存儲器使用不同的邏輯空間、不同的物理存儲、不同的尋址方式和不同的訪問時序。2.3單片機的存儲器結(jié)構(gòu)程序存儲器00H7FH80HFFH內(nèi)部RAMSFR內(nèi)部數(shù)據(jù)存儲器外部ROM60KBEA=0EA=10000H0FFFH1000HFFFFH內(nèi)部ROM4KB外部ROM4KB外部數(shù)據(jù)存儲器外部RAM64KBFFFFH0000H2.3單片機的存儲器結(jié)構(gòu)程序存儲器用來存放程序、表格和常數(shù),也稱為ROM。以程序計數(shù)器PC作為地址指針,通過16位地址總線,可尋址的地址空間為64K字節(jié),地址范圍為0000H~FFFFH。對于MCS-51系列單片機,ROM主要有3種形式:80C31/80C32片內(nèi)無ROM,必須外部擴展80C51/87C51片內(nèi)有4KB的ROM/EPROM80C52/87C52片內(nèi)有8KB的ROM/EPROM2.3.1程序存儲器要使用外部ROM,
引腳必須接低電平;要使用內(nèi)部ROM,
引腳必須接高電平。2.3.1程序存儲器-片內(nèi)與片外程序存儲器的選擇2.3.1程序存儲器-程序存儲器低端的特殊單元地址功能0000H復(fù)位0003H外部中斷0000BH定時器/計數(shù)器00013H外部中斷1001BH定時器/計數(shù)器10023H串行口中斷程序存儲器低端的特殊單元如下表所示:2.3.1程序存儲器-程序存儲器低端的特殊單元低端幾個特殊單元2.3.1程序存儲器-程序代碼及其觀察數(shù)據(jù)存儲器用來存放暫時性的輸入輸出數(shù)據(jù)、運算的中間結(jié)果或用作堆棧,也稱為RAM。內(nèi)部數(shù)據(jù)存儲器
外部數(shù)據(jù)存儲器2.3.2數(shù)據(jù)存儲器2.3.2數(shù)據(jù)存儲器-工作寄存器區(qū)工作寄存器區(qū)(4組)寄存器組0:地址00H~07H
寄存器組1:地址08H~0FH寄存器組2:地址10H~17H寄存器組3:地址18H~1FH
PSW寄存器中:
每組又包括8個寄存器,記為R0~R7當前工作寄存器組選擇通過RS1和RS0設(shè)置內(nèi)部RAM的20H~2FH區(qū)域為位尋址區(qū),只能按位尋址。
2.3.2數(shù)據(jù)存儲器-位尋址區(qū)字節(jié)地址位地址D7D6D5D4D3D2D1D020H07H06H05H04H03H02H01H00H21H0FH0EH0DH0CH0BH0AH09H08H22H17H16H15H14H13H12H11H10H23H1FH1EH1DH1CH1BH1AH19H18H24H27H26H25H24H23H22H21H20H25H2FH2EH2DH2CH2BH2AH29H28H26H37H36H35H34H33H32H31H30H27H3FH3EH3DH3CH3BH3AH39H38H28H47H46H45H44H43H42H41H40H29H4FH4EH4DH4CH4BH4AH49H48H2AH57H56H55H54H53H52H51H50H2BH5FH5EH5DH5CH5BH5AH59H58H2CH67H66H65H64H63H62H61H60H2DH6FH6EH6DH6CH6BH6AH69H68H2EH77H76H75H74H73H72H71H70H2FH7FH7EH7DH7CH7BH7AH79H78H字節(jié)地址位地址D7D6D5D4D3D2D1D020H07H06H05H04H03H02H01H00H21H0FH0EH0DH0CH0BH0AH09H08H22H17H16H15H14H13H12H11H10H23H1FH1EH1DH1CH1BH1AH19H18H24H27H26H25H24H23H22H21H20H25H2FH2EH2DH2CH2BH2AH29H28H26H37H36H35H34H33H32H31H30H27H3FH3EH3DH3CH3BH3AH39H38H28H47H46H45H44H43H42H41H40H29H4FH4EH4DH4CH4BH4AH49H48H2AH57H56H55H54H53H52H51H50H2BH5FH5EH5DH5CH5BH5AH59H58H2CH67H66H65H64H63H62H61H60H2DH6FH6EH6DH6CH6BH6AH69H68H2EH77H76H75H74H73H72H71H70H2FH7FH7EH7DH7CH7BH7AH79H78HMOVA,20HMOVC,20H累加器位累加器位尋址區(qū)2.3.2數(shù)據(jù)存儲器-位尋址區(qū)內(nèi)部RAM的30H~7FH區(qū)域為普通存儲區(qū),只能按字節(jié)尋址。
數(shù)據(jù)緩沖
堆棧
SP指示棧頂復(fù)位時SP=07H
系統(tǒng)初始化通常重新設(shè)置2.3.2數(shù)據(jù)存儲器-普通存儲區(qū)基本型單片機有21個SFR離散地分布在80H~FFH空間。與運算器相關(guān)3個
ACC
B
PSW與定時/計數(shù)器相關(guān)6個
TH0,TL0
TH1,TL1
TMODTCON指針類3個
SP
DPH,DPL與口相關(guān)7個
P0,P1,P2,P3
SBUFSCON
PCON與中斷相關(guān)2個
IE
IP2.3.3特殊功能寄存器2.3.3特殊功能寄存器標
志
符名
稱地
址ACC累加器E0HBB寄存器F0HPSW程序狀態(tài)字寄存器D0HSP堆棧指針81HDPH數(shù)據(jù)指針DPTR高字節(jié)83HDPL數(shù)據(jù)指針DPTR低字節(jié)82HP0P0口80HP1P1口90HP2P2口A0HP3P3口B0HIE中斷允許控制寄存器A8HIP中斷優(yōu)先級控制寄存器B8HTMOD定時器/計數(shù)器工作方式寄存器89HTCON中斷請求標志寄存器88H標
志
符名
稱地
址TH0定時器/計數(shù)器0(高字節(jié))8CHTL0定時器/計數(shù)器0(低字節(jié))8AHTH1定時器/計數(shù)器1(高字節(jié))8DHTL1定時器/計數(shù)器1(低字節(jié))8BHSCON串行口控制寄存器98HSBUF串行口收發(fā)數(shù)據(jù)寄存器99HPCON電源控制寄存器87H地址的尾數(shù)是0或8的寄存器不僅可以按字節(jié)訪問,也可以按位尋址,常用的訪問方法“寄存器名.位序號”2.3.3特殊功能寄存器1.累加器
8位寄存器,ACC表示地址(E0H),寄存器名稱為A。為ALU提供操作數(shù)、存放運算結(jié)果。大部分指令要通過累加器ACC進行,通常用A表示。2.3.3特殊功能寄存器其中F0、RS1、RS0可以軟件設(shè)置,Cy、Ac、OV和P由CPU決定。PSWD7D6D5D4D3D2D1D0D0HCyAcF0RS1RS0OV-PCy:進位標志位。當最高位有進位(加法)或有借位(減法)時,Cy=1,否則Cy=0。
在布爾(位)處理器中作位累加器使用,常用“C”表示。Ac:輔助進位標志位。當?shù)?位相加(或相減)時,若D3位向D4位有進位(或借位),AC=1,否則AC=0。2.程序狀態(tài)字寄存器PSW
2.3.3特殊功能寄存器F0(用戶標志位):F0是開發(fā)者可以定義的一個狀態(tài)標記,用軟件來使它置1或清0。RS1、RS0:工作寄存器組選擇控制位。OV:溢出標志位。用于指示帶符號數(shù)運算的溢出。
當兩個帶符號數(shù)進行運算時,OV邏輯表達式為OV=C7⊕C6。P:奇偶標志位,ACC中“1”的個數(shù)為奇數(shù),P置1。RS1RS0組對應(yīng)RAM中的地址00000H~07H01108H~0FH10210H~17H11318H~1FH2.3.3特殊功能寄存器有符號二進制數(shù)的表示方法及溢出問題
我們假定討論的數(shù)為整數(shù),對8位有符號二進制整數(shù),用下表示:數(shù)值部分符號位0:表示正數(shù)1:表示負數(shù)
這種表示方法稱為機器數(shù)表示法。有符號二進制數(shù)的真值為它對應(yīng)的十進制數(shù)。有符號二進制數(shù)的表示方法及溢出問題補碼表示法一個數(shù)X的補碼記為,補碼可定義為:補[X]補[x]=x
當
當(mod)值的注意的是:0的補碼只有唯一的形式,符號位和數(shù)值位均為0。無正負0之分。有符號二進制數(shù)的表示方法及溢出問題負數(shù)補碼的求法補[x]==,x<0即負數(shù)x的補碼等于模加上其真值(或減去其真值的絕對值)。補[X](mod)如:x=-1010111B,n=8,則===10000000B-1010111B10101001B有符號二進制數(shù)的表示方法及溢出問題有符號數(shù)運算的溢出問題
如果計算機的字長為n位,n位二進制數(shù)的最高位為符號位,其余n-1位為數(shù)值位,采用補碼表示法時,可表示的數(shù)X的范圍為:當n=8時,可表示的有符號數(shù)的范圍為:-128+127
如果補碼的運算結(jié)果超出可表示的有符號數(shù)的范圍時,就會發(fā)生溢出,使計算結(jié)果出錯(舉例)。3.數(shù)據(jù)指針DPTR
16位特殊功能寄存器,可分為2個8位寄存器:高8位字節(jié)寄存器用DPH表示;低8位字節(jié)寄存器用DPL表示。常用作訪問外部存儲器的地址寄存器。尋址范圍為64KB。
2.3.3特殊功能寄存器
4.堆棧指針SP
8位特殊功能寄存器,總是指向棧頂。
堆棧操作遵循“后進先出”的原則,并由壓入指令(PUSH)和彈出指令(POP)完成:
數(shù)據(jù)入棧時SP先加1,然后壓入數(shù)據(jù);數(shù)據(jù)出棧時先彈出數(shù)據(jù),SP再減1。
主機復(fù)位后,SP的初始值為07H,為避免與工作寄存器、位寄存器重疊,通常設(shè)在30H~7FH。工作寄存器一直使用0組時,SP也可默認初始值而不做改變。2.3.3特殊功能寄存器片內(nèi)RAM30H11H10HSP××片內(nèi)RAM50H40H11H10HSP××40H30H片內(nèi)RAM50H40H11H10H50H××SP30H片內(nèi)RAM40H11H10H34H××SP30H34H34H××××執(zhí)行前執(zhí)行前執(zhí)行前PUSH指令后執(zhí)行POP指令后指令PUSH40H操作示意圖指令POP30H操作示意圖2.3.3特殊功能寄存器2.3.3特殊功能寄存器-寄存器在RAM中的映射RAM內(nèi)容查看2.3.3數(shù)據(jù)存儲器-數(shù)據(jù)查看單片機的組成和內(nèi)部結(jié)構(gòu)-單片機的內(nèi)部邏輯結(jié)構(gòu)有4個8位并行I/O端口,占32根引腳。每位都有自己的鎖存器(即特殊功能寄存器P0~P3)、輸出驅(qū)動器和輸入緩沖器。不需外部功能擴展時:都可以作典型的并行I/O端口,P3還可以作第二功能口。需要外部功能擴展時:P2口作高8位地址線,P0口為低8位地址/數(shù)據(jù)線復(fù)用,P1作典型的I/O口。2.4單片機的I/O電路P0、P2和P3口可以組成三總線,用于外圍芯片擴展。地址總線(AB)805187518031P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7PSENEARST用戶I/O控制總線(CB)鎖存器P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ALEA15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0D7D6D5D4D3D2D1D0VCCVSS數(shù)據(jù)總線(DB)VCCGND2.4單片機的I/O電路當控制信號為0時,P0口輸入數(shù)據(jù)或作I/O口控制信號為1時,P0口輸出地址/數(shù)據(jù)信息輸出鎖存器兩個輸入緩沖器輸出驅(qū)動電路P0口內(nèi)部結(jié)構(gòu)輸出控制電路2.4.1P0口-P0口的結(jié)構(gòu)截止0控制電平為“0”,鎖存器的Q與V2接通與門封鎖,V1截止,P0口的輸出是漏極開路電路P0作輸出口時,要外接上拉電阻,一般選R=4.7KΩ或5.1KΩ。0R2.4.1P0口-P0口的功能1.P0作通用I/O口(1)輸出時2.4.1P0口-P0口的功能1.P0作通用I/O口R0100010截止1導(dǎo)通(2)輸入時讀鎖存器(“讀-修改-寫”類指令,如ANLP0,A)
讀引腳(“MOV”類指令,如MOVA,P0),要先寫“1”
1.P0作通用I/O口2.4.1P0口-P0口的功能①讀引腳時為什么要先給鎖存器寫“1”?輸入操作前,內(nèi)部總線先輸出1,使V2截至,引腳處于懸浮狀態(tài),變?yōu)楦咦杩馆斎耄ú唤由侠娮钑r);或者被上拉為高電平(接上拉電阻時)。因為作輸入端口時,要先執(zhí)行輸出“1”的操作,所以這種口不是真正的雙向I/O口,被稱為準雙向口。在讀輸入端口數(shù)據(jù)時(MOVA,P0),如果V2導(dǎo)通,就會將輸入的高電平(按鍵沒按下)拉成低電平,產(chǎn)生誤讀。0100010截止1導(dǎo)通有效R典型輸入電路2.4.1P0口-P0口的功能②為什么需要讀鎖存器?對P0口進行“讀-修改-寫”操作時,如執(zhí)行“ANLP0,A”指令,此時要讀取鎖存器的內(nèi)容。VCC001有效1導(dǎo)通00有效1先修改R因為從引腳讀出的電平有時不正確(例如用端口驅(qū)動晶體管的基極時)。2.4.1P0口-P0口的功能2.P0作地址數(shù)據(jù)總線地址或數(shù)據(jù)信息分時出現(xiàn)在輸出引腳??刂齐娖綖椤?”,與門打開,地址/數(shù)據(jù)信息與V1接通。地址/數(shù)據(jù)信息經(jīng)反相器與V2接通。上下兩個FET處于反相,構(gòu)成了推拉式的輸出電路,其負載能力大大增強。此時,P0口不需要外接上拉電阻?。?)輸出時(C=1)2.4.1P0口-P0口的功能數(shù)據(jù)是從引腳通過輸入緩沖器進入內(nèi)部總線。CPU會在讀入數(shù)據(jù)之前自動向P0口寫入“FFH”,V2截止。輸入數(shù)據(jù)前無需額外操作,此時P0口是真正的雙向口。2.P0作地址數(shù)據(jù)總線(2)輸入時(C由1變成0)2.4.1P0口-P0口的功能本身有上拉電阻由輸出鎖存器、輸入緩沖器和輸出驅(qū)動電路組成。只有一種功能——通用I/O口讀引腳時先向該口寫“1”—準雙向I/O口。2.4.2P1口控制信號為0時:為通用I/O口,讀引腳時先向該口寫“1”—準雙向I/O口。輸出鎖存輸入緩沖輸出驅(qū)動輸出控制本身有上拉電阻2.4.3P2口控制信號為1時:為地址總線高8位2.4.3P2口既可作通用I/O口,又可實現(xiàn)變異功能。1.P3作通用I/O口—準雙向I/O口變異功能輸出端W的狀態(tài)為“1”1本身有上拉電阻2.4.4P3口
第二功能
P3.0:RxD(串行口輸入)
P3.1:TxD(串行口輸出)
P3.2:INT0(外部中斷0輸入)
P3.3:INT1(外部中斷1輸入)
P3.4:T0(定時器/計數(shù)器0的外部輸入)
P3.5:T1(定時器/計數(shù)器1的外部輸入)
P3.6:WR(片外數(shù)據(jù)存儲器“寫選通控制”輸出)
P3.7:RD(片外數(shù)據(jù)存儲器“讀選通控制”輸出)2.4.4P3口2.P3實現(xiàn)第二功能輸出:Q=1輸入:Q=1,W=12.4.4P3口外部擴展ROM或RAM時:P0口和P2口構(gòu)成16位地址總線P0口分時復(fù)用為8位數(shù)據(jù)總線P3口作第二變異功能P1口作I/O用P0口可驅(qū)動8個LSTTL的電路,作通用I/O口時要加上拉電阻,作地址/數(shù)據(jù)總線時,不必加上拉電阻。P1、P2、P3口可驅(qū)動4個LSTTL的電路。2.4單片機的I/O電路-總結(jié)單片機的外部引腳單片機的外部引腳及最小系統(tǒng)復(fù)位電路時鐘電路最小應(yīng)用系統(tǒng):維持單片機運行的最簡單配置的系統(tǒng)。2.5.3單片機最小系統(tǒng)RSTP1口驅(qū)動流水燈的硬件電路P1口驅(qū)動流水燈的硬件電路時鐘電路:給單片機提供時鐘脈沖,保證單片機按照自身的時序自動工作起來。復(fù)位電路RST:復(fù)位輸入端,該引腳連續(xù)出現(xiàn)2個機器周期以上的高電平,使單片機復(fù)位。時鐘電路復(fù)位電路2.5單片機的輔助電路輔助電路是單片機正常工作的必要條件。單片機的主要輔助電路為:MCS-51的時鐘信號通常有內(nèi)部方式和外部方式兩種產(chǎn)生方式:內(nèi)部方式:在XTAL1和XTAL2之間連上晶振和電容。內(nèi)部時鐘方式晶體的振蕩頻率在1.2MHz~24MHz之間,典型值為6MHz、12MHz或11.0592MHz。
C1和C2的作用是穩(wěn)定頻率和快速起振,電容值在10~30pF之間,典型值為30pF。2.5.1時鐘電路-內(nèi)部方式外部時鐘方式(CHMOS)外部方式:將外部已有的時鐘信號引入單片機。常用于多片單片機同時工作,為使各單片機時序同步。2.5.1時鐘電路-外部方式MCS-51單片機的時序定時單位從小到大依次為時鐘周期、S狀態(tài)、機器周期和指令周期。2.6單片機的工作時序和工作方式S1S2S3S4
S5S6S1S2P1P2P1P2P1P2P1P2P1P2P1P2P1P2P1P2一個機器周期X21.時鐘周期也稱振蕩周期、晶振周期,指為單片機提供時鐘信號的振蕩源的周期或外部輸入時鐘的周期。若晶體振蕩頻率為fosc,則時鐘周期T=1/fosc。2.6.1時序的基本概念2.機器周期完成一條指令的一個基本操作所需的時間稱為機器周期。一個機器周期包含6個S狀態(tài),12個節(jié)拍:S1P1、S1P2、S2P1、S2P2、…、S6P1、S6P2若晶體振蕩頻率為fosc,則機器周期=12/fosc。S1S2S3S4
S5S6S1S2P1P2P1P2P1P2P1P2P1P2P1P2P1P2P1P2一個機器周期X22.6.1時序的基本概念3.指令周期單片機CPU執(zhí)行一條指令所需的時間。執(zhí)行不同指令所需時間也不盡相同,有單機器周期、雙機器周期、四機器周期三種指令周期。MCS-51系列單片機除乘法、除法指令是四周期指令外,其余都是單周期指令或雙周期指令。2.6.1時序的基本概念按所占字節(jié)分單字節(jié)指令雙字節(jié)指令三字節(jié)指令按運行時間分單周期指令雙周期指令四周期指令匯編指令的分類單字節(jié)單周期指令單字節(jié)雙周期指令單字節(jié)四周期指令雙字節(jié)單周期指令雙字節(jié)雙周期指令三字節(jié)雙周期指令2.6.2單片機的工作時序取址和執(zhí)行指令的時序關(guān)系A(chǔ)LE信號是地址鎖存信號。該信號每有效一次,就能對程序存儲器執(zhí)行一次讀指令操作。ALE信號的頻率為1/6振蕩頻率,即在一個機器周期中,ALE信號兩次有效:第一次在S1P2和S2P1期間,第二次在S4P2和S5P1期間,有效寬度為一個狀態(tài)周期。122.6.2單片機的工作時序地址總線(AB)805187518031P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7PSENEARST用戶I/O控制總線(CB)鎖存器P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ALEA15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0D7D6D5D4D3D2D1D0VccVss數(shù)據(jù)總線(DB)VccGND單片機的I/O引腳組成的三總線P0口既是地址總線,又是數(shù)據(jù)總線,它如何做到“身兼二職”的?P0口如何做到既是地址總線,又是數(shù)據(jù)總線的?當ALE輸出高電平時,P0口提供低8位地址信號;當ALE變成低電平時,低8位地址信號被存在鎖存器中,然后P0口可以當作數(shù)據(jù)總線使用。地址總線(AB)805187518031P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7PSENEARST用戶I/O控制總線(CB)鎖存器P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ALEA15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0D7D6D5D4D3D2D1D0VccVss數(shù)據(jù)總線(DB)VccGND復(fù)位電路RST:復(fù)位輸入端,該引腳連續(xù)出現(xiàn)2個機器周期以上的高電平,使單片機復(fù)位。MCS-51單片機啟動時需要復(fù)位,使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初始狀態(tài)開始工作。如果RST引腳上有一個高電平并維持2個機器周期(24個振蕩周期)或更多,則CPU可響應(yīng)并將系統(tǒng)復(fù)位。2.5.2復(fù)位方式和復(fù)位電路一.上電復(fù)位電路2.5.2復(fù)位方式和復(fù)位電路-復(fù)位電路二.手動復(fù)位電路2.5.2復(fù)位方式和復(fù)位電路-復(fù)位電路三.WDT復(fù)位電路2.5.2復(fù)位方式和復(fù)位電路-復(fù)位電路單片機復(fù)位后的狀態(tài)如下表所示。寄存器復(fù)位后內(nèi)容寄存器復(fù)位后內(nèi)容PC0000HTH000HACC00HTL000HB00HTH100HPSW00HTL100HSP07HIP×××00000BDPTR0000HIE0××00000BP0~P3FFHSCON00HTMOD00HSBUF不定TCON00HPCON0×××0000B2.5.2復(fù)位方式和復(fù)位電路-復(fù)位狀態(tài)1.正常工作方式是單片機自動完成任務(wù)的工作方式,順序執(zhí)行。單片機完成復(fù)位后,進入正常工作方式,由Vcc供電。2.掉電工作方式通過對SFR中的電源控制寄存器PCON的操作進入掉電工作方式。SMOD---GF1GF0PDIDLD7D6D5D4D3D2D1D0(87H)PCONPCON不能進行位操作,只能按字節(jié)操作SMOD:波特率加倍位GF1、GF0:通用標志位PD:掉電方式控制位。PD=1,啟用掉電方式。IDL:待機方式控制位。IDL=1,啟用待機模式。2.6.3單片機的工作方式當單片機檢測到故障時,立即通過外部中斷引腳中斷運行程序。CPU轉(zhuǎn)而執(zhí)行中斷服務(wù)程序,首先進行信息保護,然后執(zhí)行一條置PD為1的指令,系統(tǒng)進入掉電工作方式。硬件復(fù)位。在準備退出掉電方式前,Vcc必須恢復(fù)到正常工作電壓值,并維持一段時間,使振蕩器重新啟動并穩(wěn)定后,退出掉電方式。掉電方式進入掉電方式退出2.6.3單片機的工作方式3.低功耗工作方式(待機工作方式)當CPU執(zhí)行完置IDL位為1的指令后,系統(tǒng)進入了待機工作方式。一種方法是任何的中斷請求都可由硬件將IDL清0而終止待機工作方式。另一種方法是硬件復(fù)位,需要在RST引腳加入正脈沖。低功耗工作方式進入低功耗工作方式退出2.6.3單片機的工作方式第3章
單片機C51程序設(shè)計基礎(chǔ)主要結(jié)合MCS-51單片機特點介紹C51的基本知識,重點講述與單片機軟件編程密切相關(guān)的內(nèi)容。第3章
單片機C51程序設(shè)計基礎(chǔ)C51概述3.1C51的編譯和編譯預(yù)處理3.2C51的基本語法3.3C51的程序結(jié)構(gòu)3.4C51的函數(shù)3.5C51的數(shù)組3.6
讀寫I/O端口的C51編程3.8C51的指針3.73.1C51概述-程序結(jié)構(gòu)概述#include<reg51.h> //預(yù)處理命令//全局變量定義//函數(shù)聲明charfun() //功能函數(shù)定義{ …… //功能函數(shù)體}void函數(shù)名()interruptx//中斷函數(shù)定義{ …… //中斷函數(shù)體}voidmain(
) //主函數(shù){//局部變量定義//單片機寄存器初始化函數(shù)
while(1) { …… //主函數(shù)體 }}一個C51源程序必須包括一個main函數(shù)?!?include<xxx.h>”語句是包含庫函數(shù)。全局變量在程序的所有地方都可以賦值和讀出,包括中斷函數(shù)、主函數(shù)。用戶自定義函數(shù)是用戶自己定義、自己調(diào)用的函數(shù)。如果使用中斷、定時器、串口等功能,則單片機相關(guān)寄存器的必須要初始化。主程序必須是閉環(huán)結(jié)構(gòu)。注釋部分可以用“//注釋內(nèi)容”或“/*注釋內(nèi)容*/”分割。程序中必須采用英文標點。3.1C51概述-程序結(jié)構(gòu)概述#include<reg51.h> //預(yù)處理命令//全局變量定義//函數(shù)聲明charfun() //功能函數(shù)定義{ …… //功能函數(shù)體}void函數(shù)名()interruptx//中斷函數(shù)定義{ …… //中斷函數(shù)體}voidmain(
) //主函數(shù){//局部變量定義//單片機寄存器初始化函數(shù)
while(1) { …… //主函數(shù)體 }}除了ANSIC標準的32個關(guān)鍵字之外,C51還根據(jù)MCS-51單片機的特點擴展了相關(guān)的關(guān)鍵字。右表按用途列出了KeilC51編譯器擴展的關(guān)鍵字。3.1.2
C51對標準C的擴展關(guān)鍵字用途說明_at_地址定位為變量進行存儲器絕對空間地址定位alien函數(shù)特性聲明用于聲明與PL/M51兼容函數(shù)small存儲器模式指定使用內(nèi)部數(shù)據(jù)存儲器空間compact存儲器模式指定使用外部“分頁尋址”數(shù)據(jù)存儲器空間large存儲器模式指定使用外部數(shù)據(jù)存儲器空間code存儲器類型聲明聲明程序存儲器空間data存儲器類型聲明指定直接尋址的內(nèi)部數(shù)據(jù)存儲器bdata存儲器類型聲明指定可位尋址的內(nèi)部數(shù)據(jù)存儲器idata存儲器類型聲明指定間接尋址的內(nèi)部數(shù)據(jù)存儲器pdata存儲器類型聲明指定“分頁尋址”的外部數(shù)據(jù)存儲器xdata存儲器類型聲明指定外部數(shù)據(jù)存儲器bit位變量聲明聲明位變量sbit位變量聲明聲明一個可位尋址變量sfr特殊功能寄存器聲明聲明一個8位的特殊功能寄存器sfr16特殊功能寄存器聲明聲明一個16位的特殊功能寄存器interrupt中斷函數(shù)聲明定義一個中斷服務(wù)函數(shù)using工作寄存器組定義定義工作寄存器組R0~R7_priority_多任務(wù)優(yōu)先聲明規(guī)定RTX或RTX51Tiny的任務(wù)優(yōu)先級reentrant再入函數(shù)聲明定義一個再入函數(shù)_task_任務(wù)聲明定義實時多任務(wù)函數(shù)3.1.2
C51對標準C的擴展關(guān)鍵字用途說明_at_地址定位為變量進行存儲器絕對空間地址定位alien函數(shù)特性聲明用于聲明與PL/M51兼容函數(shù)small存儲器模式指定使用內(nèi)部數(shù)據(jù)存儲器空間compact存儲器模式指定使用外部“分頁尋址”數(shù)據(jù)存儲器空間large存儲器模式指定使用外部數(shù)據(jù)存儲器空間code存儲器類型聲明聲明程序存儲器空間data存儲器類型聲明指定直接尋址的內(nèi)部數(shù)據(jù)存儲器bdata存儲器類型聲明指定可位尋址的內(nèi)部數(shù)據(jù)存儲器idata存儲器類型聲明指定間接尋址的內(nèi)部數(shù)據(jù)存儲器pdata存儲器類型聲明指定“分頁尋址”的外部數(shù)據(jù)存儲器xdata存儲器類型聲明指定外部數(shù)據(jù)存儲器bit位變量聲明聲明位變量sbit位變量聲明聲明一個可位尋址變量sfr特殊功能寄存器聲明聲明一個8位的特殊功能寄存器sfr16特殊功能寄存器聲明聲明一個16位的特殊功能寄存器interrupt中斷函數(shù)聲明定義一個中斷服務(wù)函數(shù)using工作寄存器組定義定義工作寄存器組R0~R7_priority_多任務(wù)優(yōu)先聲明規(guī)定RTX或RTX51Tiny的任務(wù)優(yōu)先級reentrant再入函數(shù)聲明定義一個再入函數(shù)_task_任務(wù)聲明定義實時多任務(wù)函數(shù)除了ANSIC標準的32個關(guān)鍵字之外,C51還根據(jù)MCS-51單片機的特點擴展了相關(guān)的關(guān)鍵字。右表按用途列出了KeilC51編譯器擴展的關(guān)鍵字。3.3.2變量-存儲類型存儲類型與存儲空間對應(yīng)關(guān)系data直接尋址片內(nèi)數(shù)據(jù)存儲器區(qū),訪問速度最快(128字節(jié))bdata可位尋址片內(nèi)數(shù)據(jù)存儲區(qū),允許位與字節(jié)混合訪問(16字節(jié))idata間接尋址片內(nèi)數(shù)據(jù)存儲區(qū),可訪問片內(nèi)全部RAM地址空間(256字節(jié))pdata片外RAM的256字節(jié),由MOVX@Ri訪問xdata片外64KB的RAM空間,由MOVX@DPTR訪問code代碼存儲區(qū)(64KB),由MOVCA,@A+DPTR訪問C51存儲類型與MCS-51單片機存儲空間的對應(yīng)關(guān)系如下所示。在C51中對變量進行定義的格式如下:[存儲種類]數(shù)據(jù)類型[存儲類型]變量名;在程序中,用關(guān)鍵字_at_實現(xiàn)對指定存儲空間絕對地址的訪問,使用_at_的格式如下:
[存儲類型]數(shù)據(jù)類型變量名_at_地址常數(shù);尋址:尋找操作數(shù)所在單元的地址。尋址方式:CPU尋找操作數(shù)所在地址的方法。MCS-51有7種尋址方式:立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、變址尋址、相對尋址和位尋址。單片機的尋址方式(了解)尋址方式使用的變量尋址空間立即尋址直接給出數(shù)值,無變量ROM直接尋址直接給出地址,無變量片內(nèi)RAM低128字節(jié)、SFR寄存器尋址R0~R7、A、B、DPTR、位累加器C工作寄存器R0~R7,部分SFR寄存器間接尋址@R0、@R1、SP或@DPTR片內(nèi)RAM或片外RAM變址尋址@A+DPTR、@A+PCROM相對尋址PC+偏移量ROM位尋址直接給出位地址或位符號片內(nèi)RAM的位尋址區(qū)、SFR的可尋址位指令中直接給出操作數(shù)的尋址方式,經(jīng)典指令MOVA,#data。【例1】執(zhí)行MOVA,#68H結(jié)果:(A)=68H單片機的尋址方式-立即尋址注意:在立即數(shù)前必須使用“#”標志。尋址空間:ROM指令中直接給出操作數(shù)所在存儲單元的地址,經(jīng)典指令MOVA,direct?!纠?】若(30H)=56H,執(zhí)行MOVA,30H后,(A)=56H單片機的尋址方式-直接尋址尋址空間:片內(nèi)RAM低128字節(jié)SFR(一般采用符號形式替代直接地址,例:一般將MOVA,80H寫成MOVA,P0)操作數(shù)存放在寄存器中,指令中直接給出該寄存器名稱,經(jīng)典指令MOVA,Rn?!纠?】若(R1)=80H,執(zhí)行MOVA,R1后,(A)=80H單片機的尋址方式-寄存器尋址指令中給出的寄存器中存放的不是操作數(shù),而是操作數(shù)所在單元的地址。為了與寄存器尋址區(qū)別,應(yīng)在寄存器的名稱前面加前綴標志“@”,經(jīng)典指令MOVA,@Ri。
單片機的尋址方式-寄存器間接尋址【例4】若(R0)=40H,(40H)=30H,執(zhí)行MOVA,@R0后,(A)=30H。尋址空間:片內(nèi)RAM(@Ri、SP)通用形式:MOV指令@Ri(i=0,1)PUSH/POPdirect(SP發(fā)生相應(yīng)變化)52系列內(nèi)部RAM的高128B只能用該尋址方式片外RAM(@Ri、@DPTR)通用形式:MOVX指令@DPTR
MOVX指令@Ri(i=0,1)單片機的尋址方式-寄存器間接尋址以數(shù)據(jù)指針DPTR或程序計數(shù)器PC作基址寄存器,以累加器A作變址寄存器,并以兩者內(nèi)容相加形成操作數(shù)所在單元的地址,經(jīng)典指令MOVCA,@A+DPTR。尋址空間:ROM,尋址范圍可達到64KB。單片機的尋址方式-變址尋址【例5】若(DPTR)=1234H,(A)=60H,執(zhí)行MOVCA,@A+DPTR后,(A)=78H將程序計數(shù)器PC的當前值加上指令中給出的偏移量rel,結(jié)果作為目標地址的尋址方式。用于跳轉(zhuǎn)指令,實現(xiàn)程序的分支跳轉(zhuǎn)。單片機的尋址方式-相對尋址【例6】若JCL1存于0200H開始的單元,而L1對應(yīng)的地址是0277H單元,則可計算出rel為75H,該指令的機器碼是40H75H。如果PSW.7為1,執(zhí)行JCL1指令后,程序?qū)⑻D(zhuǎn)到0277H單元。因為SJMP是雙字節(jié)指令,則目標地址=(PC)+2-2=(PC)即轉(zhuǎn)移的目標地址就是SJMP指令的地址,在匯編指令中該偏移地址可用$符號表示。若在程序的末尾加上SJMP$指令,則程序?qū)⒃谠撎庍M行無限循環(huán),進入等待狀態(tài)。若SJMPrel中的rel=FEH(-2),目標地址=?單片機的尋址方式-相對尋址對片內(nèi)RAM的位尋址區(qū)和某些可位尋址的特殊功能寄存器進行位操作時的尋址方式,經(jīng)典指令MOVC,bit?!纠?】若位地址20H內(nèi)容為1,執(zhí)行MOVC,20H后,位地址PSW.7的內(nèi)容為1。單片機的尋址方式-位尋址在C51中的關(guān)鍵字除了ANSIC標準的32個關(guān)鍵字之外,還根據(jù)MCS-51單片機的特點擴展了相關(guān)的關(guān)鍵字,右表按用途列出了KeilC51編譯器擴展的關(guān)鍵字。3.1.2
C51對標準C的擴展關(guān)鍵字用途說明_at_地址定位為變量進行存儲器絕對空間地址定位alien函數(shù)特性聲明用于聲明與PL/M51兼容函數(shù)small存儲器模式指定使用內(nèi)部數(shù)據(jù)存儲器空間compact存儲器模式指定使用外部“分頁尋址”數(shù)據(jù)存儲器空間large存儲器模式指定使用外部數(shù)據(jù)存儲器空間code存儲器類型聲明聲明程序存儲器空間data存儲器類型聲明指定直接尋址的內(nèi)部數(shù)據(jù)存儲器bdata存儲器類型聲明指定可位尋址的內(nèi)部數(shù)據(jù)存儲器idata存儲器類型聲明指定間接尋址的內(nèi)部數(shù)據(jù)存儲器pdata存儲器類型聲明指定“分頁尋址”的外部數(shù)據(jù)存儲器xdata存儲器類型聲明指定外部數(shù)據(jù)存儲器bit位變量聲明聲明位變量sbit位變量聲明聲明一個可位尋址變量sfr特殊功能寄存器聲明聲明一個8位的特殊功能寄存器sfr16特殊功能寄存器聲明聲明一個16位的特殊功能寄存器interrupt中斷函數(shù)聲明定義一個中斷服務(wù)函數(shù)using工作寄存器組定義定義工作寄存器組R0~R7_priority_多任務(wù)優(yōu)先聲明規(guī)定RTX或RTX51Tiny的任務(wù)優(yōu)先級reentrant再入函數(shù)聲明定義一個再入函數(shù)_task_任務(wù)聲明定義實時多任務(wù)函數(shù)3.3.2變量-C51擴展數(shù)據(jù)類型數(shù)據(jù)類型位數(shù)字節(jié)數(shù)值域bit1/0或1sfr810~255sfr161620~65535sbit1/0或1(1)位變量bitbit用于定義位變量的名字,編譯器會對其分配地址。位變量分配在內(nèi)部RAM的20H~2FH單元相應(yīng)的位區(qū)域,位地址范圍是00~7FH,共128個。用bit定義位變量的值可以是1,也可以是0。定義方法如下:針對MCS-51單片機的硬件特點,C51在標準C的基礎(chǔ)上,擴展了4種數(shù)據(jù)類型,主要針對單片機片內(nèi)存儲區(qū)RAM。bit 位變量;(2)特殊功能寄存器sfr和sfr16特殊功能寄存器分布在片內(nèi)數(shù)據(jù)存儲區(qū)的地址單元80H~FFH之間。“sfr”數(shù)據(jù)類型占用一個內(nèi)存單元,利用它可以直接對MCS-51單片機的特殊功能寄存器進行定義。“sfr16”數(shù)據(jù)類型則占兩個內(nèi)存單元,利用它可以定義占兩個字節(jié)的特殊功能寄存器,在定義時的地址選用低位地址。定義方法如下:sfr
特殊功能寄存器名=地址;sfr16
特殊功能寄存器名=地址;3.3.2變量-C51擴展數(shù)據(jù)類型(3)特殊功能位sbitsbit用于定義位變量的名字和地址。被定義的位變量是SFR中的可以進行位尋址的確定位,該位變量的絕對地址是確定的且不用編譯器分配。利用sbit定義位變量名字和地址的方法有如下三種。①第一種方法(將位的絕對地址賦給位變量,位地址必須位于80H~FFH之間)。注意:不要把bit與sbit混淆。bit直接用于定義位變量,而sbit用于定義位變量的名字和地址。sbit 位變量名=位地址;②第二種方法(可尋址位位于特殊功能寄存器中)sbit 位變量名=特殊功能寄存器名^位位置;③第三種方法sbit 位變量名=字節(jié)地址^位位置;3.3.2變量-C51擴展數(shù)據(jù)類型文件包含是將另一個指定的文件內(nèi)容包含進來。文件包含命令的一般格式為:#include的功能是用指定文件的全部內(nèi)容替換該預(yù)處理行。采用<文件名>格式時,在頭文件目錄中查找指定文件;采用"文件名"格式時,在當前目錄中査找指定文件,若沒找到,再到頭文件目錄中查找。#include通常放在C語言程序的開頭,被包含文件的類型通常為以“.h”為后綴的頭文件和以“.c”為后綴的源程序文件。#include<文件名>或#include"文件名"3.2.2C51的編譯預(yù)處理-文件包含3.2.2C51的編譯預(yù)處理-宏定義宏定義命令為#define,作用是用一個標識符替換一個字符串。(1)不帶參數(shù)的宏定義。不帶參數(shù)的宏定義又稱符號常量定義,一般格式為:#define標識符常量表達式(2)帶參數(shù)的宏定義。帶參數(shù)的宏定義與符號常量定義的不同之處在于,對于源程序中出現(xiàn)的宏符號名不僅進行字符串替換,而且還進行參數(shù)替換。帶參數(shù)宏定義的一般格式為:#define宏符號名(參數(shù)表)表達式3.3.1常量常量又稱為標量,它的值在程序執(zhí)行過程中不能改變。常量的數(shù)據(jù)類型有:1.整型。1234(十進制整數(shù))、0x123(十六進制整數(shù))、0123L(長整數(shù))。2.浮點型。有十進制數(shù)表示形式和指數(shù)表示形式兩種。3.字符型。單引號內(nèi)的字符,如'a','b'等。對于不可顯示的控制字符,可以在該字符前面加一個反斜杠“\”組成轉(zhuǎn)義字符。4.字符串型。由雙引號""內(nèi)的字符組成,如"ABCD"、"$1234"等。3.3C51的基本語法變量是一種在程序執(zhí)行過程中其值能不斷變化的量。在使用一個變量之前,必須要進行定義,用一個標識符作為變量名并指出它的數(shù)據(jù)類型和存儲類型,以便編譯系統(tǒng)為它分配相應(yīng)的存儲單元。在C51中對變量進行定義的格式如下:3.3.2變量[存儲種類]數(shù)據(jù)類型[存儲類型]變量名;變量的存儲種類有四種:自動(auto)、外部(extern)、靜態(tài)(static)和寄存器(register)。3.3.2變量-標準C數(shù)據(jù)類型數(shù)據(jù)類型位數(shù)字節(jié)數(shù)值域signedchar81-128~+127,有符號字符變量unsignedchar810~25
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度高端不銹鋼門工程安裝與維護服務(wù)合同3篇
- 二零二五版控制權(quán)爭奪下的企業(yè)并購法律服務(wù)合同3篇
- 二零二五年范文合同失效通知模板與說明3篇
- 二零二五版企業(yè)訂餐福利管理合同3篇
- 2025年P(guān)VC管材綠色生產(chǎn)供應(yīng)鏈采購銷售合同3篇
- 居民住宅改為商用合同(2篇)
- 二零二五年房屋租賃合同出租人租賃房屋租賃權(quán)租賃合同9篇
- 二零二五年度電子信息材料采購合同范本3篇
- 2025年度生物制藥行業(yè)質(zhì)量控制合同3篇
- 2025年度人工智能產(chǎn)業(yè)園區(qū)建設(shè)與運營合同3篇
- 湖南省建設(shè)工程施工階段監(jiān)理服務(wù)費計費規(guī)則【實用文檔】doc
- GB/T 6913-2008鍋爐用水和冷卻水分析方法磷酸鹽的測定
- GB/T 18717.2-2002用于機械安全的人類工效學設(shè)計第2部分:人體局部進入機械的開口尺寸確定原則
- 教案:第三章 公共管理職能(《公共管理學》課程)
- 中國文化概論(第三版)全套課件
- 117-鋼結(jié)構(gòu)工程質(zhì)量常見問題與管控措施
- SHS5230三星指紋鎖中文說明書
- 諾和關(guān)懷俱樂部對外介紹
- 保定市縣級地圖PPT可編輯矢量行政區(qū)劃(河北省)
- 新蘇教版科學六年級下冊全冊教案(含反思)
- 供方注冊指南-ZTE
評論
0/150
提交評論