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

下載本文檔

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

文檔簡介

統(tǒng)

本章內(nèi)容SingleChipMicrocomputer什么是單片機?單片機特點及應(yīng)用單片機工作過程單片機硬件結(jié)構(gòu)1.實訓(xùn)目的

(1)了解單片機應(yīng)用系統(tǒng)的基本組成。

(2)通過最簡應(yīng)用系統(tǒng)實例了解單片機的基本工作過程。實訓(xùn)1信號燈的控制12.實驗電路3.實訓(xùn)程序 ORG0000HSTART:MOVP1,#00H ACALLDELAY MOVP1,#0FFH ACALLDELAY SJMPSTARTDELAY:MOVR3,#0FFHDEL2:MOVR4,#0FFHDEL1:NOP DJNZR4,DEL1 DJNZR3,DEL2 RET END 0000000011111111ALEWR

RDP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5V單片機到底是如何實現(xiàn)這些動作?它里面有些什么呢?00000000一、什么是單片機

1、微型計算機硬件結(jié)構(gòu)——常見的微機外形臺式微機便攜式微機立式微機微型計算機硬件結(jié)構(gòu)——微機硬件組成顯示器主機鍵盤鼠標(biāo)微型計算機硬件結(jié)構(gòu)——運算器控制器CPU存儲器輸入接口電路輸入設(shè)備輸出設(shè)備輸出接口電路硬件系統(tǒng)內(nèi)部結(jié)構(gòu)CPU(CentralProcessingUnit)硬件系統(tǒng)——構(gòu)成微機的實體和裝置軟件系統(tǒng)——微機系統(tǒng)所使用的各種程序的總稱軟件系統(tǒng)與硬件系統(tǒng)共同構(gòu)成實用的微機系統(tǒng),兩者是相輔相成、缺一不可的。

軟件系統(tǒng)+微型計算機系統(tǒng)運算器控制器CPU存儲器輸入接口電路輸入設(shè)備輸出設(shè)備輸出接口電路硬件系統(tǒng)微型計算機系統(tǒng)CPU輸入設(shè)備輸出設(shè)備軟件系統(tǒng)+微型計算機系統(tǒng)硬件系統(tǒng)輸入接口設(shè)備輸出接口設(shè)備運算器控制器存儲器單片微型計算機是指集成在一個芯片上的微型計算機,簡稱單片機——單片機實質(zhì)上就是一個芯片2、單片微型計算機單片機內(nèi)部結(jié)構(gòu)示意圖

CPU

存儲器定時器/計數(shù)器

中斷系統(tǒng)P0-P3TxDRxD

TINT并行I/O口串行I/O口單片機應(yīng)用系統(tǒng)

單片機應(yīng)用系統(tǒng)單片機+接口電路及外設(shè)等+軟件硬件單片機應(yīng)用系統(tǒng):由硬件系統(tǒng)和軟件系統(tǒng)組成硬件是應(yīng)用系統(tǒng)的基礎(chǔ)軟件是在硬件的基礎(chǔ)上對其資源進行合理調(diào)配和使用,從而完成應(yīng)用系統(tǒng)所要求的任務(wù),二者相互依賴,缺一不可注:本課程的重點1.掌握單片機應(yīng)用系統(tǒng)硬件原理的分析方法。2.掌握軟件設(shè)計與調(diào)試的基本技能。二、單片機的特點及應(yīng)用1.單片機的特點體積小,重量輕電源單一,功耗低功能強,價格低運行速度快,抗干擾能力強,可靠性高可以嵌入到電子產(chǎn)品中——嵌入式應(yīng)用系統(tǒng)2.單片機應(yīng)用

工業(yè)方面民用方面儀表方面電訊方面數(shù)據(jù)處理方面汽車方面3.單片機種類

◆目前8位單片機仍是單片機的主流機型;◆生產(chǎn)廠商:◆單片機的發(fā)展經(jīng)歷了由4位機到8位機,再到16位機的發(fā)展過程美國微芯片公司:PIC16C××系列、PIC17C××系列、PIC1400系列,美國英特爾公司的MCS-48和MCS-51系列,美國摩托羅拉公司的MC68HC05系列和MC68HC11系列,美國齊洛格公司的Z8系列,日本電氣公司的μPD78××系列,美國莫斯特克公司和仙童公司合作生產(chǎn)的F8(3870)系列等。

三、MCS-51單片機硬件結(jié)構(gòu)時鐘電路CPUROMRAMT0T1中斷系統(tǒng)串行接口并行接口P0P1P2P3TXDRXDINT0INT1定時計數(shù)器結(jié)構(gòu)框圖中央處理器CPU:8位,運算和控制功能內(nèi)部RAM:共256個RAM單元,用戶使用前128個單元,用于存放可讀寫數(shù)據(jù),后128個單元被專用寄存器占用。內(nèi)部ROM:4KB掩膜ROM,用于存放程序、原始數(shù)據(jù)和表格。定時/計數(shù)器:兩個16位的定時/計數(shù)器,實現(xiàn)定時或計數(shù)功能。并行I/O口:4個8位的I/O口P0、P1、P2、P3。串行口:一個全雙工串行口。中斷控制系統(tǒng):5個中斷源(外部中斷2個,定時/計數(shù)中斷2個,串行中斷1個)時鐘電路:可產(chǎn)生時鐘脈沖序列,允許晶振頻率6MHZ和12MHZ1、8051單片機的基本組成中央處理器CPU:8位,運算和控制功能內(nèi)部RAM:共256個RAM單元,用戶使用前128個單元,用于存放可讀寫數(shù)據(jù),后128個單元被專用寄存器占用。內(nèi)部ROM:4KB掩膜ROM,用于存放程序、原始數(shù)據(jù)和表格。定時/計數(shù)器:兩個16位的定時/計數(shù)器,實現(xiàn)定時或計數(shù)功能。并行I/O口:4個8位的I/O口P0、P1、P2、P3。串行口:一個全雙工串行口。中斷控制系統(tǒng):5個中斷源(外中斷2個,定時/計數(shù)中斷2個,串行中斷1個)時鐘電路:可產(chǎn)生時鐘脈沖序列,允許晶振頻率6MHZ和12MHZ2、MCS-51單片機信號引腳簡介

