單片機(jī)應(yīng)用技術(shù)課件_第1頁(yè)
單片機(jī)應(yīng)用技術(shù)課件_第2頁(yè)
單片機(jī)應(yīng)用技術(shù)課件_第3頁(yè)
單片機(jī)應(yīng)用技術(shù)課件_第4頁(yè)
單片機(jī)應(yīng)用技術(shù)課件_第5頁(yè)
已閱讀5頁(yè),還剩277頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

51架構(gòu)與51系列單片機(jī)概述22-1.51單片機(jī)概述51單片機(jī)的起源1980年Intel推出首款8位單片機(jī)-8051Intel在80-82年陸續(xù)推出和8051指令系統(tǒng)完全相同,內(nèi)部結(jié)構(gòu)基本相同的8031、8052和8032等型號(hào)單片機(jī),初步形成MCS-51系列,被奉為“工業(yè)控制單片機(jī)標(biāo)準(zhǔn)”84年intel出售了8051的核心技術(shù)PHILIPSATMELADICYGNALMAXIM&DALLSSEMICONDUCTOR發(fā)展至今形成一個(gè)有近千種型號(hào)的龐大的51單片機(jī)家族。32-1.51單片機(jī)概述51系列單片機(jī)的鼻祖——80511980年誕生于美國(guó)intel公司8bit數(shù)據(jù)寬度最高運(yùn)算速度1MPS可以進(jìn)行乘法運(yùn)算片內(nèi)4KbyteROM,128byteRAM64K尋址5級(jí)中斷管理、2個(gè)16bit定時(shí)器UART串口、4×8bit并口42-1.51單片機(jī)概述51系列單片機(jī)的遺傳基因兼容的指令系統(tǒng)相同的指令相同的語(yǔ)法相同的基本結(jié)構(gòu)——51架構(gòu)引腳兼容52-2.51架構(gòu)(51Architecture)串行通信接口全雙工1個(gè)ROMTXDRXD中斷系統(tǒng)并行通信接口4×8bit定時(shí)/計(jì)數(shù)器n×16bitRAM時(shí)鐘電路CPU總線控制62-2.51架構(gòu)(51Architecture)8051內(nèi)部ROMROM:ReadOnlyMemory(只讀存儲(chǔ)器)

一般用于存放程序和表格等不常改變的數(shù)據(jù)常見(jiàn)的ROM種類:掩膜ROM(MaskedROM)EPROM(ElectricallyProgrammableROM)EEPROM(E2PROM)FlashROMOTPROM(OneTimeProgrammableROM)8051單片機(jī)的ROM是掩摸ROM:

容量:4096byte(212)

地址范圍:0000H~1FFFH72-2.51架構(gòu)(51Architecture)8051內(nèi)部RAMRAM:RandomAccessMemory(隨機(jī)存儲(chǔ)器)

一般用于存放程序執(zhí)行過(guò)程中產(chǎn)生的大量的臨時(shí)數(shù)據(jù),相當(dāng)于PC的內(nèi)存。

8051單片機(jī)的內(nèi)部RAM:

容量:

128字節(jié)

地址范圍:

00H~7FH82-2.51架構(gòu)(51Architecture)8051的CPU-CentralProcessingUnit(中央處理單元)作用:控制協(xié)調(diào)片內(nèi)各部分的工作時(shí)序邏輯控制和片外聯(lián)絡(luò)的時(shí)序邏輯運(yùn)算加法運(yùn)算減法運(yùn)算乘法運(yùn)算除法運(yùn)算布爾邏輯運(yùn)算(與、或、非、異或、移位等)92-3.8051單片機(jī)引腳功能描述P1口P3口P0口P2口

時(shí)鐘端

復(fù)位端控制信號(hào)

接VCC(+5V)

接地端102-4.常見(jiàn)51系列單片機(jī)51單片機(jī)的改進(jìn)方向制造工藝更新為CHMOS工藝(型號(hào)中含C)

特點(diǎn):低功耗、高速、電平兼容TTL和CMOS

比如:89C51、80C51采用Pipeline(流水線)進(jìn)一步提高運(yùn)算速度

8051:1MIPSC8051Fxx:25MIPS片內(nèi)植入A/D、D/A、PCA等功能模塊向SOC(SystemOnChip)發(fā)展片內(nèi)存儲(chǔ)器擴(kuò)展和改型—FlashROM、OTPROM引入更多的通信方式如SPI、SCI、I2C等采用更小的封裝和功耗112-4.常見(jiàn)51系列單片機(jī)Philips80C51系列單片機(jī)

Philips8位8051單片機(jī)系列提供完整的產(chǎn)品類型,包括Flash、OTP(一次性編程)、ROM和無(wú)ROM器件。由于為實(shí)時(shí)應(yīng)用而設(shè)計(jì),這些80C51器件可以廣泛應(yīng)用于從消費(fèi)類產(chǎn)品、計(jì)算機(jī)外設(shè)到自動(dòng)化系統(tǒng)的各種領(lǐng)域。

122-4.常見(jiàn)51系列單片機(jī)Philips公司的P89LPC7XX系列OTP單片機(jī)P87LPCXX是20腳以下小型封裝的單片機(jī),適合于許多要求高集成度、低成本的場(chǎng)合。采用加速80C51處理器結(jié)構(gòu),指令執(zhí)行速度是標(biāo)準(zhǔn)80C51CPU的兩倍,有內(nèi)部看門(mén)狗定時(shí)器,提供高速和低速的晶振和RC振蕩方式,可編程選擇。132-4.常見(jiàn)51系列單片機(jī)Philips公司的P89LPC90X系列單片機(jī)

P89LPC90X是一系列8腳的單片封裝的微控制器,適合于許多要求高集成度、低成本的場(chǎng)合,可以滿足多方面的性能要求。P89LPC90X系列器件內(nèi)部集成了許多系統(tǒng)級(jí)的功能,這樣可大大減少元件的數(shù)目和電路板面積并降低系統(tǒng)的成本。內(nèi)部Flash同時(shí)用作E2PROM使用,內(nèi)含RTC日歷時(shí)鐘功能。

142-4.常見(jiàn)51系列單片機(jī)Philips公司的P89LPC91X系列單片機(jī)

152-4.常見(jiàn)51系列單片機(jī)Philips公司的P89LPC92X系列單片機(jī)

162-4.常見(jiàn)51系列單片機(jī)Philips公司的P89LPC93X系列單片機(jī)

172.5增強(qiáng)型51單片機(jī)-P89V51RD2P89V51RD2單片機(jī)簡(jiǎn)介P89V51RD2XX是Philips公司推出的一款增強(qiáng)型51單片機(jī),以8051為內(nèi)核,并在8051基礎(chǔ)上做了較大改進(jìn),性能比8051有很大提升。存儲(chǔ)器:程序存儲(chǔ)器:64KBFlash數(shù)據(jù)存儲(chǔ)器:1024B時(shí)鐘:頻率:0~40MHz6時(shí)鐘/12時(shí)鐘可選定時(shí)器/計(jì)數(shù)器:3個(gè)16位的定時(shí)器/計(jì)數(shù)器可編程計(jì)數(shù)器陣列(PCA)—PWM功能中斷資源:中斷源:8個(gè)中斷優(yōu)先級(jí):4級(jí)安全性:可編程看門(mén)狗定時(shí)器(WDT)掉電檢測(cè)18CPU64KB程序FLASH1KB數(shù)據(jù)存儲(chǔ)器PORT38-bitPORT28-bitPORT18-bitPORT08-bit片內(nèi)時(shí)鐘振蕩電路可編程全雙工串行通信口SPI(串行外圍接口)16-bit定時(shí)/計(jì)數(shù)器T0、T1晶體/阻容振蕩器RXDT0T1P2.0-P2.7P1.0-P1.7P0.0-P0.78-bit16-bit定時(shí)/計(jì)數(shù)器T2PCA(可編程計(jì)數(shù)器陣列)看門(mén)狗定時(shí)器內(nèi)部總線TXDP3.0-P3.72.5增強(qiáng)型51單片機(jī)-P89V51RD2P89V51RD2單片機(jī)內(nèi)部結(jié)構(gòu)框圖193-1.51架構(gòu)與51單片機(jī)的內(nèi)部存儲(chǔ)器51架構(gòu)串行通信接口全雙工1個(gè)內(nèi)部ROMTXDRXD中斷系統(tǒng)并行通信接口4×8bit定時(shí)/計(jì)數(shù)器n×16bit內(nèi)部RAM時(shí)鐘電路CPU總線控制203-1.51架構(gòu)與51單片機(jī)的內(nèi)部存儲(chǔ)器51架構(gòu)單片機(jī)內(nèi)部存儲(chǔ)器內(nèi)部ROM內(nèi)部RAMROM:ReadOnlyMemory