P3口線的第二功能VCCVSSXTAL2

XTAL1RSTP0.0

P0.1

P0.2P0.3P0.4P0.5P0.6P0.7P1.0

P1.1

P1.2P1.3P1.4P1.5P1.6P1.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0ALEP3.0

P3.1

P3.2P3.3P3.4P3.5P3.6P3.72、振蕩電路:XTAL1、XTAL23、復(fù)位引腳:RST4、并行口:P0、P1、P2、P37、ALE:地址鎖存控制信號1、電源線:VCC(+5V)、VSS(地)EAPSEN5、EA:訪問程序存儲控制信號6、PSEN:外部ROM讀選通信號RXD/

TXD/

INT0/INT1/

T0/

T1/

WR/

RD/1

2

3

4

5

6

7

8

9

10111213141516171819

2040

39

38

37

36

35

34

33

32

313029282726252424222180318051875189C511

2

3

4

5

6

7

8

9

10

11

12

13

1428

27

26

25

24

23

22

2120

19

18

17

16

15EPROM27641

2

3

4

5

6

7

8

9

10

11

12

13

1428

27

26

25

24

23

22

2120

19

18

17

16

15EPROM27641

2

3

4

5

6

7

8

9

10111213141516171819

2040

39

38

37

36

35

34

33

32

31302928272625242422211

2

3

4

5

6

7

8

9

10

11

12

13

1428

27

26

25

24

23

22

2120

19

18

17

16

15RAM62641

2

3

4

5

6

7

8

9

10

11

12

13

1428

27

26

25

24

23

22

2120

19

18

17

16

15RAM6264

3.

器80318751805189C51片內(nèi)RAM片內(nèi)ROM256B(字節(jié))4K64K64K(1)程序存儲器程序存儲器內(nèi)部外部0000H0FFFH(4K)0000HFFFFH(64K)0000H0FFFH(4K)0000H0001H0002H(PC)0000H是程序執(zhí)行的起始單元,

在這三個單元存放一條

無條件轉(zhuǎn)移指令中斷5中斷4中斷3中斷2中斷10003H000BH0013H001BH0023H002BH外部中斷0定時器0中斷外部中斷1定時器1中斷串行口中斷8位...0FFFH0FFEHEA=1EA=0程序存儲器資源分布中斷入口地址0000HFFFFH(64K)內(nèi)部外部(2)數(shù)據(jù)存儲器數(shù)據(jù)存儲器00HFFH7FH80H(高128B)(低128B)RAM專用

寄存器00H07H08H0FH10H17H18H1FH0區(qū)R0R7R0R7R0R7R0R71區(qū)2區(qū)3區(qū)工作寄存器區(qū)可位尋址區(qū)20H2FH7F78070030H7FH數(shù)據(jù)緩沖區(qū)/堆棧區(qū)內(nèi)部RAM存儲器

11第3區(qū)18H~1FH

01第1區(qū)08H~0FHRS1RS0寄存器區(qū)片內(nèi)RAM地址

00第0區(qū)00H~07H10第2區(qū)10H~17H工作寄存器區(qū)選擇位RS0、RS1PSW位地址CYACF0RS1RS0OVF1PMSB——MostSignificantBit(最高有效位)

LSB——LeastSignificantBit(最低有效位)單元地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F776F675F574F473F372F271F170F07

MSB

位地址

LSB7E766E665E564E463E362E261E160E067D756D655D554D453D352D251D150D057C746C645C544C443C342C241C140C047B736B635B534B433B332B231B130B037A726A625A524A423A322A221A120A027971696159514941393129211911090178706860585048403830282018100800RAM位尋址區(qū)位地址表高128個單元☆離散分布有21個特殊功能寄存器SFR?!?/p>

11個可以進行位尋址?!钐貏e提示:對SFR只能使用直接尋址方式,書寫時可使用寄存器符號,也可用寄存器單元地址。4、并行輸入/輸出電路結(jié)構(gòu)P0.0

P0.1

P0.2P0.3P0.4P0.5P0.6P0.7P1.0

P1.1

P1.2P1.3P1.4P1.5P1.6P1.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P3.0

P3.1

P3.2P3.3P3.4P3.5P3.6P3.74個8位并行I/O口:P0,P1,P2,P3;均可作為雙向I/O端口使用。(1)特點:P0:訪問片外擴展存儲器時,

復(fù)用為低8位地址線和數(shù)據(jù)線

P2:高8位地址線。P1:雙向I/O端口

P3:第二功能1

2

3

4

5

6

7

8

9

10111213141516171819

2040

39

38

37

36

35

34

33

32

313029282726252424222180318051875189C51111111110000000011111111010101011ALEWR

RDP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7指令1:MOVP1,#00H指令2:MOVP1,#0FFH指令3:MOVP1,#0AAH(2)輸出舉例指令4:CLRP1.0指令5:SETBP1.0+5V下一頁1111111111111111(3)輸入舉例S0+5V4.7kWALEWR

RDP3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7讀端口:MOVP3,#11111111BMOVA,P389C51××××××××寄存器A注:當(dāng)I/O端口作為輸入使用時,需先向端口寫入“1”,使內(nèi)部的FET截止,再讀入引腳的狀態(tài)。你知道P3.4對應(yīng)寄存器A哪一位嗎?P3.4你知道這是為什么嗎?11111111015、時鐘電路與復(fù)位電路

(1)時鐘振蕩電路(2)復(fù)位電路單片機復(fù)位條件:必須使RST引腳持續(xù)10ms以上高電平(外部時鐘12MHz)誰知道復(fù)位電路怎么起到復(fù)位的作用?指令寄存器譯碼地址譯碼程序計數(shù)器地址寄存器累加器A運算器①②存儲器內(nèi)部數(shù)據(jù)總線外部地址總線AB數(shù)據(jù)緩沖器外部數(shù)據(jù)總線DB寄存器區(qū)外部控制總線CB內(nèi)部控制信號時鐘及清零四、單片機的工作過程取指過程例:MOVA,#09H74H

09H;把09H送到累加器A中執(zhí)行過程PC=0000H0001H0000H0002H0111010000001001(PC)(PC)0001H0002H0000H外部控制總線CB取指過程(PC)執(zhí)行過程你知道PC的作用嗎?1、CPU主要的組成部部分為()。B.加法器,寄存器

C.運算器,寄存器

D.運算器,指令譯碼器A.運算器,控制器

課堂練習(xí)2、8031有四個工作寄存器區(qū),由PSW狀態(tài)字中的RS1、RS0兩位的狀態(tài)來決定,單片機復(fù)位后,若執(zhí)行SETBRS1指令,此時只能使用()區(qū)的工作寄存器。A.0區(qū)B.1區(qū)C.2區(qū)D.3區(qū)課堂練習(xí)3.

09H位所在的單元地址是()A.02HC.08HB.21HD.20H課堂練習(xí)4.單片機在進行取指令操作時,指令的地址是由()的內(nèi)容決定。A.SPC.DPTRD.PSEN和ALE

B.PC課堂練習(xí)5.P0,P1口作輸入用途之前必須()。A.外接高電平

B.外接上拉電阻C.相應(yīng)端口先置0

D.相應(yīng)端口先置1

課堂練習(xí)6.程序計數(shù)器PC用來()。A.存放指令

B.存放上一條的指令地址D.存放正在執(zhí)行的指令地址

C.存放下一條的指令地址

課堂練習(xí)1.

數(shù)123可能是()。

A.二進制數(shù)B.八進制數(shù)C.十六進制數(shù)D.四進制數(shù)E.十進制數(shù)2.

8031單片機內(nèi)部RAM包括()。

A.程序存儲區(qū)B.堆棧區(qū)C.工作寄存器及特殊功能區(qū)D.位尋址區(qū)E.中斷入口地址區(qū)3.

8051單片機CPU的主要功能有()。A.產(chǎn)生控制信號B.存儲數(shù)據(jù)C.算術(shù)、邏輯運算及位操作D.I/O端口數(shù)據(jù)傳送E.驅(qū)動LED思考題思考題4.單片機能夠直接運行的程序是()。

A.匯編源程序B.C語言源程序

C.高級語言程序D.機器語言源程序5.

十進制數(shù)126其對應(yīng)的十六進制可表示為()。

A.8FB.8EC.FED.7E6.

十進制數(shù)89.75其對應(yīng)的二進制可表示為().A.10001001.01110101B.1001001.10C.1011001.11D.1001001.117.

二進制數(shù)110010010對應(yīng)的十六進制數(shù)可表示為()A.192HB.C90HC.1A2HD.CA0H8.

二進制數(shù)110110110對應(yīng)的十六進制數(shù)可表示為()。

A.1D3HB,1B6HC.DBOHD.666H9.-3的補碼是()。

A.10000011B.11111100C.11111110D.11111101思考題10.CPU主要的組成部部分為()。

A.運算器,控制器B.加法器,寄存器C.運算器,寄存器D.運算器,指令譯碼器11.INTEL8051CPU是()位的單片機。

A.16B.4C.8D.準(zhǔn)16位12.

對于INTEL8031來說,/EA腳總是()A.接地B.接電源C.懸空D.不用13.

在單片機中,通常將一些中間計算結(jié)果放在()中

A.累加器B.控制器C.程序存儲器D.數(shù)據(jù)存儲器14.程序計數(shù)器PC用來()。

A.存放指令B.存放正在執(zhí)行的指令地址

C.存放下一條的指令地址D.存放上一條的指令地址思考題15.指令和程序是以()形式存放在程序存儲器中。

A.源程序B.匯編程序C.二進制編碼D.BCD碼16.

單片機應(yīng)用程序一般存放在()中。

A.RAMB.ROMC.寄存器D.CPU17.單片機上電后或復(fù)但后,工作寄存器R0是在()。

A.0區(qū)00H單元B.0區(qū)01H單元C.1區(qū)09H單元D.SFR18.進位標(biāo)志CY在()中。

A.累加器AB.算術(shù)邏輯運算部件ALUC.程序狀態(tài)字寄存器PSWD.DPDR19.單片機8051的XTALl和XTAL2引腳是()引腳

A.外接定時器B.外接串行口C.外接中斷D.外接晶振思考題20.8031復(fù)位后,PC與SP的值為()。

A.0000H,00HB.0000H,07HC.0003H,07HD.0800H,00H21.P0,P1口作輸入用途之前必須()。

A.相應(yīng)端口先置1B.相應(yīng)端口先置0C.外接高電平D.外接上拉電阻22.8031單片機中既可位尋址,又可字節(jié)尋址的單元是()。

A.20HB.30HC.00HD.70H23.8031單片機中片內(nèi)RAM共有()字節(jié)。

A.128B.256C.4KD.64K24.

當(dāng)標(biāo)志寄存器PSW的RS0、RS1分別為1和0時,系統(tǒng)選用的工作寄存器組為()。

A.組0B.組1C.組2D.組31.實訓(xùn)目的

(1)了解單片機開發(fā)系統(tǒng)的基本組成及功能。

(2)通過最簡應(yīng)用系統(tǒng)實例了解單片機開發(fā)系統(tǒng)的使用方法。實訓(xùn)2單片機開發(fā)系統(tǒng)及應(yīng)用