只讀作用:存儲(chǔ)程序或表格類型:EPROM/FLASH/OTP容量:0~64K(0~65536)

單位-字節(jié)(byte)

容量大小視單片機(jī)型號(hào)不同而不同地址:0000H~RAM:RandomAccessMemory

可讀可寫(xiě)作用:存放程序運(yùn)行中產(chǎn)生的臨時(shí)數(shù)據(jù)容量:128byte~

容量大小視單片機(jī)型號(hào)不同而不同類型:DATA000~127IDATA128~255XDATA000~218051單片機(jī)和P89V51RD2單片機(jī)的內(nèi)部存儲(chǔ)器對(duì)比

P89V51RD2(增強(qiáng)型51MCU)80513-1.51架構(gòu)與51單片機(jī)的內(nèi)部存儲(chǔ)器ROM:PROM(掩膜ROM)

4KByte0000H~1FFFHRAM:DATA-128Byte 00~7FHSFR:21個(gè)

80~FFHROM:FlashMemory64KByte0000H~FFFFHRAM:DATA-128Byte00~7FHIDATA-128Byte80~FFHXDATA-768Byte00~2FFHSFR:62個(gè)

80~FFH223-2.51單片機(jī)的程序存儲(chǔ)器管理關(guān)于51系列單片機(jī)的程序存儲(chǔ)器ROM程序存儲(chǔ)器用于存放程序和表格等固定數(shù)據(jù),掉電數(shù)據(jù)不丟失每種單片機(jī)在其內(nèi)部都會(huì)有0~64K容量不等的ROM如果單片機(jī)片內(nèi)ROM空間不夠,可以在單片機(jī)外部擴(kuò)展ROM,但建議用戶盡量避免外擴(kuò)ROM,51系列單片機(jī)1000多種型號(hào),一定可以找到內(nèi)部ROM容量符合要求的單片機(jī)。即便是單片機(jī)略微貴點(diǎn)也值得目前市面上的單片機(jī)ROM主要有FlashMemory和OTP(OneTimeProgrammable)兩種,PROM、EPROM等形式的單片機(jī)已經(jīng)很少見(jiàn)了。就開(kāi)發(fā)而言FlashMemory的單片機(jī)更加合適,如ATMEL公司的AT89CXX單片機(jī)和PHILIPS公司的P89CXX單片機(jī)233-2.51單片機(jī)的程序存儲(chǔ)器管理51系列單片機(jī)的程序存儲(chǔ)器管理每個(gè)ROM單元(byte)對(duì)應(yīng)一個(gè)唯一的16bit地址編碼(Address)CPU要到某個(gè)ROM單元去取指令,是通過(guò)把地址寫(xiě)入一個(gè)16bit的特殊功能寄存器——程序計(jì)數(shù)器PC(ProgramCounter)來(lái)實(shí)現(xiàn),因此,51系列單片機(jī)的地址的編碼范圍(通常稱為尋址范圍):

0000000000000000B~1111111111111111B(二進(jìn)制)

0000H~FFFFH(十六進(jìn)制)

0~65535(十進(jìn)制)

通常習(xí)慣說(shuō)51系列單片機(jī)的ROM尋址范圍是64KPC的值是CPU根據(jù)用戶程序的運(yùn)行流程自動(dòng)裝載的,它的值代表單片機(jī)下一條要執(zhí)行的指令在ROM中的存放位置,用戶不能直接對(duì)PC進(jìn)行操作243-2.51單片機(jī)的程序存儲(chǔ)器管理51單片機(jī)程序存儲(chǔ)器分配0000H

:系統(tǒng)的啟動(dòng)單元系統(tǒng)復(fù)位后,單片機(jī)從此處開(kāi)始取指令開(kāi)始執(zhí)行0003H

:外部中斷0入口地址000BH

:定時(shí)器/計(jì)數(shù)器0中斷入口地址0013H:外部中斷1入口地址001BH

:定時(shí)器/計(jì)數(shù)器1中斷入口地址0023H

:串行中斷入口地址2551單片機(jī)外擴(kuò)ROM方法強(qiáng)烈建議用戶盡可能不要考慮外擴(kuò)程序存儲(chǔ)器,如果非擴(kuò)不可,可以仿照下圖所示電路進(jìn)行擴(kuò)展圖中P0口輸出外部ROM的低8位地址信號(hào),P2口輸出高8位地址信號(hào);ALE端輸出地址鎖存信號(hào),/PSEN輸出程序存儲(chǔ)器輸出使能信號(hào)。3-3.51單片機(jī)的ROM擴(kuò)展263-4.增強(qiáng)型51單片機(jī)P89V51RD2的內(nèi)部ROM兩個(gè)模塊P89V51RD2單片機(jī)內(nèi)部有64K用戶ROM區(qū)和8KBOOTROM區(qū)兩個(gè)模塊1FFFH8KbyteBootROM模塊0:存放用戶程序0000HFFFFH64Kbyte用戶ROMFlash0000H模塊1:存放ISP引導(dǎo)程序和IAP函數(shù)兩個(gè)模塊在物理上是分開(kāi)的,盡管地址重合,但一般不會(huì)發(fā)生沖突。273-4.增強(qiáng)型51單片機(jī)P89V51RD2的內(nèi)部ROM用戶程序存儲(chǔ)區(qū)P89V51RD2內(nèi)部有64KFlashROM,不需要用戶再進(jìn)行ROM擴(kuò)展地址范圍:0000H~FFFFH其內(nèi)部分配和其他51系列單片機(jī)是相同的FlashROM可以反復(fù)擦除和下載程序擦除和編程的方法并行編程器ISP(在系統(tǒng)編程:In-SystemProgram)直接調(diào)用單片機(jī)BOOTROM區(qū)的IAP函數(shù)