程序裝入單片機里運行后,如果顯示結(jié)果與預(yù)期不一樣,怎么辦?請看下面的例子……實際要求:

要求編寫一段程序,控制八個發(fā)光二極管一亮一滅,循環(huán)執(zhí)行。 ORG0000HSTART:MOVP1,#00H ACALLDELAY MOVP1,#0FEH ACALLDELAY SJMPSTARTDELAY:MOVR3,#0FFHDEL2:MOVR4,#0FFHDEL1:NOP DJNZR4,DEL1 DJNZR3,DEL2 RET END 0000000001111111ALEWR

RDP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7+5V在單片機整個開發(fā)過程中,需要相應(yīng)的調(diào)試設(shè)備,才能保證開發(fā)出的程序與要求準(zhǔn)確貼合。000000001.單片機開發(fā)系統(tǒng)概述PC并口線仿真器電源+50123456789ABCDEF89C5151單片機開發(fā)板RESET①實驗板(組合教具)②仿真器③仿真軟件(集成開發(fā)環(huán)境)①組合教具CPU模塊存儲器模塊總線接口模塊總線擴展模塊LED模塊點陣LED模塊LCD模塊鍵盤模塊A/D模塊D/A模塊輸入模塊輸出模塊紅外遙控發(fā)射模塊紅外遙控接收模塊DIP20模塊DIP40模塊②仿真器③仿真軟件并口動畫演示程序運行的基本操作方法2、單步運行3、跟蹤運行4、連續(xù)運行5、斷點運行1、觀察復(fù)位后的各寄存器狀態(tài)2.單片機資源分配與觀察2)RAM內(nèi)容觀察與修改3)ROM內(nèi)容觀察1)寄存器內(nèi)容觀察與修改

R0~R7

工作寄存器區(qū)變化

特殊工能寄存器動畫演示461.實訓(xùn)目的(1)掌握指令格式及表示方法:助記符表示和機器碼表示。(2)了解人工匯編與機器匯編的方法。(3)了解尋址方式的概念。(4)掌握常用指令的功能及應(yīng)用。實訓(xùn)3指令的應(yīng)用2.實訓(xùn)引入MOVP1,#55HMOVP1,55H請比較以上兩條指令執(zhí)行后P1口的狀況?為什么?473.實訓(xùn)表格表3.1實驗表格題號助記符指令機器碼指令檢查數(shù)據(jù)發(fā)光二極管狀態(tài)①MOVP1,#55H

②MOV20H,#0F0H(20H)=MOVP1,20H

③MOVA,#0F0HA=MOVP1,A④MOVR4,#0FHR4=MOVP1,R4⑤MOV20H,#0AAH(20H)=MOVR0,#20HR0=MOVP1,@R0⑥MOVA,#55HA=MOVP1,A

ANDA,#0FHA=MOVP1,A

48⑥MOVA,#55HA=MOVP1,AANDA,#0FHA=MOVP1,A

ORA,#0F0HA=MOVP1,A

⑦CLR AA=MOVP1,ACPLAA=MOVP1,A⑧MOVA,#01HA=MOVP1,A

RLAA=MOVP1,ARLAA=MOVP1,A

494.實訓(xùn)分析與總結(jié)

在實訓(xùn)中看到以下現(xiàn)象:往P1口傳送數(shù)據(jù)的指令中,數(shù)據(jù)的來源不盡相同。數(shù)據(jù)是指令的操作對象,叫做操作數(shù)。指令必須給出操作數(shù)所在的地方,才能進行數(shù)據(jù)傳送。尋找操作數(shù)地址的方法,稱為尋址方式。尋找操作數(shù)到底有多少種方式呢?50指令概述操作碼70數(shù)據(jù)或?qū)ぶ贩绞?0雙字節(jié)指令:標(biāo)號:操作碼操作數(shù)或操作數(shù)地址;注釋單字節(jié)指令:操作碼70三字節(jié)指令:操作碼70數(shù)據(jù)或?qū)ぶ贩绞?0數(shù)據(jù)或?qū)ぶ贩绞?0指令按字節(jié)長度可以分為三種:——指令格式指令的格式:例如:MOVA,R0例如:MOVA,30H例如:MOVDPTR,#2010H51一、尋址方式(找信方式)我的信在他那!找信去!②①注:找信是尋找信的“地址”!你能說出第二封信的“地址”嗎?52目的地#XXH操作數(shù)MOVP1,#55HMOVA,#01H#55H目的地信寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對尋址位尋址53目的地寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對尋址位尋址內(nèi)部RAM或SFR區(qū)操作數(shù)XXHMOVP1,20H20H目的地20H注:尋址是尋操作數(shù)的“地址”!直接給出地址

20H——直接尋址54目的地寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對尋址位尋址寄存器目的地操作數(shù)XXHMOVP1,A寄存器R0-R7A

B

DPTR你能說出為什么叫寄存器尋址嗎?55寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對尋址位尋址MOVP1,@R0目的地寄存器操作數(shù)3AH內(nèi)部RAM3AH65H3AHR0R1

DPTR寄存器間接尋址寄存器目的地2號信在2號箱子里1號你能說出1號箱子和2號箱子分別對應(yīng)內(nèi)存中哪一部分嗎?56尋址比較MOVP1,R0③地址是寄存器R0MOVP1,@R0②地址在寄存器R0里MOVP1,20H④地址是內(nèi)存20HMOVP1,#20H①直接將20H這個數(shù)送P1口錯!錯!錯!MOVP1,R0對!57尋址比較MOVP1,R0③地址是寄存器R0MOVP1,@R0②地址在寄存器R0里面MOVP1,20H④地址是內(nèi)存20HMOVP1,#20H①直接將20H這個數(shù)送P1口錯!錯!錯!MOVP1,@R0對!58尋址比較MOVP1,R0③地址是寄存器R0MOVP1,@R0②地址在寄存器R0里面MOVP1,20HMOVP1,#20H①直接將20H這個數(shù)送P1口錯!錯!錯!MOVP1,20H對!④地址是內(nèi)存20H59尋址比較MOVP1,R0③地址是寄存器R0MOVP1,@R0②地址在寄存器R0里MOVP1,20H④地址是內(nèi)存20HMOVP1,#20H①直接將20H這個數(shù)送P1口錯!錯!錯!MOVP1,#20H對!60寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對尋址位尋址MOVCA,@A+DPTR目的地寄存器操作數(shù)內(nèi)部RAM3AH65H3AH基址寄存器12H變址寄存器34H內(nèi)部RAM46H65HADPTRPC46H61目的地寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對尋址XXH位尋址操作數(shù)SJMP54HPC+54HPC2002H······2002H=2056HPC2056H62寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對尋址位尋址20H······27H21H28H21H20H100000000想一想:如果想使27H單元的第3位置1,該怎么辦呢?63單元地址2FH2EH2DH2CH2BH2AH29H28H

26H25H24H23H22H21H20H7F776F675F574F47372F271F170F07

MSB

位地址

LSB7E766E665E564E46

362E261E160E067D756D655D554D45352D251D150D057C746C645C544C44

342C241C140C047B736B635B534B43

332B231B130B037A726A625A524A42

322A221A120A027971696159514941

312921191109017870686058504840

30282018100800位尋址地址表

例:SETB3DH

3D

3C

3B3F

3E3A

393827H64寄存器尋址直接尋址立即數(shù)尋址寄存器間接尋址變址尋址相對尋址位尋址SETB3DH20H······27H21H28H21H20H00000001065二、指令系統(tǒng)1、指令描述約定符號含義Rn表示當(dāng)前選定寄存器組的工作寄存器R0~R7Ri表示作為間接尋址的地址指針R0~R1#data表示8位立即數(shù),即00H~FFH#data16表示16位立即數(shù),即0000H~FFFFHaddr16表示16位地址,用于64K范圍內(nèi)尋址addr11表示11位地址,用于2K范圍內(nèi)尋址direct8位直接地址,可以是內(nèi)部RAM區(qū)的某一單元或某一專用功能寄存器的地址Rel帶符號的8位偏移量(-128~+127)Bit位尋址區(qū)的直接尋址位(X)X地址單元中的內(nèi)容,或X作為間接尋址寄存器時所指單元的內(nèi)容←將←后面的內(nèi)容傳送到前面去662、MCS-51的指令2.1數(shù)據(jù)傳送指令(29條)

2.2算術(shù)運算指令(24條)2.3邏輯運算指令(24條)2.4控制轉(zhuǎn)移指令(17條)2.5位操作指令(17條)2.6常用偽指令(17條)67目的地址源地址數(shù)據(jù)MOV<目的操作數(shù)>,<源操作數(shù)>MOVA,#20H,ARndirect1@RiARndirect2@Ri#dataARndirect2@Ri#dataMOVRnA#datadirect2direct1ARndirect2@Ri#data@RiAdirect2#data20HA2.1數(shù)據(jù)傳送指令(29條)

——8位數(shù)據(jù)傳送指令(15條)

682.1數(shù)據(jù)傳送指令(29條)

——16位數(shù)據(jù)傳送指令(1條)

MOVDPTR,#data16

——外部數(shù)據(jù)傳送指令(4條)

MOVX<目的操作數(shù)>,<源操作數(shù)>,A@DPTR@RiMOVXA@DPTR@Ri@DPTRA@Ri@DPTRA@RiA691)字節(jié)交換指令(3條)

——交換和查表類指令(9條)

,AXCHdirectRn@RidirectARn@Ri2)低半字節(jié)交換指令(1條)

XCHDA,@Ri3)累加器A中高4位和低4位交換(1條)

SWAPA4)查表指令(2條)

MOVCA,@A+PCMOVCA,@A+DPTR5)堆棧操作指令(2條)

PUSHdirectPOPdirect70directdirect2.2算術(shù)運算類指令(24條)

——加法指令(8條)

A,Rn@Ri#dataADDRn@Ri#datadirectdirectA,Rn@Ri#dataADDCRn@Ri#data——減法指令(4條)

directdirectA,Rn@Ri#dataSUBBRn@Ri#dataADDCA,B(A+B+CY→A)SUBBA,B(A–B–

CY→A)71BCD碼:00110100——BCD碼調(diào)整指令(1條)

DAA注意:DAA指令只能跟在ADD或ADDC加法指令后,不適用于減法指令。十進制二進制BCD碼012345678910

11

12

13

14

15000000010010001101000101011001111000100110101011110011011110111100000001001000110100010101100111100010010001000000010001000100100001001100010100000101011816+34十進制0001100000010110+BCD碼001011100011010000101110-00000110差672助記符格式機器碼(B)相應(yīng)操作指令說明機器周期INCA00000100A

A+1影響PSW的P標(biāo)志1INCRn00001rrrRn

Rn+1n=0~7,rrr=000~1111INCdirect

00000101direct(direct)

(direct)+1

1INC@Ri0000011i(Ri)

(Ri)+1i=0,11INCDPTR10100011DPTR

DPTR+1

2DECA00010100A

A-1影響PSW的P標(biāo)志1DECRn00011rrrRn

Rn-1n=0~7,rrr=000~1111DECdirect00010101direct(direct)

(direct)+1

1DEC@Ri0001011i(Ri)

(Ri)-1i=0,11——加1減1指令73——乘法指令(1條)

MULAB——除法指令(1條)

DIVAB2.3邏輯及移位類指令

——邏輯與指令(6條)

助記符格式機器碼(B)相應(yīng)操作指令說明機器周期ANLA,direct01010101directA

A∧direct按位相與1ANLA,Rn01011rrrA