IAP(在應(yīng)用編程:In-ApplicationProgram)一般情況下優(yōu)先使用ISP方式,更方便、更快捷283-4.增強(qiáng)型51單片機(jī)P89V51RD2的內(nèi)部ROM關(guān)于BOOTROM區(qū)存儲(chǔ)介質(zhì):FlashMemory容量:8K字節(jié)存儲(chǔ)內(nèi)容:ISP引導(dǎo)程序和IAP函數(shù)這些程序出廠時(shí)已經(jīng)由PHILIPS已經(jīng)寫(xiě)入,用戶可以對(duì)其修改,但建議一般用戶不要試圖修改它。單片機(jī)在復(fù)位后會(huì)等待400ms,如果在此期間用戶在上位計(jì)算機(jī)上運(yùn)行了FlashMagic等類似ISP軟件,且串口通信正常,單片機(jī)將進(jìn)入BOOTROM區(qū)運(yùn)行ISP引導(dǎo)程序;否則,單片機(jī)在400ms以后將自動(dòng)從用戶ROM區(qū)0000H單元開(kāi)始運(yùn)行用戶程序4-1.51系列單片機(jī)的RAM結(jié)構(gòu)51系列單片機(jī)RAM結(jié)構(gòu)圖片外擴(kuò)展RAM低128字節(jié)RAM內(nèi)部擴(kuò)展RAM高128字節(jié)RAM特殊功能寄存器區(qū)00H7FH80HFFH片內(nèi)片外在上圖中,單片機(jī)內(nèi)部低128字節(jié)RAM和特殊功能寄存器區(qū)是每種51單片機(jī)都具備的,高128字節(jié)RAM和內(nèi)部擴(kuò)展RAM只是部分增強(qiáng)型單片機(jī)才具有。大多數(shù)單片機(jī)應(yīng)用系統(tǒng)都需要片外擴(kuò)展RAM,但不絕對(duì)。4-2.51單片機(jī)的數(shù)據(jù)存儲(chǔ)器管理51系列單片機(jī)的數(shù)據(jù)存儲(chǔ)器管理51系列單片機(jī)對(duì)數(shù)據(jù)存儲(chǔ)器RAM的管理是通過(guò)16bit的特殊功能寄存器DPTR(DataPointer)來(lái)實(shí)現(xiàn),每個(gè)RAM單元(byte)也對(duì)應(yīng)一個(gè)特定的地址編碼(Address),因此,51系列單片機(jī)的地址的編碼范圍(通常稱為尋址范圍):

0000000000000000B~1111111111111111B(二進(jìn)制)

0000H~FFFFH(十六進(jìn)制)

0~65535(十進(jìn)制)

因此51系列單片機(jī)的RAM尋址范圍也是64K51系列單片機(jī)ROM和RAM的地址編碼范圍都是0000H~FFFFH,但由于在尋址時(shí)硬件電路上有區(qū)別,所以不會(huì)混淆。51系列單片機(jī)中,單片機(jī)外接的接口芯片如A/D、D/A等都有互不相同的地址,這些地址都是占用單片機(jī)外部RAM的地址編號(hào)。4-2.51單片機(jī)的數(shù)據(jù)存儲(chǔ)器管理51系列單片機(jī)的數(shù)據(jù)存儲(chǔ)器管理目前的51系列單片機(jī)視型號(hào)不同內(nèi)部有128-1024byte不等的RAM空間。用戶最好選擇合適的單片機(jī)型號(hào),避免外擴(kuò)RAM存儲(chǔ)器。4-2.51單片機(jī)的數(shù)據(jù)存儲(chǔ)器管理標(biāo)準(zhǔn)51系列單片機(jī)的內(nèi)部RAM所有51單片機(jī)內(nèi)部都含有低128B字節(jié)RAM和特殊功能寄存器區(qū)。低128字節(jié)RAM內(nèi)部擴(kuò)展RAM高128字節(jié)RAM特殊功能寄存器區(qū)00H7FH80HFFH低128字節(jié)RAM特殊功能寄存器區(qū)00H7FH80HFFH低128字節(jié)RAM32字節(jié)工作寄存器區(qū)16字節(jié)位尋址區(qū)00H2FH7FH80字節(jié)用戶區(qū)1FH20H30H低128字節(jié)RAM4-2.51單片機(jī)的數(shù)據(jù)存儲(chǔ)器管理標(biāo)準(zhǔn)51系列單片機(jī)的內(nèi)部RAM——低128B低端32個(gè)字節(jié)分成4個(gè)工作寄存器組,每組8個(gè)單元(R0~R7)。當(dāng)前工作寄存器組的機(jī)制便于快速現(xiàn)場(chǎng)保護(hù)。特殊功能寄存器PSW的RS1、RS0兩位決定當(dāng)前工作寄存器組號(hào)。32字節(jié)工作寄存器區(qū)16字節(jié)位尋址區(qū)00H2FH7FH80字節(jié)用戶區(qū)1FH20H30H0組00H10H08H18H1組2組3組1FH32字節(jié)工作寄存器區(qū)組號(hào)RS1RS0R7R6R5R4R3R2R1R000007H06H05H04H03H02H01H00H1010FH0EH0DH0CH0BH0AH09H08H21017H16H15H14H13H12H11H10H3111FH1EH1DH1CH1BH1AH19H18H4-2.51單片機(jī)的數(shù)據(jù)存儲(chǔ)器管理標(biāo)準(zhǔn)51系列單片機(jī)的內(nèi)部RAM——低128B32字節(jié)工作寄存器區(qū)16字節(jié)位尋址區(qū)00H2FH7FH80字節(jié)用戶區(qū)1FH20H30H16字節(jié)位尋址區(qū)4-2.51單片機(jī)的數(shù)據(jù)存儲(chǔ)器管理標(biāo)準(zhǔn)51系列單片機(jī)的內(nèi)部RAM——低128B該區(qū)域每個(gè)單元可以作為一般RAM單元整體使用。例如:MOV20H,#23H;將20H單元賦值為23H指令執(zhí)行后:?jiǎn)卧忻恳晃灰部梢宰鳛楠?dú)立的可尋址位單獨(dú)使用。

例如:20H單元的最低位可表示為

00H——位地址20H.0——存儲(chǔ)單元地址加位例如:SETB20H;將24H單元的最低位置為1

指令執(zhí)行后:32字節(jié)工作寄存器區(qū)16字節(jié)位尋址區(qū)00H2FH7FH80字節(jié)用戶區(qū)1FH20H30H0010001120H24H0000000120H位地址單元地址單元地址4-2.51單片機(jī)的數(shù)據(jù)存儲(chǔ)器管理標(biāo)準(zhǔn)51系列單片機(jī)的內(nèi)部RAM——低128B位尋址區(qū)之后的30H-7FH共80個(gè)字節(jié)為通用RAM區(qū),也稱用戶區(qū),這些單元可以作為數(shù)據(jù)緩沖器使用。這一區(qū)域的操作指令非常豐富,數(shù)據(jù)處理方便靈活。在實(shí)際應(yīng)用中,常需在此區(qū)設(shè)置堆棧。32字節(jié)工作寄存器區(qū)16字節(jié)位尋址區(qū)00H2FH7FH80字節(jié)用戶區(qū)1FH20H30H4-2.51單片機(jī)的數(shù)據(jù)存儲(chǔ)器管理標(biāo)準(zhǔn)51系列單片機(jī)的內(nèi)部RAM——堆棧堆?!窃赗AM區(qū)中劃定的一個(gè)區(qū)域,對(duì)該區(qū)域RAM單元的讀寫(xiě)操作必須遵守特定的順序。比如先入先出,或先入后出原則。堆棧的作用——主要用在子程序的調(diào)用過(guò)程中或作為特殊的數(shù)據(jù)交換區(qū)。堆棧的開(kāi)辟棧頂?shù)奈恢糜蒘P(堆棧指針)寄存器指示。復(fù)位時(shí)SP的初值為07H,在系統(tǒng)初始化時(shí)可以根據(jù)用戶的需要重新設(shè)置。標(biāo)準(zhǔn)8051的堆棧一般設(shè)在30H~7FH的范圍內(nèi)。XYZ4-2.51單片機(jī)的數(shù)據(jù)存儲(chǔ)器管理標(biāo)準(zhǔn)51系列單片機(jī)的內(nèi)部RAM——堆棧堆棧的操作65H64H63H62H61H棧底60H59H內(nèi)部RAMPUSHPUSHPUSHXYZ入棧過(guò)程65H64H63H62H61H棧底60H59H內(nèi)部RAMPOPLPOPMPOPN