A∧Rnn=0~7rrr=000~1111ANLA,@Ri0101011iA

A∧(Ri)i=0,11ANLA,#data01010100dataA

A∧#data

1ANLdirect,A01010010direct(direct)

(direct)∧A不影響PSW的P標(biāo)志1ANLdirect,#data01010011directdata(direct)

(direct)∧#data不影響PSW的P標(biāo)志2無符號數(shù)相乘,高位存B,低位存A無符號數(shù)相除,商存A,余數(shù)存B74——邏輯或指令(6條)

01000011directdata助記符格式機器碼(B)相應(yīng)操作指令說明機器周期ORLA,direct01000101directA

A∨direct按位相或1ORLA,Rn01001rrrA

A∨Rnn=0~7,rrr=000~1111ORLA,@Ri0100011iA

A∨(Ri)i=0,11ORLA,#data01000100dataA

A∨#data

1ORLdirect,A01000010direct(direct)

(direct)∨A不影響PSW的P標(biāo)志1ORLdirect,#data(direct)

(direct)∨#data不影響PSW的P標(biāo)志275——邏輯異或指令(6條)

助記符格式機器碼(B)相應(yīng)操作指令說明機器周期XRLA,direct01100101directA

A

(direct)按位相異或1XRLA,Rn01101rrrA

A

Rnn=0~7,rrr=000~1111XRLA,@Ri0110011iA

A

(Ri)i=0,11XRLA,#data01100100dataA

A

#data

1XRLdirect,A01100010direct(direct)

(direct)

A不影響PSW的P標(biāo)志1XRLdirect,#data01100011directdata(direct)

(direct)#data不影響PSW的P標(biāo)志276——累加器A清0和取反指令助記符格式機器碼(B)相應(yīng)操作指令說明機器周期CLRA11100100A

00HA中內(nèi)容清0,影響P標(biāo)志1CPLA11110100A中內(nèi)容按位取反,影響P標(biāo)志1AA77A.0A.7A.0A.7A.0A.7A.0A.7CYCYRLARRARLCARRCA注意:執(zhí)行帶進位的循環(huán)移位指令之前,必須給CY置位或清零?!h(huán)移位指令782.4控制轉(zhuǎn)移類指令

——無條件轉(zhuǎn)移指令(4條)1)長轉(zhuǎn)移指令:LJMPAAAAH;AAAAHPCPC=0000HPC=AAAAH0000H0001H······AAA9HAAAAH0002H假設(shè)執(zhí)行該指令前,PC的值為0000H。注意:該指令可以轉(zhuǎn)移到64KB程序存儲器中的任意位置。79PC高5位(保持不變)PC低11位A10A9A800001A7A6A5A4A3A2A1A0操作碼(第一字節(jié))操作數(shù)(第二字節(jié))11位轉(zhuǎn)移地址的形成示意圖程序計數(shù)器PC2)絕對轉(zhuǎn)移指令A(yù)JMPaddr11;PC+2PC,addr11PC.10~PC.080PC2002H2003H0000H0001H······2004H2005H2006HPCPCPC2006H2003HPC0002HPC3)相對轉(zhuǎn)移指令

例:SJMP03H

03H03H就是當(dāng)前PC值與目的PC值相對差PC81——條件轉(zhuǎn)移指令(8條)

1)累加器A判0指令(2條)助記符格式機器碼(B)相應(yīng)操作機器周期JZrel

01100000

rel若A=0,則PC

PC+rel,否則程序順序執(zhí)行2JNZrel

01110000rel若A≠0,則PC

PC+rel,否則程序順序執(zhí)行22)減1非零轉(zhuǎn)移指令(2條)助記符格式機器碼(B)相應(yīng)操作機器周期DJNZRn,rel11011rrrrelRn

Rn-1,若Rn≠0,則PCPC+rel,否則順序執(zhí)行2DJNZdirect,rel11010101directrel(direct)

(direct)-1,若(direct)≠0,則PCPC+rel,否則順序執(zhí)行2823)比較轉(zhuǎn)移指令(4條)助記符格式機器碼(B)相應(yīng)操作機器周期CJNEA,#data,rel10110100datarel若A≠#data,則PC

PC+rel,否則順序執(zhí)行;若A<#data,則CY=1,否則CY=02CJNERn,#data,rel10111rrrdatarel若Rn≠#data,則PC

PC+rel,否則順序執(zhí)行;若Rn<#data,則CY=1,否則CY=02CJNE@Ri,#data,rel1011011idatarel若(Ri)≠#data,則PC

PC+rel,否則順序執(zhí)行;若(Ri)<#data,則CY=1,否則CY=02CJNEA,direct,rel

10110101directrel若A≠(direct),則PC

PC+rel,否則順序執(zhí)行;若A<(direct),則CY=1,否則CY=0283條件轉(zhuǎn)移類指令范例——方案一還有什么方法實現(xiàn)循環(huán)的終止?將00H~0FH這16個數(shù)順序地置入片內(nèi)RAM20H~2FH單元中。

MOVR0,#20H MOVR7,#0FH CLRALOOP:MOV@R0,AINCAINCR0DJNZR7,LOOPSJMP$84條件轉(zhuǎn)移類指令范例——方案二MOVR0,#20H MOVR7,#0FH CLRALOOP:MOV@R0,AINCAINCR0CJNEA,#0FH,LOOPSJMP$85條件轉(zhuǎn)移類指令范例——方案三

MOVR0,#20H MOVA,#0FH MOV30H,#00HLOOP:MOV@R0,30HINC30HINCR0DECAJNZLOOPSJMP$86條件轉(zhuǎn)移類指令范例——方案四

MOVR0,#20H MOVA,#0FH MOV30H,#00HLOOP:MOV@R0,30HINC30HINCR0SUBBA,#01HJNCLOOPSJMP$87——調(diào)用和返回指令(8條)