XYZ出棧過(guò)程先入后出后入先出4-2.51單片機(jī)的數(shù)據(jù)存儲(chǔ)器管理標(biāo)準(zhǔn)51系列單片機(jī)的內(nèi)部RAM——SFR51單片機(jī)內(nèi)部都含有128B的特殊功能寄存器區(qū),其地址為80H—FFH。但不同的單片機(jī)內(nèi)部特殊功能寄存器的個(gè)數(shù)是不等的。這些特殊功能寄存器用于存放單片機(jī)中相應(yīng)功能部件的控制命令、狀態(tài)或數(shù)據(jù)。低128字節(jié)RAM特殊功能寄存器區(qū)00H7FH80HFFH特殊功能寄存器區(qū)4-2.51單片機(jī)的數(shù)據(jù)存儲(chǔ)器管理標(biāo)準(zhǔn)51系列單片機(jī)的內(nèi)部RAM—SFR列舉其中的幾個(gè):寄存器位地址/位名稱符號(hào)地址ACC0E0H0E7H0E6H0E5H0E4H0E3H0E2H0E1H0E0HB0F0H0F7H0F6H0F5H0F4H0F3H0F2H0F1H0F0HPSW0D0H0D7H0D6H0D5H0D4H0D3H0D2H0D1H0D0HCYACF0RS1RS0OV-PDPL82HDPH83H4-2.51單片機(jī)的數(shù)據(jù)存儲(chǔ)器管理標(biāo)準(zhǔn)51系列單片機(jī)的內(nèi)部RAM—SFR使用方法:在這個(gè)存儲(chǔ)區(qū)中,除了特殊功能寄存器之外剩余的空閑單元,用戶不得使用;必須使用直接尋址方式進(jìn)行訪問(wèn),可使用寄存器的名稱或地址:

例如:0E0H——累加器的地址

A——累加器的名稱只有具有位地址和位名稱的寄存器才可以位尋址;

例如:0D7H——程序狀態(tài)字最高位的位地址

CY——程序狀態(tài)字最高位的位名稱

0D0H.7——程序狀態(tài)字字節(jié)地址加位

PSW.7——程序狀態(tài)字字節(jié)名稱加位4-3.增強(qiáng)型51單片機(jī)P89V51RD2的內(nèi)部RAM內(nèi)部RAM容量為1KB,增加了高128B和擴(kuò)展RAM(768B)。低128字節(jié)RAM內(nèi)部擴(kuò)展RAM高128字節(jié)RAM特殊功能寄存器區(qū)00H7FH80HFFH000H2FFH4-3.增強(qiáng)型51單片機(jī)P89V51RD2的內(nèi)部RAM內(nèi)部高128B具有和SFR區(qū)相同的地址;訪問(wèn)方式——必須使用間接尋址方式訪問(wèn)例:給90H單元賦值30H可采用如下方式:MOVR0,#90H;指向90H單元MOV@R0,#30H;賦值為30H低128字節(jié)RAM內(nèi)部擴(kuò)展RAM高128字節(jié)RAM特殊功能寄存器區(qū)00H7FH80HFFH000H2FFH4-3.增強(qiáng)型51單片機(jī)P89V51RD2的內(nèi)部RAM低128字節(jié)RAM內(nèi)部擴(kuò)展RAM高128字節(jié)RAM特殊功能寄存器區(qū)00H7FH80HFFH000H2FFH內(nèi)部擴(kuò)展RAM000H2FFH內(nèi)部擴(kuò)展RAM(768B):000H~2FFH訪問(wèn)受AUXR(輔助寄存器)中的EXTRAM位控制擴(kuò)展RAM2FFH000HFFFFH0000H間接尋址外部數(shù)據(jù)存儲(chǔ)器EXTRAM=0EXTRAM=10300HFFFFH間接尋址外部數(shù)據(jù)存儲(chǔ)器內(nèi)部擴(kuò)展RAM(768B):000H~2FFH訪問(wèn)方式——間接尋址訪問(wèn)訪問(wèn)指令——MOVX例如:訪問(wèn)內(nèi)部擴(kuò)展RAM中0A0H單元可采用:方法一:MOVR0,#0A0HMOVXA,@R0方法二:MOVDPTR,#00A0HMOVXA,@DPTR4-3.增強(qiáng)型51單片機(jī)P89V51RD2的內(nèi)部RAM內(nèi)部擴(kuò)展RAM000H2FFH465-1.標(biāo)準(zhǔn)80C51的時(shí)鐘電路、時(shí)間單位與時(shí)序時(shí)鐘電路

——用于產(chǎn)生供單片機(jī)各部分同步工作的時(shí)鐘信號(hào)方法1:用石英晶體振蕩器方法2:從外部輸入時(shí)鐘信號(hào)(80C51)47單片機(jī)內(nèi)部的時(shí)間單位5-1.標(biāo)準(zhǔn)80C51的時(shí)鐘電路、時(shí)間單位與時(shí)序S1S2S3S4S5S6機(jī)器周期TCY分頻器振蕩器晶振周期時(shí)鐘周期(S狀態(tài))80C51P1P2ALE信號(hào)48單片機(jī)內(nèi)部的時(shí)間單位振蕩頻率fosc=

石英晶體頻率或外部輸入時(shí)鐘頻率

振蕩周期=振蕩頻率的倒數(shù)機(jī)器周期機(jī)器周期是單片機(jī)應(yīng)用中衡量時(shí)間長(zhǎng)短的最主要的單位在多數(shù)51系列單片機(jī)中:指令周期——

執(zhí)行一條指令所需要的時(shí)間單位:機(jī)器周期

51單片機(jī)中:?jiǎn)沃芷谥噶?、雙周期指令、四周期指令5-1.標(biāo)準(zhǔn)80C51的時(shí)鐘電路、時(shí)間單位與時(shí)序1機(jī)器周期=12×1/fosc49單片機(jī)內(nèi)部的時(shí)間單位課堂練習(xí):如果某單片機(jī)的振蕩頻率fosc=12MHz,則:振蕩周期=

S=

mS=

uS;機(jī)器周期=

uS;已知乘法指令“MULAB”是一條4周期指令,則執(zhí)行這條指令需要

uS;加法指令“ADDA,#01H”是單周期指令,那么1S內(nèi)該單片機(jī)可以進(jìn)行

次加法運(yùn)算。5-1.標(biāo)準(zhǔn)80C51的時(shí)鐘電路、時(shí)間單位與時(shí)序50單片機(jī)內(nèi)部的時(shí)序單片機(jī)執(zhí)行各種操作時(shí),CPU都是嚴(yán)格按照規(guī)定的時(shí)間順序完成相關(guān)的工作,這種時(shí)間上的先后順序成為時(shí)序。單周期指令的操作時(shí)序5-1.標(biāo)準(zhǔn)80C51的時(shí)鐘電路、時(shí)間單位與時(shí)序

單字節(jié)指令雙字節(jié)指令515-1.標(biāo)準(zhǔn)80C51的時(shí)鐘電路、時(shí)間單位與時(shí)序單片機(jī)內(nèi)部的時(shí)序雙周期指令的操作時(shí)序525-2.P89V51RD2單片機(jī)的時(shí)鐘電路、時(shí)間單位與時(shí)序時(shí)鐘電路時(shí)鐘電路參數(shù):頻率范圍:0~40MHzC1、C2:20~30pF80C51振蕩器C1C2CYSXTAL2XTAL1535-2.P89V51RD2單片機(jī)的時(shí)鐘電路、時(shí)間單位與時(shí)序P89V51RD2的兩種時(shí)鐘模式X1模式X2模式器件含有一個(gè)時(shí)鐘加倍選項(xiàng),可以加速器件的運(yùn)行速度。此時(shí):時(shí)鐘加倍模式只可于加倍內(nèi)部系統(tǒng)時(shí)鐘和內(nèi)部flash存儲(chǔ)器(即EA=1)。在訪問(wèn)外部存儲(chǔ)器和外圍器件時(shí)要特別小心,還要注意晶振的輸出(XTAL2)是不能加倍的。時(shí)鐘加倍模式可通過(guò)外部編程器或IAP來(lái)實(shí)現(xiàn)。當(dāng)該模式被選擇時(shí),F(xiàn)ST寄存器的EDC位用來(lái)指示6時(shí)鐘模式。1機(jī)器周期=12×1/fosc1機(jī)器周期=6×1/fosc545-2.P89V51RD2單片機(jī)的時(shí)鐘電路、時(shí)間單位與時(shí)序P89V51RD2的兩種時(shí)鐘模式——X2模式時(shí)鐘加倍模式可通過(guò)外部編程器或IAP來(lái)實(shí)現(xiàn)。當(dāng)該模式被選擇時(shí),F(xiàn)ST寄存器的EDC位用來(lái)指示6時(shí)鐘模式。