1)絕對調(diào)用指令(1條)助記符格式機器碼(B)相應(yīng)操作機器周期ACALLaddr11a10a9a810001addr7~0PC

PC+2SPSP+1,(SP)

PC0~7SPSP+1,(SP)

PC8~15PC0~10

addr1122)長調(diào)用指令(1條)助記符格式機器碼(B)相應(yīng)操作機器周期LCALLaddr1600010010addr15~8addr7~0PC

PC+3SPSP+1,SP

PC0~7SPSP+1,SP

PC8~15PCaddr162883)返回指令助記符格式機器碼(B)相應(yīng)操作機器周期RET00100010PC8~15

(SP),SP

SP-1PC0~7

(SP),SP

SP-1子程序返回指令2RETI00110010PC8~15

SP,SP

SP-1PC0~7

SP,SP

SP-1中斷返回指令2助記符格式機器碼(B)相應(yīng)操作指令說明NOP00000000空操作消耗1個機器周期4)空操作892.5位操作類指令單元地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F776F675F574F473F372F271F170F07

MSB

位地址

LSB7E766E665E564E463E362E261E160E067D756D655D554D453D352D251D150D057C746C645C544C443C342C241C140C047B736B635B534B433B332B231B130B037A726A625A524A423A322A221A120A027971696159514941393129211911090178706860585048403830282018100800RAM

位尋址區(qū)位地址表90助記符格式機器碼(B)相應(yīng)操作指令說明機器周期MOVC,bit10100010CY

bit位傳送指令,結(jié)果影響CY標(biāo)志2MOVbit,C10010010bit

CY位傳送指令,結(jié)果不影響PSW22.位置位和位清零指令助記符格式機器碼(B)相應(yīng)操作指令說明機器周期CLRC11000011CY

0位清0指令,結(jié)果影響CY標(biāo)志1CLRbit11000010bitbit

0位清0指令,結(jié)果不影響PSW1SETBC11010011CY

1位置1指令,結(jié)果影響CY標(biāo)志1SETBbitbit

1位置1指令,結(jié)果不影響PSW111010010bit1.位傳送指令913.位運算指令助記符格式機器碼(B)相應(yīng)操作指令說明機器周期ANLC,bit10000010bitCY

CY∧bit位與指令2ANLC,/bit10110010bit位與指令2ORLC,bit01110010bitCY

CY∨bit位或指令2ORLC,/bit10100010bit位或指令2CPLC10110011位取反指令2CPLbit10110010位取反指令,結(jié)果不影響CY2CY

CY∧bitCY

CY∨bitCYCYbitbit助記符格式機器碼(B)相應(yīng)操作機器周期JBbit,rel00100000bitrel若bit=1,則PC

PC+rel,否則順序執(zhí)行2JNBbit,rel00110000bitrel若bit=0,則PC

PC+rel,否則順序執(zhí)行2JBCbit,rel00010000bitrel若bit=1,則PC

PC+rel,bit0,否則順序執(zhí)行24.位轉(zhuǎn)移指令925.判CY標(biāo)志指令助記符格式機器碼(B)相應(yīng)操作機器周期JCrel01000000若CY=1,則PC

PC+rel,否則順序執(zhí)行2JNCrel01010000若CY≠1,則PC

PC+rel,否則順序執(zhí)行293常用偽指令定位偽指令ORG定義字節(jié)數(shù)據(jù)偽指令DB定義字?jǐn)?shù)據(jù)偽指令DW定義空間偽指令DS符號定義偽指令EQU或=數(shù)據(jù)賦值偽指令DATA數(shù)據(jù)地址賦值偽指令XDATA匯編結(jié)束偽指令END94練習(xí)1

設(shè)內(nèi)部RAM中33H單元中內(nèi)容為44H,34H單元中內(nèi)容為0AFH,R0中內(nèi)容為33H,R1中內(nèi)容為00H,給出以下每一條指令執(zhí)行后A中的值和PSW中P的值。

MOVA,#34H MOVA,34H MOVA,R1 MOVA,@R0

注意:對PSW中P標(biāo)志的影響。

95練習(xí)2設(shè)內(nèi)部RAM30H單元中內(nèi)容為52H,請給出以下程序結(jié)果:

MOVA,#30H MOVA,30H MOVR0,#30H MOVA,@R0 MOV30H,#30H設(shè)P1口內(nèi)容為0AAH(P1口地址為90H),請給出以下程序結(jié)果:

MOVR0,#30H MOV10H,P1 MOVA,10H MOV@R0,A MOV40H,@R01.實訓(xùn)目的(1)掌握匯編語言程序的基本結(jié)構(gòu)。(2)了解匯編語言程序設(shè)計的基本方法和思路。實訓(xùn)4

信號燈的控制22.實訓(xùn)引入請觀察以下幾例程序的執(zhí)行順序?3.實訓(xùn)程序程序1:所有發(fā)光二極管不停地閃動。ORG0000H ;程序從地址0000H開始存放START:MOVP1,#00H ;把立即數(shù)00H送P1口,點亮所有發(fā)光二極管ACALLDELAY ;調(diào)用延時子程序MOVP1,#0FFH ;滅掉所有發(fā)光二極管ACALLDELAY ;調(diào)用延時子程序AJMPSTART ;重復(fù)閃動DELAY:MOVR3,#7FH ;延時子程序DEL2:MOVR4,#0FFHDEL1:NOP DJNZR4,DEL1 DJNZR3,DEL2 RETEND ;匯編程序結(jié)束圖4.2程序1流程圖程序2:用開關(guān)控制發(fā)光二極管的顯示方式。ORG 0000HMOV P3,#00010000B ;使P3口鎖存器的P3.4置位MOV A,P3 ;讀P3口引腳線信號ANL A,#00010000B;“邏輯與”操作,屏蔽掉無關(guān)位JZDDPING ;判斷P3.4是否接地,若是,跳轉(zhuǎn)到DDPING執(zhí)行