FST-Flash狀態(tài)寄存器的位分配(地址:B6H)不可位尋址;復(fù)位值:xxxxx0xxB位序D7D6D5D4D3D2D1D0位名稱-SB--EDC---保密位使能加倍時(shí)鐘555-3.P89V51RD2單片機(jī)的復(fù)位與復(fù)位電路復(fù)位的概念復(fù)位:將單片機(jī)系統(tǒng)置成特定初始狀態(tài)的操作。復(fù)位后程序從頭(0000H)開(kāi)始重新執(zhí)行。何時(shí)復(fù)位剛通電時(shí)——上電復(fù)位,進(jìn)入初始狀態(tài)重新啟動(dòng)時(shí)——回到初始狀態(tài)、重新開(kāi)始程序故障時(shí)——回到初始狀態(tài)、重新開(kāi)始復(fù)位是什么?一般在什么時(shí)候需要進(jìn)行復(fù)位?565-3.P89V51RD2單片機(jī)的復(fù)位與復(fù)位電路復(fù)位后單片機(jī)的特點(diǎn)寄存器初始狀態(tài)值寄存器初始狀態(tài)值PC0000HTMOD00HACC00HTCON00HB00HTH000HPSW00HTL000HSP07HTH100HDPTR0000HTL100HP0、P1

P2、P30FFHSCON00HIPXXX00000BPCON0XX00000BIEN00XX00000BSBUF不定復(fù)位后單片機(jī)是什么樣的呢?575-3.P89V51RD2單片機(jī)的復(fù)位與復(fù)位電路復(fù)位的方法在RST引腳上加一個(gè)持續(xù)兩個(gè)機(jī)器周期以上的高電平脈沖,就可以使單片機(jī)被復(fù)位。585-3.P89V51RD2單片機(jī)的復(fù)位與復(fù)位電路復(fù)位電路上電復(fù)位595-3.P89V51RD2單片機(jī)的復(fù)位與復(fù)位電路復(fù)位電路手動(dòng)復(fù)位605-3.P89V51RD2單片機(jī)的復(fù)位與復(fù)位電路復(fù)位電路采用專用的復(fù)位芯片MAX810復(fù)位615-3.P89V51RD2單片機(jī)的復(fù)位與復(fù)位電路復(fù)位電路——復(fù)位芯片MAX810MAX810是一種單一功能的微處理器復(fù)位芯片,用于監(jiān)控微控制器和其他邏輯系統(tǒng)的電源電壓。它可以在上電、掉電和節(jié)電情況下向微控制器提供復(fù)位信號(hào)。當(dāng)電源電壓低于預(yù)設(shè)的門(mén)檻電壓時(shí),器件會(huì)發(fā)出復(fù)位信號(hào),直到在一段時(shí)間內(nèi)電源電壓又恢復(fù)到高于門(mén)檻電壓為止。特性參數(shù):監(jiān)控5.0V、3.3V、3V電源;典型值17μA的低電源電流;高電平有效的RESET輸出;抗電源的瞬態(tài)干擾;625-3.P89V51RD2單片機(jī)的復(fù)位與復(fù)位電路復(fù)位電路——復(fù)位芯片MAX810特性參數(shù)(續(xù))復(fù)位延時(shí)時(shí)間最小為140ms;低至1.1V電源時(shí)仍能產(chǎn)生有效的復(fù)位信號(hào);小型的三管腳SOT-23封裝;無(wú)需外部配件;適用于-40℃~+105℃的溫度范圍。635-3.P89V51RD2單片機(jī)的復(fù)位與復(fù)位電路P89V51RD2單片機(jī)的軟件復(fù)位通過(guò)將FCF.1(SWR)從‘0’變?yōu)椤?’來(lái)實(shí)現(xiàn)軟件復(fù)位。軟件復(fù)位后,程序計(jì)數(shù)器指向0000H地址。所有SFR寄存器都被設(shè)置成各自的復(fù)位值,但FCF.1(SWR)、WDTC.2(WDTS)和RAM數(shù)據(jù)將保持不變。646-1.51單片機(jī)匯編語(yǔ)言的指令格式一個(gè)簡(jiǎn)單的彩燈設(shè)計(jì)下圖中的8個(gè)發(fā)光二極管代表8組彩燈,讓它們按你的想法顯示吧圖3-1彩燈電路656-1.51單片機(jī)匯編語(yǔ)言的指令格式匯編語(yǔ)言程序MAIN:MOVSP,#60H;初始化

MOVTMOD,#11H

CLRIT1

CLRIT0

MOVR0,#7FH

MOVR1,#7CHSET:MOV@R0,#00H;清除數(shù)據(jù)區(qū)

DECR0

DJNZR1,MAIN1

MOVDPTR,#PORT;8279控制口

SETBP1.7758158758911C28AC288787F797C760018D9FB90A000D297程序是如何進(jìn)單片機(jī)的?編程器開(kāi)發(fā)軟件666-1.51單片機(jī)匯編語(yǔ)言的指令格式51單片機(jī)指令格式程序片段機(jī)器碼

MOVSCON,#00H;SCON←00H,串口工作于方式0MOVSBUF,A;將SBUF←(ACC)WAIT0:JCTI,WAIT0;發(fā)送完一個(gè)字節(jié)嗎?

CLRTI;清除TI中斷標(biāo)志

INCA759800F5992099FDC29904676-1.51單片機(jī)匯編語(yǔ)言的指令格式匯編語(yǔ)言指令格式[標(biāo)號(hào)]:操作碼[操作數(shù)];[注釋]

↓↓↙↘↓WAIT0:JCTI,WAIT0;發(fā)送完一個(gè)字節(jié)嗎?標(biāo)號(hào)又稱為指令地址符號(hào)。對(duì)標(biāo)號(hào)有如下規(guī)定:一般由1~8個(gè)ASCII字符組成,以字母開(kāi)頭,其余字符可以是字母、數(shù)字和其他特定字符。不能使用助記符、偽指令或者寄存器的符號(hào)名稱做標(biāo)號(hào)。與操作碼之間用冒號(hào)分開(kāi),帶方括號(hào)表示為可選項(xiàng)。一個(gè)標(biāo)號(hào)只能在程序中出現(xiàn)一次,不能重復(fù)出現(xiàn)。操作碼是由助記符表示的字符串,它規(guī)定了指令要完成的具體操作。操作數(shù)是指參加操作的數(shù)據(jù)或數(shù)據(jù)的地址。注釋是為該條指令所做的說(shuō)明,以便于閱讀,中英文不限,用“;”和指令分開(kāi)。68分類方法6-1.51單片機(jī)匯編語(yǔ)言的指令格式51單片機(jī)匯編語(yǔ)言指令分類按指令占用的ROM空間雙字節(jié)指令單字節(jié)指令三字節(jié)指令按指令執(zhí)行的時(shí)間雙周期指令單周期指令四周期指令按指令功能控制轉(zhuǎn)移類指令邏輯運(yùn)算類指令位操作類指令算術(shù)運(yùn)算類指令數(shù)據(jù)傳送類指令696-1.51單片機(jī)匯編語(yǔ)言的指令格式匯編指令及其注釋中常用的符號(hào)Rn(n=0~7)------當(dāng)前選中的工作寄存器組中的寄存器R0~R7之一Ri(i=0,1)------當(dāng)前選中的工作寄存器組中的寄存器R0或R1@---------------間址寄存器前綴#data------------8位立即數(shù)#data16-----------16位立即數(shù)direct------------片內(nèi)低128個(gè)RAM單元地址及SFR地址(可用符號(hào)名稱表示)addr11------------11位目的地址addr16------------16位目的地址rel---------------補(bǔ)碼形式表示的8位地址偏移量,值在-128~+127范圍內(nèi)bit---------------片內(nèi)RAM位地址、SFR的位地址(可用符號(hào)或名稱表示)/-----------------位操作數(shù)的取反操作前綴(×)------------表示×地址單元或寄存器中的內(nèi)容((×))--------表示以×單元或寄存器內(nèi)容為地址單元的內(nèi)容706-2.指令表的查閱從指令表中可以得到的信息指令名稱——指令的書(shū)寫(xiě)規(guī)范機(jī)器代碼——指令在單片機(jī)中的存儲(chǔ)內(nèi)容指令功能——指令的執(zhí)行效果指令的字節(jié)數(shù)——指令的長(zhǎng)度(所占存儲(chǔ)單元的個(gè)數(shù))指令周期——指令的執(zhí)行時(shí)間(以機(jī)器周期為單位)716-2.指令表的查閱指令表的作用用于修改指令中的語(yǔ)法錯(cuò)誤。例如:查找指令MOVR8,#30中的語(yǔ)法錯(cuò)誤。

語(yǔ)法錯(cuò)誤一般會(huì)出現(xiàn)在標(biāo)號(hào)處(標(biāo)號(hào)過(guò)長(zhǎng)、標(biāo)號(hào)名稱重復(fù))、操作碼處(操作碼使用不當(dāng)、書(shū)寫(xiě)錯(cuò)誤)、操作數(shù)處(操作數(shù)使用不當(dāng)、書(shū)寫(xiě)錯(cuò)誤)、符號(hào)錯(cuò)誤等處。本條指令中操作數(shù)R8是錯(cuò)誤的,在指令表中詞條指令的格式為:

MOVRn,#data,其中Rn代表R0~R7,并沒(méi)有R8。726-2.指令表的查閱用于了解指令功能例如:若CY=1,(A)=30H,(55H)=70H,問(wèn)以下兩條指令的執(zhí)行效果一樣嗎?

a)ADDA,55H;

b)ADDCA,55H;答:查閱指令表后可知:

a)指令的功能為A(A)+(55H)b)指令的功能為A(A)+(55H)+CY

可見(jiàn)指令a為兩個(gè)數(shù)相加,而指令b為三個(gè)數(shù)相加,而此時(shí)CY=1,故執(zhí)行的效果不一樣。(A)=0A0H(A)=0A1H736-2.指令表的查閱例如:若(SP)=62H,問(wèn)以下程序段中4200H:LCALLDISPLAY4203H:MOV41H,#33…………4500H:DISPLAY:MOV40H,A…………

LCALL指令執(zhí)行后(SP)=(62H)=(63H)=

(64H)=(PC)=查閱指令表后可知LCALL指令為子程序調(diào)用指令,其功能為:此時(shí),會(huì)將LCALL指令的下一條指令的首地址(4203H)放入堆棧中保存,以便子程序執(zhí)行后返回正確的位置,然后程序轉(zhuǎn)向DISPLAY(4500H)處執(zhí)行。PC(PC)+3,SP(SP)+1,(SP)(PC)7~0,SP(SP)+1,(SP)(PC)8~15,PCaddr1664H××H03H42H4500H746-3.尋址方式立即尋址例:

MOV30H,#00H

;將立即數(shù)00H送給30H單元,即

30H←00H

在上面這條指令中,帶下劃線的操作數(shù)(在傳送指令中稱源操作數(shù))是一個(gè)立即數(shù),即一個(gè)指定的常數(shù),這種尋址方式就稱為立即尋址。注意:立即數(shù)的前面必有“#”標(biāo)志。

比如:

ADDA,#0AFH;A←(A)+AFH756-3.尋址方式直接尋址例:

MOVA,30H

;將內(nèi)部RAM中30H單元內(nèi)的數(shù)據(jù);送給累加器A,即A←(30H)

在上面這條指令中,帶下劃線的操作數(shù)(源操作數(shù))是直接給出內(nèi)部RAM中某個(gè)單元的地址或名稱(特殊功能寄存器),這種尋址方式稱為直接尋址。比如:

MOV40H,A

;40H←(A)SUBBA,60H

;A←(A)-(60H)-CY766-3.尋址方式寄存器尋址例:

MOVA,R7

;將通用寄存器R7中的數(shù)據(jù)送給A,即A←(R7)

在上面這條指令中,帶下劃線的操作數(shù)(源操作數(shù))是當(dāng)前工作寄存器組中某個(gè)寄存器,這種尋址方式稱為寄存器尋址。比如:

XCHA,R1

;累加器A和寄存器R1中的數(shù)互換776-3.尋址方式寄存器間接尋址例:

MOVR0,#3FH;R0←3FH,立即尋址方式

MOVA,@R0

;A←((R0)),即:A←(3FH)

在上面的第2條指令中,帶下劃線的操作數(shù)不是R0,而是以(R0)為地址,間接找到內(nèi)部RAM中的3FH單元,將(3FH)送給A,這種尋址方式稱為寄存器間接尋址。可用R0、R1和DPTR作間址寄存器,訪問(wèn)片內(nèi)RAM或片外64KB的RAM地址空間。

比如:

MOVDPTR,#0CFA0H;將十六位地址CFA0H賦給數(shù)據(jù)指針DPTRMOVXA,@DPTR

;將片外RAM(CFA0H)單元內(nèi)的數(shù)送給A786-3.尋址方式變址尋址例:

MOVCA,@A+DPTR

;將地址為(A)+(DPTR)的ROM

;單元中的數(shù)送給A

在上面這條指令中,帶下劃線的操作數(shù)是以(DPTR)為基址,(A)為變址,將兩者之和作為地址,找出該地址對(duì)應(yīng)的ROM單元,再將該單元的數(shù)送給A,這種尋址方式稱為變址尋址方式。MCS-51單片機(jī)中還有兩條變址尋址指令:

MOVCA,@A+PCJMP@A+DPTR796-3.尋址方式相對(duì)尋址例:

CJNEA,#80H,BUDENG

;如(A)≠80H,跳轉(zhuǎn)到BUDENGJNCDAYU

;如(A)>80H,跳轉(zhuǎn)到DAYU……BUDENG:SETBFLAG0;置位標(biāo)志位FLAG0……DAYU:SETBFLAG1;置位標(biāo)志位FLAG1……

在上面這個(gè)程序片段中,帶下劃線的操作數(shù)指明了程序跳轉(zhuǎn)的目的位置,這個(gè)目的位置的PC相對(duì)于下一條程序語(yǔ)句的PC不得超出-128~+127字節(jié)的范圍。

806-3.尋址方式位尋址例:

MOVC,30H

;將地址為30H的位的狀態(tài)賦給進(jìn)位位CySETBP1.0

;將P1口(對(duì)應(yīng)特殊功能寄存器P1)的P1.0位置1