MOV P1,#00H ;否則,P3.4接高電平,點亮所有發(fā)光二極管

SJMP$DDPING:MOV P1,#55H ;P3.4接地,發(fā)光二極管交叉亮滅

SJMP $ ENDA=0A≠0圖4.3程序2流程圖程序3:使8個發(fā)光二極管順序點亮。 ORG0000HSTART:MOVR2,#08H;設(shè)置循環(huán)次數(shù)

MOVA,#0FEH;送顯示模式字NEXT:MOVP1,A ;點亮連接P1.0的發(fā)光二極管

ACALLDELAY RLA ;左移一位,改變顯示模式字

DJNZR2,NEXT;循環(huán)次數(shù)減1,不為零,繼續(xù)點亮下面一個二極管

SJMPSTARTDELAY:MOVR3,#0FFH;延時子程序開始DEL2:MOVR4,#0FFHDEL1:NOPDJNZR4,DEL1DJNZR3,DEL2RET ENDR4-1≠0R4-1=0R3-1≠0R3-1=0R2-1≠0R3-1=0圖4.4程序3流程圖4.想一想在程序1和程序3中,它們執(zhí)行的順序有什么特點?單片機程序設(shè)計時有哪些方式?程序設(shè)計概述—設(shè)計語言最早人們只能用機器語言(二進制)編寫程序;為了方便記憶,人們開始用助記符形式的匯編語言編寫程序,稱為低級語言。然后再用匯編系統(tǒng)將其翻譯成機器語言,該過程稱為匯編;為了用更接近人的語言編寫程序,程序設(shè)計師們發(fā)明了高級語言,如:BASIC、FORTRAN、PASCAL、C、JAVA然后再用編譯系統(tǒng)將其翻譯成機器語言,該過程稱為編譯;機器只能識別機器語言。所以必須用編譯系統(tǒng)將高級語言編寫的源程序編譯成機器語言,用匯編系統(tǒng)將用匯編語言編寫的源程序匯編成機器語言;由低級或高級語言構(gòu)成的程序稱為源程序,由機器語言構(gòu)成的程序稱作目標(biāo)程序;

源程序目標(biāo)程序

低級語言機器語言匯編高級語言機器語言編譯程序設(shè)計實例引入實例假設(shè)一個班有50個人,共有3門選修課:計算機算法服裝CAD設(shè)計德語請找出:同時選了三門課的同學(xué);問題的解決第一步

如何在計算機中表示選修某門課的所有同學(xué)5122325225392939412252939計算機算法服裝CAD設(shè)計德語選修這門人數(shù)學(xué)生的學(xué)號這個過程實際上是設(shè)計數(shù)據(jù)結(jié)構(gòu)的問題問題的解決第二步設(shè)計思路:找出同時選了三門課的同學(xué)這個過程實際上是設(shè)計算法的過程,既構(gòu)建模型。計算機算法CAD設(shè)計德語重復(fù)該過程第三步:設(shè)計流程找出第一個學(xué)生他選了德語嗎?他選了CAD嗎?記錄要找的人還有學(xué)生嗎?下一個學(xué)生NNYNYY結(jié)束他選計算機嗎?NY幾點啟示整體構(gòu)思;構(gòu)建整體流程框圖;結(jié)構(gòu)合理,流程清晰,簡單明了;局部模塊化;為什么要用流程圖?符合人進行邏輯思考的習(xí)慣計算機從根本上來說,沒有任何邏輯性,所以,你必須告訴它,先做什么,后做什么,遇到什么情況又該做什么,等等流程圖設(shè)計本身是一個逐步求精的過程,最終將任務(wù)劃分為若干能由機器指令實現(xiàn)的小模塊簡單程序設(shè)計

結(jié)構(gòu)特點:按指令的先后順序依次執(zhí)行。例1:將20H單元的兩個壓縮BCD碼拆開變成ASCII碼,存入21H、22H單元。(假設(shè)20H中的BCD碼為00110100)什么是BCD碼?什么是ASII碼?·········20H21H22HAB0011壓縮BCD碼001100110100低四位ASII碼高四位ASII碼方法1:將BCD碼除以10H,恰好是將BCD碼分別移到了A、B的低4位。然后再各自與30H相或,即成為ASCII碼。方法2:利用半字節(jié)交換指令來實現(xiàn)。ORG0000HMOVA,20HMOVB,#10HDIVABORLB,#30HMOV22H,BORLA,#30HMOV21H,ASJMP$END

開始(20H)A10HBA/B(A中為高4位BCD碼,B中為低4位BCD碼)B+30HBB(22H)A+30HAA(21H)

結(jié)束簡單程序例1---方法1源程序如下:·········20H21H22HAB00110100PCPC0011010000010000PC0011000000000100PC00110100PCPCPC0011PCORG0000HMOVR0,#20HMOVA,#30HXCHDA,@R0MOV22H,AMOVA,@R0SWAPAORLA,#30HMOV21H,ASJMP$END簡單程序例1---方法2

開始#20HR0#30HAA的低4位

(20H)的低4位A(22H)(20H)AA的低4位

A的高4位A(21H)

結(jié)束A+30HAPCPCPCPCPCPCPCPC源程序如下:·········20H21H22HAR000110010000000110100000001000011010000110000001100000011PC0011程序設(shè)計概述--基本步驟題意分析畫出流程圖分配內(nèi)存及端口編制源程序仿真、調(diào)試程序固化程序例2:有兩組BCD碼分別存放在23H、22H單元和33H、32H單元,求它們的和并送入43H、42H單元中去。(高位在前,低位在后)分析:·········32H33H42HA22H23H43H···00111000011001010001000110000111BCD碼83HBCD碼11HBCD碼78HBCD碼56H例2:有兩組BCD碼(如:1183H和5678H),分別存放在

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論