在上面這兩條指令中,帶下劃線的操作數(shù)不是某個(gè)字節(jié)地址或某個(gè)數(shù),而是內(nèi)部RAM中某個(gè)可直接尋址位的地址或名稱,是針對(duì)位(bit)進(jìn)行的操作,這種尋址方式稱為位尋址。在指令表中,凡用bit和C做操作數(shù)的指令都屬此類,它主要用在位操作指令和部分條件轉(zhuǎn)移指令中。比如:

ANLC,OV;位C和溢出位OV相與,結(jié)果再賦給C,即;C←C∧OVCLRRI;將串口接收中斷位RI清0817-1.設(shè)計(jì)范例——數(shù)碼管顯示要求在最左側(cè)的數(shù)碼管上顯示數(shù)字1。P0口P3.2P3.3P3.4P3.5P1.3P1.2P1.1P1.0827-1.設(shè)計(jì)范例——數(shù)碼管顯示范例分析:硬件分析電路中用到了單片機(jī)的并行I/O口和數(shù)碼管軟件設(shè)計(jì)由于硬件電路中數(shù)碼管接在單片機(jī)的P0口上,故將顯示內(nèi)容送至單片機(jī)的P0口就可以在數(shù)碼管上看到顯示內(nèi)容。

837-2.單片機(jī)的并行I/O接口8051單片機(jī)的并口是幾位的?在四個(gè)并口中,真正的雙向口是哪一個(gè)?它的用法有多少種?四個(gè)并口中功能相對(duì)較為簡(jiǎn)單的是哪一個(gè)?在作為輸入、輸出口使用時(shí)有何不同?在實(shí)際應(yīng)用中,并口的使用要考慮其負(fù)載能力,在四個(gè)并口中負(fù)載力相對(duì)較強(qiáng)的是哪一個(gè)?84P0口P1口P2口P3口7-2.單片機(jī)的并行I/O接口857-2.單片機(jī)的并行I/O接口四個(gè)并口的比較作通用I/O口其他用法備注輸入口輸出口P0口MOVA,P1需要外接上拉電阻數(shù)據(jù)總線(雙向)地址總線低8位地址范圍00H—FFHP1口先向鎖存器寫(xiě)1例如:MOVP1,#0FFHSETBP1.0SETBP3.3SETBP3.7MOVP1,#30MOVP2,#50MOVP3,#60P2口地址總線高8位地址范圍00**H—FF**HP3口第二功能第二功能優(yōu)先867-2.單片機(jī)的并行I/O接口例1:電路如下圖所示,試用二極管顯示按鍵當(dāng)前狀態(tài)。電路分析:電路中P1口的低四位接按鍵,作輸入口使用,高四位接發(fā)光二極管,作輸出口使用。87軟件設(shè)計(jì):7-2.單片機(jī)的并行I/O接口………L:MOVP1,#0FHMOVA,P1ANLA,#0FHSWAPAMOVP1,ASJMPL;將P1口低四位置為輸入口;將按鍵狀態(tài)讀回單片機(jī);將讀回?cái)?shù)據(jù)的高四位清零;將狀態(tài)值交換到A的高四位;將狀態(tài)值送至P1口的高四位;返回起始點(diǎn)這是流程圖,在設(shè)計(jì)程序之前應(yīng)首先繪制流程圖,流程圖是編寫(xiě)和修改程序的依據(jù)。887-2.單片機(jī)的并行I/O接口從這一實(shí)例中我們可以看到:同一個(gè)并口的每一位可以單獨(dú)使用,例如:

SETBP1.0;將P1.0置1也可以設(shè)置某些位為輸入口,某些位為輸出口。例如本例中P1口的低四位為輸入口,高四位為輸出口。897-3.數(shù)碼管基礎(chǔ)知識(shí)與單片機(jī)接口的常用顯示器件有LED(LightEmitingDiode)和LCD(LiquidCrystalDisplay),這里主要介紹LED數(shù)碼管的相關(guān)知識(shí)。P0口P3.2P3.3P3.4P3.5P1.3P1.2P1.1P1.0907-3.數(shù)碼管基礎(chǔ)知識(shí)——預(yù)備知識(shí)七段顯示器的原理共陰結(jié)構(gòu)共陽(yáng)結(jié)構(gòu)917-3.數(shù)碼管基礎(chǔ)知識(shí)——預(yù)備知識(shí)數(shù)碼管的顯示代碼表COMdpgfedcba段碼00001111113FH100000011006H20010110115BHCOMdpgfedcba段碼0111000000C0H1111111001F9H2110100100A4H

共陽(yáng)數(shù)碼管段碼

共陰數(shù)碼管段碼927-3.數(shù)碼管基礎(chǔ)知識(shí)——預(yù)備知識(shí)共陰、共陽(yáng)數(shù)碼管比較例2:使下面兩個(gè)數(shù)碼管都顯示H。H的段碼:H的段碼:#76H#89H937-3.數(shù)碼管基礎(chǔ)知識(shí)本講范例中使用的是4位動(dòng)態(tài)數(shù)碼管連接關(guān)系段碼輸入端四位的位選端94P0口P3.2P3.3P3.4P3.5P1.3P1.2P1.1P1.07-3.數(shù)碼管基礎(chǔ)知識(shí)怎樣才能只讓最左側(cè)的數(shù)碼管顯示,其他的3個(gè)熄滅呢?(圖中為共陽(yáng)數(shù)碼管)?01111選中最左側(cè)的:CLRP3.5SETBP3.4SETBP3.3SETBP3.2957-4.數(shù)據(jù)傳送類指令外部RAM外部I/O接口芯片外部ROMMOVCMOVXMOVCMOV內(nèi)部RAM內(nèi)部ROMCPUXCHXCHDPUSHPOPSWAP967-4.數(shù)據(jù)傳送類指令內(nèi)部RAM中的數(shù)據(jù)傳送類指令directA@RiRn#data格式:

MOV

目的操作數(shù),源操作數(shù)

圖中箭頭為雙向的表示數(shù)據(jù)可雙向傳遞,例如direct(直接尋址單元,例如內(nèi)部RAM的30H單元)與A之間,數(shù)據(jù)可由direct送給A,也可由A送給direct。977-4.數(shù)據(jù)傳送類指令數(shù)據(jù)指針賦值指令(16bit數(shù)據(jù)傳送指令)

當(dāng)要對(duì)片外RAM、I/O接口進(jìn)行訪問(wèn),一般要先給數(shù)據(jù)指針DPTR賦值,此時(shí)應(yīng)用該條指令:

MOVDPTR,#data16

;將16bit二進(jìn)制立即數(shù)賦給數(shù)據(jù)指針DPTR比如:將數(shù)據(jù)指針指向片外RAM的2000H單元。

MOVDPTR,#2000H片外數(shù)據(jù)傳送指令(4條)

當(dāng)你想把一個(gè)數(shù)送到單片機(jī)外部擴(kuò)展RAM的某個(gè)單元或外部擴(kuò)展I/O口某個(gè)端口,或者你想從該單元、端口將數(shù)據(jù)取回到單片機(jī)內(nèi)部的時(shí)候,就要用到片外數(shù)據(jù)傳送指令。

MOVXA,@Ri;A←((Ri))片外

MOVXA,@DPTR;A←((DPTR))片外

MOVX@Ri,A;(Ri)片外←A

MOVX@DPTR,A;(DPTR)片外←A

如果以Ri作指針,只能訪問(wèn)00~FFH地址段的外部RAM或I/O端口。如果以DPTR作指針,則能訪問(wèn)0000~FFFFH地址段的任何外部RAM單元或I/O端口。987-4.數(shù)據(jù)傳送類指令數(shù)據(jù)交換類指令整字節(jié)交換指令XCH(字節(jié)單元與累加器A進(jìn)行8位數(shù)據(jù)交換)

XCHA,RnXCHA,directXCHA,@RiARnDirect@Ri例如:若(A)=35H,(R1)=79H,執(zhí)行指令XCHA,R1后(A)=(R1)=

0011010101111001A:R1:011110010011010179H35H997-4.數(shù)據(jù)傳送類指令低半字節(jié)交換指令XCHD(字節(jié)單元與累加器A進(jìn)行低4位數(shù)據(jù)交換)

XCHDA,@Ri(A)0~3((Ri))0~3例如:若(A)=45H,(R1)=30H,(30H)=89H,執(zhí)行指令

XCHDA,@R1后(A)=(R1)=(30H)=A:R1:30H:01000101001100001000100101001001001100001000010149H30H85H1007-4.數(shù)據(jù)傳送類指令累加器A高低半字節(jié)交換指令SWAP(累加器A的高、低半字節(jié)互相交換)

SWAPA例如:若(A)=45H,執(zhí)行指令SWAPA后(A)=54H(A)0~3(A)4~7

注:此條指令通常用于數(shù)據(jù)處理時(shí),同邏輯與指令相配合,將數(shù)據(jù)的高、低四位拆分后分別存放。1017-1.設(shè)計(jì)范例——數(shù)碼管顯示P0口P3.5P3.4P3.3P3.2P1.3P1.2P1.1P1.0MOVP0,#0C0H此時(shí)對(duì)P0口操作,應(yīng)使用MOV指令。1027-5.程序設(shè)計(jì)一般步驟分析課題,確定解決方案和算法;分配系統(tǒng)資源及存儲(chǔ)單元;繪制程序流程圖;設(shè)計(jì)程序,并反復(fù)調(diào)試和修改。1037-5.程序設(shè)計(jì)一般步驟例3:彩燈循環(huán)設(shè)計(jì)。1047-5.程序設(shè)計(jì)一般步驟——彩燈循環(huán)程序設(shè)計(jì)實(shí)例

ORG0000HMAIN:MOVP1,#80H;D7發(fā)光

MOVP1,#40H;D6發(fā)光

MOVP1,#20H;D5發(fā)光

MOVP1,#10H;D4發(fā)光

MOVP1,#08H;D3發(fā)光

MOVP1,#04H;D2發(fā)光

MOVP1,#02H;D1發(fā)光

MOVP1,#01H;D0發(fā)光

SJMPMAIN;循環(huán)1057-5.程序設(shè)計(jì)一般步驟——彩燈循環(huán)程序設(shè)計(jì)實(shí)例彩燈循環(huán)另一種程序結(jié)構(gòu):

ORG0000HMAIN:MOVA,#01H;初始狀態(tài)

MOVR0,#08;共8位

L1:MOVP1,A;D1發(fā)光

LCALLDEL;延時(shí)子程序

RLA;狀態(tài)上移1位

DJNZR0,L1;循環(huán)判斷

SJMPMAIN;循環(huán)1068-1.設(shè)計(jì)范例——數(shù)碼管循環(huán)顯示要求在最右側(cè)的數(shù)碼管上循環(huán)顯示數(shù)字1~5。P0口P3.2P3.3P3.4P3.5P1.3P1.2P1.1P1.01078-1.設(shè)計(jì)范例——數(shù)碼管循環(huán)顯示范例分析:硬件分析設(shè)計(jì)中要求選中最右側(cè)的數(shù)碼管,根據(jù)電路結(jié)構(gòu),應(yīng)通過(guò)P3.2選中該位數(shù)碼管。軟件設(shè)計(jì)設(shè)計(jì)中要求循環(huán)顯示1~5,很顯然應(yīng)采用循環(huán)的方法來(lái)實(shí)現(xiàn),最簡(jiǎn)單的方法是將1~5的段碼依次由P0口送出。108準(zhǔn)備程序:

ORG0000HMAIN:CLRP3.2MOVP0,#0F9HMOVP0,#0A4HMOVP0,#0B0HMOVP0,#99HMOVP0,#92H

SJMPMAIN延時(shí)一段時(shí)間相鄰數(shù)字之間需要間隔一段時(shí)間嗎?如果不間隔時(shí)間,在數(shù)碼管上會(huì)看到什么現(xiàn)象?相鄰數(shù)字之間需要間隔一段時(shí)間嗎?如果不間隔時(shí)間,在數(shù)碼管上會(huì)看到什么現(xiàn)象?8-1.設(shè)計(jì)范例——數(shù)碼管循環(huán)顯示1098-2.控制轉(zhuǎn)移類指令(1)長(zhǎng)轉(zhuǎn)移指令

LJMP目標(biāo)語(yǔ)句說(shuō)明:目標(biāo)語(yǔ)句可以是程序存儲(chǔ)器64KB空間的任何地方。絕對(duì)轉(zhuǎn)移指令

AJMP目標(biāo)語(yǔ)句例:4002HAJMPMM……4600HMM:MOVA,#00H注意:目標(biāo)語(yǔ)句必須和當(dāng)前語(yǔ)句同頁(yè)。在51單片機(jī)中,64KB程序存儲(chǔ)器分成32頁(yè),每頁(yè)2KB(7FFH)。1108-2.控制轉(zhuǎn)移類指令(1)短跳轉(zhuǎn)指令

SJMP目標(biāo)語(yǔ)句(rel)例:

4060HSJMPLOOP……4090HLOOP:MOVA,#0FFH……注意:短跳轉(zhuǎn)的目標(biāo)語(yǔ)句地址必須在當(dāng)前語(yǔ)句向前127(7FH)字節(jié),向后128(80H)字節(jié),否則在進(jìn)行程序編譯時(shí)會(huì)出錯(cuò)。1118-2.控制轉(zhuǎn)移類指令(1)變址尋址轉(zhuǎn)移指令

JMP@A+DPTR

該指令主要用于多分支的跳轉(zhuǎn)程序設(shè)計(jì)。跳轉(zhuǎn)的目標(biāo)地址是累加器A和數(shù)據(jù)指針DPTR之和,它可以是64KB存儲(chǔ)空間的任何地方。程序設(shè)計(jì)舉例:如果(A)=00H,執(zhí)行SS子程序;如果(A)=01H,執(zhí)行MM子程序;如果(A)=02H,執(zhí)行XX子程序。

ORG4000HMOVDPTR,#5000HMOVR2,A

CLRCRLCAADDA,R2JMP@A+DPTR……ORG5000H5000HLJMPSS5003HLJMPMM5006HLJMPXX

1128-2.控制轉(zhuǎn)移類指令(1)減1條件轉(zhuǎn)移指令組

DJNZRn,目標(biāo)地址(rel);如果(Rn)-1≠0,則程序跳轉(zhuǎn)到目標(biāo)語(yǔ)句,否則順序執(zhí)行下一條語(yǔ)句。

DJNZdirect,目標(biāo)地址(rel)

;如果(direct)-1≠0,則程序跳轉(zhuǎn)到目標(biāo)語(yǔ)句,否則順序執(zhí)行下一條語(yǔ)句。例:?jiǎn)枅?zhí)行以下程序段后,(A)=?

MOVR5,#02HDJNZR5,L1SJMPL2SJMP$L1:MOVA,#00HSJMP$L2:MOVA,#01HSJMP$程序執(zhí)行后(A)=00H;(R5)=02H;(R5)-1=01H,程序轉(zhuǎn)至L1處執(zhí)行1138-3.延時(shí)程序的編寫(xiě)延時(shí)程序是一種應(yīng)用較為廣泛的小程序,一般采用多條語(yǔ)句循環(huán)執(zhí)行來(lái)實(shí)現(xiàn)延時(shí)。例1:當(dāng)前fosc=6MHz,試計(jì)算下面延時(shí)程序的延時(shí)時(shí)間。因?yàn)閒osc=6MHz,故T機(jī)=12/fosc=2usDEL1:MOVR6,#50DEL2:NOP

溫馨提示

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

評(píng)論

0/150

提交評(píng)論