微處理器總復(fù)習(xí)_第1頁
微處理器總復(fù)習(xí)_第2頁
微處理器總復(fù)習(xí)_第3頁
微處理器總復(fù)習(xí)_第4頁
微處理器總復(fù)習(xí)_第5頁
已閱讀5頁,還剩149頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機原理與接口技術(shù)教育科學(xué)“十五”國家規(guī)劃課題研究成果(第2版)

主編李全利

2023/1/151馮·諾依曼提出“程序存儲”和“二進(jìn)制運算”的思想,構(gòu)建了計算機經(jīng)典結(jié)構(gòu):2023/1/152微處理器+存儲器+I/O接口=微型計算機

微型計算機

2023/1/153

微型計算機的應(yīng)用形態(tài)

分為3種:

多板機(即系統(tǒng)機)

工業(yè)PC機也屬于多板機。存儲器I/O接口CPUI/O接口2023/1/154

單板機

早期的單板機當(dāng)代的單板機CPU存儲器I/O接口CPU存儲器I/O接口I/O接口2023/1/155單片機單片機單片機內(nèi)含:CPU存儲器I/O接口2023/1/1561.3單片機的特點及應(yīng)用領(lǐng)域1.3.1單片機的特點結(jié)構(gòu)上突出控制功能

可直接操作I/O端口;位操作能力突出;CPU、存儲器及I/O接口集成在同一芯片內(nèi),數(shù)據(jù)在傳送時受干擾的影響小,且不易受環(huán)境條件的影響。使用上易于產(chǎn)品設(shè)計

單片機品種和型號多;引腳少,體積?。ㄓ≈瓢鍦p可以較小),產(chǎn)品結(jié)構(gòu)靈活精巧。2023/1/157第2章80C51的結(jié)構(gòu)和原理80C51系列概述2.180C51的基本結(jié)構(gòu)與應(yīng)用模式2.280C51典型資源配置與引腳封裝2.380C51單片機的CPU2.480C51的存儲器組織2.580C51的并行口結(jié)構(gòu)與操作2.62023/1/158生產(chǎn)工藝有兩種:在產(chǎn)品型號中凡帶有字母“C”的即為CHMOS芯片,CHMOS芯片的電平既與TTL電平兼容,又與CMOS電平兼容。如87C51。一是HMOS工藝(高密度短溝道MOS工藝)。二是CHMOS工藝(互補金屬氧化物的HMOS工藝)。2023/1/159功能上,有基本型和增強型2大類:增強型:8052/8752/803280C52/87C52/80C32基本型:8051/8751/803180C51/87C51/80C312023/1/15102.2

80C51的基本結(jié)構(gòu)與應(yīng)用模式2.2.180C51的基本結(jié)構(gòu)2023/1/15112.3

80C51典型產(chǎn)品資源配置與引腳封裝2.3.180C51典型產(chǎn)品資源配置2023/1/1512由表可見:增強型與基本型的幾點不同:片內(nèi)ROM:從4K增加到8K

片內(nèi)RAM:從128增加到256

定時/計數(shù)器:從2個增加到3個中斷源:從5個增加到6個。

2023/1/1513無ROM型,要在片外擴(kuò)展程序存儲器;掩膜ROM型,程序由芯片生產(chǎn)廠寫入;EPROM型,程序通過寫入裝置寫入;FlashROM型,程序可電寫入(常用)。片內(nèi)ROM的配置形式:還有OTPROM型,具有較高的可靠性。2023/1/15142.3.280C51的引腳封裝2023/1/15152.4.1CPU的功能單元

運算器累加器ACC

寄存器BPSW

控制器程序計數(shù)器PC

指令寄存器IR

定時與控制邏輯

其他寄存器程序計數(shù)器PC

數(shù)據(jù)指針DPTR

堆棧指針SP

工作寄存器R0~R72023/1/1516寄存器及其存儲器映射如下圖:2023/1/15172023/1/15182.4.280C51的時鐘與時序時鐘產(chǎn)生方式內(nèi)部時鐘方式外部時鐘方式

2023/1/1519

80C51的時鐘信號1個機器周期:12個晶蕩周期(或6個時鐘周期)指令的執(zhí)行時間稱作指令周期(單、雙、四周期)2023/1/152080C51的典型時序單字節(jié)指令雙字節(jié)指令

單周期指令2023/1/1521雙周期指令

2個機器周期中ALE有效4次,后3次讀操作無效。

2023/1/15222.4.380C51單片機的復(fù)位復(fù)位可使單片機或系統(tǒng)部件處于確定的初始狀態(tài)。

復(fù)位電路上電復(fù)位電路按鍵與上電復(fù)位2023/1/1523單片機復(fù)位后的狀態(tài)

PC=0000H

RAM:隨機值(運行中復(fù)位不改變RAM內(nèi)容)

SFR:

P0~P3=FFHSP=07HIP、IE和PCON:有效位為0PSW=00H2023/1/15242.580C51的存儲器組織80C51存儲器可以分成兩大類:

RAM,CPU在運行時能隨時進(jìn)行數(shù)據(jù)的寫入和讀出,但在關(guān)閉電源時,其所存儲的信息將丟失。用來存放暫時性的輸入輸出數(shù)據(jù)、運算的中間結(jié)果或用作堆棧。

ROM,寫入信息后不易改寫的存儲器。斷電后,其中的信息保留不變。用來存放固定的程序或數(shù)據(jù),如系統(tǒng)監(jiān)控程序、常數(shù)表格等。

2023/1/15252.5.180C51單片機的程序存儲器配置片內(nèi)與片外程序存儲器的選擇

EA引腳接高電平---片內(nèi)2023/1/1526

EA引腳接高地---片外2023/1/1527程序存儲器低端的幾個特殊單元2023/1/15282.5.280C51單片機數(shù)據(jù)存儲器配置片內(nèi)、片外數(shù)據(jù)存儲器概況片內(nèi)RAM及SFR片外RAM2023/1/1529工作寄存器區(qū)(含寄存器組0~3)

寄存器組0:地址00H~07H

寄存器組1:地址08H~0FH寄存器組2:地址10H~17H寄存器組3:地址18H~1FH當(dāng)前工作寄存器組選擇

PSW寄存器中:

2023/1/1530片內(nèi)RAM詳圖2023/1/1531位尋址區(qū)字節(jié)地址位地址D7D6D5D4D3D2D1D020H07H06H05H04H03H02H01H00H21H0FH0EH0DH0CH0BH0AH09H08H22H17H16H15H14H13H12H11H10H23H1FH1EH1DH1CH1BH1AH19H18H24H27H26H25H24H23H22H21H20H25H2FH2EH2DH2CH2BH2AH29H28H26H37H36H35H34H33H32H31H30H27H3FH3EH3DH3CH3BH3AH39H38H28H47H46H45H44H43H42H41H40H29H4FH4EH4DH4CH4BH4AH49H48H2AH57H56H55H54H53H52H51H50H2BH5FH5EH5DH5CH5BH5AH59H58H2CH67H66H65H64H63H62H61H60H2DH6FH6EH6DH6CH6BH6AH69H68H2EH77H76H75H74H73H72H71H70H2FH7FH7EH7DH7CH7BH7AH79H78H2023/1/1532通用RAM區(qū)

30H~7FH,共80字節(jié)

數(shù)據(jù)緩沖

堆棧

SP指示棧頂復(fù)位時SP=07H

系統(tǒng)初始化通常重新設(shè)置2023/1/15332.5.380C51單片機的特殊功能寄存器(SFR)基本型單片機有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

IP2023/1/15342.680C51的并行口結(jié)構(gòu)與操作P0口結(jié)構(gòu)

P0作通用I/O口(當(dāng)EA=1或“MOV”傳送時C=0)輸出時2.6.1P0、P2口的結(jié)構(gòu)2023/1/1535

P0作地址數(shù)據(jù)總線(當(dāng)EA=1或“MOVX”類傳送時C=1)

輸出時,地址/數(shù)據(jù)信息分時出現(xiàn)在輸出引腳。

輸入時,先輸出地址,然后自動向鎖存器寫1,再讀引腳。此時為真正雙向口。2023/1/1536P2口結(jié)構(gòu)

P2作通用I/O口(未擴(kuò)片外存儲器,或雖擴(kuò)RAM但采用“MOVX@Ri”傳送時C=0)P2作通用I/O時為:準(zhǔn)雙向口!

P2作地址總線高8位(C=1)2023/1/1537P1口結(jié)構(gòu)

P1僅能為通用的準(zhǔn)雙向口!2.6.2P1、P3口的結(jié)構(gòu)2023/1/1538P3口結(jié)構(gòu)

第一功能:通用I/O口(對口尋址時)2023/1/1539

第二功能(不對口尋址時)

P3.0:RXD(串行口輸入)

P3.1:TXD(串行口輸出)

P3.2:INT0(外部中斷0輸入)

P3.3:INT1(外部中斷1輸入)

P3.4:T0(定時器0的外部輸入)

P3.5:T1(定時器1的外部輸入)

P3.6:WR(片外數(shù)據(jù)存儲器“寫”選通控制輸出)

P3.7:RD(片外數(shù)據(jù)存儲器“讀”選通控制輸出)2023/1/15402.6.3并行口驅(qū)動簡單外設(shè)

并行口的負(fù)載能力(AT89S52)每根口線最大可吸收10mA的(灌)電流

P0口吸收電流的總和不能超過26mA

P1、P2和P3每個口吸收電流的總和限制在15mA

4個口所有口線的吸收電流總和限制在71mA

2023/1/1541第3章80C51的指令系統(tǒng)指令格式及常用符號3.180C51的尋址方式3.2數(shù)據(jù)傳送指令(29條)3.3算數(shù)運算指令(24條)3.4邏輯運算與循環(huán)類指令(24條)3.5控制轉(zhuǎn)移類指令(17條)3.6位操作類指令(17條)3.72023/1/15423.1指令格式及常用符號3.1.1機器指令的字節(jié)編碼形式

8位編碼僅為操作碼

單字節(jié)指令(49條)機器指令:計算機能直接識別和執(zhí)行的指令。

位號76543210字節(jié)opcode如:INCA編碼為:00000100即:04H

8位編碼含操作碼和寄存器編碼位號76543210字節(jié)opcoderrr如:MOVA,R0編碼為:11101000即:E8H2023/1/1543雙字節(jié)指令(45條)位號76543210字節(jié)opcodedata或direct三字節(jié)指令(17條)位號76543210字節(jié)opcodedata或directdata或direct如:MOVA,#50H編碼為:0111010001010000即:74H50H如:MOV20H,#50H編碼為:011101010100000001010000即:75H20H50H2023/1/1544書寫格式注意:操作助記符不能缺少操作數(shù)個數(shù)可為:1、2、3個2個操作數(shù)的指令,目的操作數(shù)在左邊一般格式操作助記符[目的操作數(shù)][,源操作數(shù)][;注釋]3.1.2符號指令的書寫格式2023/1/1545描述符號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個RAM單元地址及SFR地址addr11------11位目的地址addr16------16位目的地址rel---------8位地址偏移量,范圍:-128~+127bit---------片內(nèi)RAM位地址、SFR的位地址(×)------表示×地址單元或寄存器中的內(nèi)容/----------位操作數(shù)的取反操作前綴2023/1/15463.2.1寄存器尋址尋址方式:尋找(源)操作數(shù)或指令轉(zhuǎn)移地址的方式80C51單片機有7種尋址方式3.2

80C51的尋址方式特點:傳送和執(zhí)行速度快3.2.2直接尋址片內(nèi)RAM低128字節(jié)SFR(符號形式)3.2.3寄存器間接尋址片內(nèi)RAM(@Ri、SP)片外RAM(@Ri、@DPTR)3.2.4立即尋址操作數(shù)在指令編碼中尋址空間:ROM2023/1/15473.2.5變址尋址操作數(shù)地址:基地址+偏移量尋址空間:ROM變址尋址還用于跳轉(zhuǎn)指令,如JMP@A+DPTR

執(zhí)行MOVA,@A+DPTR”后結(jié)果:(A)=88H

3.2.6相對尋址Rel常用符號地址表示,離源地址不要超過(-128~+127)

例如:djnz R7,XUNHUAN(rel)3.2.7位尋址尋址位數(shù)據(jù)尋址空間片內(nèi)RAM位空間SFR位空間2023/1/15483.3數(shù)據(jù)傳送類指令(29條)一般不影響標(biāo)志寄存器PSW的狀態(tài)。傳送類指令有兩大類

一般傳送(MOV)特殊傳送,如:MOVCMOVXPUSH、POPXCH、XCHDSWAP

2023/1/15493.3.1一般傳送指令16位傳送(僅1條)MOVDPTR,#data16;DPTR←data16例:執(zhí)行指令MOVDPTR,#1234H后(DPH)=12H,(DPL)=34H。8位傳送通用格式:MOV<目的字節(jié)>,<源字節(jié)>;5種傳送對象形式:1、A,2、direct,3、#data4、@RI,5、Rn(工作寄存器)2023/1/15503.3.2特殊傳送指令讀ROM中常數(shù)表項指令MOVCMOVCA,@A+DPTR;A←((A)+(DPTR))MOVCA,@A+PC;A←((A)+(PC))讀片外RAM及接口單元數(shù)據(jù)的指令MOVXMOVXA,@DPTR;A←((DPTR))MOVXA,@Ri

;A←((Ri))2023/1/1551

入棧指令PUSH堆棧操作指令PUSH和POP堆棧是一片存儲區(qū),遵循“后進(jìn)先出”原則,棧頂由SP指示。80C51的堆棧設(shè)在片內(nèi)RAM低端的128個單元,向上生長。PUSHdirect;SP←(SP)+1,(SP)←(direct)出棧指令POPPOPdirect;(direct)←((SP)),SP←(SP)-1注:堆棧用于子程序調(diào)用時保護(hù)返回地址,或者用于保護(hù)子程序調(diào)用之前的某些重要數(shù)據(jù)(即保護(hù)現(xiàn)場),還可以用于數(shù)據(jù)交換。

2023/1/1552

字節(jié)交換指令XCH數(shù)據(jù)交換指令XCH、XCHD和SWAP數(shù)據(jù)交換屬于同時進(jìn)行的雙向傳送

半字節(jié)交換指令XCHD2023/1/15533.4算數(shù)運算類指令(24條)算數(shù)運算結(jié)果要影響PSW中標(biāo)志位

CY為1,無符號數(shù)(字節(jié))加減發(fā)生進(jìn)位或借位OV為1,有符號數(shù)(字節(jié))加減發(fā)生溢出錯誤

AC為1,十進(jìn)制數(shù)(BCD碼)加法的結(jié)果應(yīng)調(diào)整

P為1,存于累加器A中操作結(jié)果的“1”的個數(shù)為奇數(shù)

標(biāo)志位意義標(biāo)志位與相關(guān)指令影響指令標(biāo)志ADD、ADDC、SUBBDAMULDIVCY√√00AC√√××OV√×√√P√√√√2023/1/15543.4.1加法不帶進(jìn)位加法【例3-24】若有2個無符號數(shù)存于累加器A和RAM的30H單元,即(A)=84H,(30H)=8DH,試分析執(zhí)行指令A(yù)DDA,30H

后的結(jié)果。由于對無符號數(shù)相加,要考察CY。由上頁圖可知,CY=1,因此知道運算的結(jié)果發(fā)生了進(jìn)位,即實際值應(yīng)該是100H+11H。所以,編程者應(yīng)確保單字節(jié)無符號數(shù)運算結(jié)果不要超過255

2023/1/1555帶進(jìn)位加法(這組指令方便了多字節(jié)加法的實現(xiàn))

加1這些指令只有INCA影響P標(biāo)志。其余指令都不影響標(biāo)志位的狀態(tài)。2023/1/1556十進(jìn)制調(diào)整DAA;調(diào)整A的內(nèi)容為正確的BCD碼兩個壓縮的BCD碼按二進(jìn)制相加后,必須經(jīng)過調(diào)整方能得到正確的和。

當(dāng)A中低4位出現(xiàn)了非BCD碼(1010~1111)或低4位的進(jìn)位AC=1,則應(yīng)在低4位加6調(diào)整。當(dāng)A中高4位出現(xiàn)了非BCD碼(1010~1111)或高4位的進(jìn)位CY=1,則應(yīng)在高4位加6調(diào)整。

執(zhí)行十進(jìn)制調(diào)整指令后,PSW中的CY表示結(jié)果的百位值2023/1/15573.4.2減法帶借位減法用此組指令完成不帶借位的減法,只需先清CY為0即可

CY為1,表示D7位需借位

AC為1,表示D3位需借位OV為1,表示“D6有借位D7無借位”或“D7有借位D6無借位”(指令組中沒有不帶借位的減法指令)2023/1/1558減1這組指令僅DECA

影響P標(biāo)志。其余指令都不影響標(biāo)志位的狀態(tài)。與INC相對應(yīng)的差別是不能對數(shù)據(jù)指針操作。2023/1/15593.4.3乘法僅有一條乘法指令MULAB;A與B相乘無符號結(jié)果:B中為積的高8位,A中為積的低8位。

CY總是被清0;OV=1表示積大于FFH

3.4.4除法僅有一條除法指令DIVAB;A除以B

無符號結(jié)果:A中為商的整數(shù)部分,B中為余數(shù)

CY總是被清0;OV=1表示除數(shù)為02023/1/15603.5邏輯運算與循環(huán)類指令(24條)3.5.1邏輯與邏輯:與、或、異或、清0和取反(均為位運算)循環(huán):左、右移,帶進(jìn)位位左、右移【例】(A)=C3H,(R0)=AAH,執(zhí)行指令A(yù)NLA,R0

后,(A)=82H與操作常用于對某些不關(guān)心位進(jìn)行“清0”,同時“保留”另一些關(guān)心位。另外也可以實現(xiàn)對于某些特定位的清零操作)2023/1/15613.5.2邏輯或【例】(A)=C3H,(R0)=55H,執(zhí)行指令ORLA,R0

后,(A)=D7H或操作常用于對某些關(guān)心位進(jìn)行“置1”,不關(guān)心位保持不變

2023/1/15623.5.3邏輯異或【例】(A)=C3H,執(zhí)行指令XRLA,Acc

后,(A)=00H這里ACC是直接尋址,A是累加器尋址異或操作常用于對某些關(guān)心位進(jìn)行“取反”,不關(guān)心位保持不變

2023/1/15633.5.4累加器清0和取反這兩條指令的功能是把累加器A的內(nèi)容清0和取反,結(jié)果仍在A中。【例3-36】若(A)=A5H,執(zhí)行指令CLRA之后,(A)=00H.也可以利用MOVA,#00H完成清0,但需要多占用一個字節(jié)空間。2023/1/15643.5.4邏輯清0和取反3.5.5累加器循環(huán)移位2023/1/15653.6控制轉(zhuǎn)移類指令(17條)

3.6.1無條件轉(zhuǎn)移短跳轉(zhuǎn)AJMPaddr11;PC←(PC)+2,PC10~0←addr112023/1/1566長跳轉(zhuǎn)LJMPaddr16;PC←addr16相對轉(zhuǎn)移SJMPrel

;PC←(PC)+2,PC←(PC)+rel

目標(biāo)地址rel

對應(yīng)范圍為+127~-128。

2023/1/1567散轉(zhuǎn)移JMP@A+DPTR;PC←(PC)+1,PC←(A)+(DPTR)

可完成多條判跳指令的功能【例】功能:當(dāng)(A)=00H時,程序?qū)⑥D(zhuǎn)到ROUT0處執(zhí)行;當(dāng)(A)=02H時,程序?qū)⑥D(zhuǎn)到ROUT1處執(zhí)行;……。

MOVDPTR,#TABLEJMP@A+DPTRTABLE:AJMPROUT0AJMPROUT1AJMPROUT2AJMPROUT32023/1/15683.6.2條件轉(zhuǎn)移累加器判0轉(zhuǎn)移比較不等轉(zhuǎn)移2023/1/1569減1不為0轉(zhuǎn)移2023/1/15703.6.3調(diào)用與返回調(diào)用

指令執(zhí)行時將返回地址入棧

SP應(yīng)設(shè)為合適值(默認(rèn)值07H)

2023/1/1571返回RETI專用于中斷服務(wù)程序返回,它具有清除內(nèi)部相應(yīng)的中斷狀態(tài)觸發(fā)器(以保證正確的中斷邏輯)的功能。

3.6.4空操作NOP;PC←(PC)+1,占1個周期、一個字節(jié)

2023/1/1572

無條件轉(zhuǎn)移指令有多種形式,有些匯編器(如uVision3,偉福匯編器等)支持通用的“JMP符號地址”形式來代替SJMP、AJMP、和LJMP指令三種指令,匯編器能依實際目標(biāo)地址范圍自動匯編成這3種指令之一相應(yīng)的編碼。與此類似,調(diào)用的通用形式是“CALL符號地址”以替代ACALL或LCALL。2023/1/15733.7位操作類指令(17條)位操作是以位為單位進(jìn)行的各種操作。位操作指令中的位地址有4種表示形式:直接地址(如,0D5H);點操作符(如,0D0H.5、PSW.5等);位名稱(如,F(xiàn)0);偽指令定義(如,MYFLAGBITF0)。以上幾種形式表示的都是PSW中的位5。位操作指令中,位累加器要用“C”表示(注:而CY與具體的直接位地址D7H對應(yīng))。試比較:A與ACC的關(guān)系?2023/1/15743.7.1位傳送MOVbit,C;bit←(CY)MOVC,bit;CY←(bit)3.7.2位狀態(tài)設(shè)置位清0位置位2023/1/15753.7.3位邏輯運算位邏輯與位邏輯或位取反2023/1/1576判CY轉(zhuǎn)移判bit轉(zhuǎn)移3.7.4位判跳(條件轉(zhuǎn)移);若(CY)=1,PC←(PC)+2+rel,否則順次執(zhí)行。;若(CY)=0;PC←(PC)+2+rel;否則順次執(zhí)行。;(bit)=1,PC←(PC)+3+rel,否則順次執(zhí)行。;(bit)=1,PC←(PC)+3+rel,bit←0,否則順次執(zhí)行;(bit)=0,PC←(PC)+3+rel,否則順次執(zhí)行

2023/1/1577第4章80C51的匯編語言程序設(shè)計程序編制的方法和技巧4.1源程序的編輯和匯編4.2基本程序結(jié)構(gòu)4.3子程序及其調(diào)用4.4簡單I/O設(shè)備的并口直接驅(qū)動示例4.52023/1/1578

流程描述

流程圖符號“超級循環(huán)”框架2023/1/1579

過程A過程B是否入口出口條件滿足?P2入口出口P1P3過程是否入口出口條件滿足?(a)順序結(jié)構(gòu)(b)分支結(jié)構(gòu)(c)循環(huán)結(jié)構(gòu)2023/1/15804.1.3匯編語言的語句格式非數(shù)字字符開頭,后跟字母、數(shù)字、“-”、“?”等不能用已定義的保留字(指令助記符、偽指令等)后跟英文冒號“:”Keil的匯編器A51可以識別的語句形式為:標(biāo)號(即符號地址)[標(biāo)號:]指令助記符

[操作數(shù)1,][操作數(shù)2,][操作數(shù)3,][;注釋]指令助記符是指令功能的英文縮寫。2023/1/1581數(shù)據(jù):二進(jìn)制(B)十進(jìn)制(D或省略D)十六進(jìn)制(H),注意A~F開頭時要加“0”ASCII碼,如‘A’,‘1245’符號:符號名、標(biāo)號或“$”(PC的當(dāng)前值)表達(dá)式:由運算符和數(shù)據(jù)構(gòu)成(見表4.1)操作數(shù)注釋英文分號“;”開頭2023/1/1582優(yōu)先級運算符功能表達(dá)式及其結(jié)果示例高↓↓↓↓↓↓↓低·()括號4*(5+6)即44NOT、HIGH、LOW取反、取高字節(jié)、取低字節(jié)NOT55H即AAH;HIGH1234H即12H+、-正號、負(fù)號+5、-6*、/、MOD乘、除(取商)、取余數(shù)17/5即3;

17MOD5即2+、-加、減5+4即

9;

5-4=即1SHL、SHR左移、右移2SHL2即8;8SHR2即

2AND、OR、XOR與、或、異或45HAND0FH即05H<、>、=、<>、<=、>=比較運算符MOVA,X>8;若X>8為真,則為MOVA,01H若X>8為假,則為MOVA,00H表4.12023/1/15834.2.2偽指令偽指令,也叫匯編命令。僅對匯編過程進(jìn)行指示偽指令無對應(yīng)的單片機可執(zhí)行代碼起始地址設(shè)定偽指令ORGORG表達(dá)式表達(dá)式通常為十六進(jìn)制地址,例:

ORG8000HSTART:MOVA,#30H……ORG可多次使用,但地址值的順序要由小到大結(jié)束匯編偽指令ENDEND該偽指令位于源程序的最后一行。2023/1/1584定義字節(jié)數(shù)據(jù)表偽指令DB定義字?jǐn)?shù)據(jù)表偽指令DW1000H[標(biāo)號:]DB字節(jié)數(shù)據(jù)表如:ORG1000HDB-2,-4,-6,8,10,18FEHFCHFAH08H0AH12H1001H[標(biāo)號:]DW字?jǐn)?shù)據(jù)表ORG1400HDATA1:DW324AH,3CH……1400H32H4AH00H3CH1401H1402H1403H大端模式2023/1/1585定義常值為符號名偽指令EQU符號名EQU常值表達(dá)式

LEN

EQU10

SUM

EQU21HBLOCK

EQU22HCLRAMOVR7,#LENMOVR0,#BLOCKLOOP:ADDA,@R0INCR0DJNZR7,LOOPMOVSUM,A符號名為:地址常數(shù)段名字符串寄存器名位名比較:標(biāo)號只能是地址2023/1/1586定義數(shù)據(jù)存儲器地址偽指令:DATA格式:字符名稱:DATA

數(shù)據(jù)存儲器地址該指令是單片機特有的,其功能是將數(shù)據(jù)存儲器地址賦給指定字符名。例句:BUFF1:DATA30HBUFF2:DATA31H1000H:MOVA,BUFF1;A←(30H)ADDA,BUFF2;A←A+(31H)2023/1/1587定義位地址為符號名偽指令BIT符號名BIT位地址表達(dá)式如:STBITP1.0;將P1.0的位地址賦給符號名STCFBIT0D7H;將位地址為D7H的位定義為符號名用BIT定義的“符號名”一經(jīng)定義便不能重新定義和改變其它一些偽指令參見教材表4.22023/1/15884.3.1順序程序(無分支、無循環(huán))4.3基本程序結(jié)構(gòu)【例4-1】片內(nèi)RAM的21H單元存放一個十進(jìn)制數(shù)據(jù)十位的ASCII碼,22H單元存放該數(shù)據(jù)個位的ASCII碼。編寫程序?qū)⒃摂?shù)據(jù)轉(zhuǎn)換成壓縮BCD碼存放在20H單元。2023/1/15894.3.2分支程序(單分支、雙分支、多分支)【例4-2】設(shè)變量x以補碼的形式存放在片內(nèi)RAM的30H單元,變量y與x的關(guān)系是:當(dāng)x大于0時,y=x;當(dāng)x=0時,y=20H;當(dāng)x小于0時,y=x+5。編制程序,根據(jù)x的大小求y并送回原單元。2023/1/1590【例4-3】根據(jù)R7的內(nèi)容x(轉(zhuǎn)移序號)轉(zhuǎn)向相應(yīng)的處理程序。設(shè)R7內(nèi)容為0~4,對應(yīng)的處理程序入口地址分別為PP0~PP4。

2023/1/15914.3.3循環(huán)程序(2種:先執(zhí)行,后判斷;先判斷,后執(zhí)行)【例4-4】將內(nèi)部RAM的30H至3FH單元初始化為00H。MAIN:MOVR0,#30H;置初值

MOVA,#00H;MOVR7,#16;LOOP:MOV@R0,A;循環(huán)處理

INCR0;DJNZR7,LOOP;循環(huán)修改,判結(jié)束

SJMP$;結(jié)束處理2023/1/15924.4子程序及其調(diào)用完成通用功能、反復(fù)使用的程序設(shè)計成子程序。使應(yīng)用程序結(jié)構(gòu)清晰緊湊,便于閱讀和調(diào)試

執(zhí)行要由其它程序來調(diào)用,執(zhí)行完后要返回到調(diào)用程序

結(jié)構(gòu)上仍然采用一般程序的3種結(jié)構(gòu)調(diào)用時注意:一是現(xiàn)場的保護(hù)和恢復(fù);二是主程序與子程序間的參數(shù)傳遞。2023/1/15934.5簡單I/O設(shè)備的并口直接驅(qū)動示例4.5.1獨立式鍵盤與LED顯示示例【例4-17】數(shù)據(jù)端與P0口正序連接。編寫程序,分別實現(xiàn)功能:上電后數(shù)碼管顯示“P”,按下任何鍵后,顯示從“0”開始每隔1秒加1,加至“F”后,數(shù)碼管顯示“P”,進(jìn)入等待按鍵狀態(tài)。2023/1/15944.5.2矩陣式鍵盤與LED顯示示例步驟:判有無鍵按下、判按下哪個鍵、依鍵號進(jìn)入相應(yīng)程序2023/1/1595第5章80C51的中斷系統(tǒng)及定時/計數(shù)器80C51單片機的中斷系統(tǒng)5.180C51單片機的中斷處理過程5.280C51單片機的定時/計數(shù)器5.32023/1/15965.1

80C51單片機的中斷系統(tǒng)5.1.180C51中斷系統(tǒng)的結(jié)構(gòu)

CPU進(jìn)行工作A時發(fā)生了事件B,請求CPU馬上處理

CPU暫時中斷當(dāng)前工作A,轉(zhuǎn)去處理事件B

事件B處理完后,回到工作A被中斷的地方繼續(xù)處理A工作

中斷的概念中斷源中斷請求

中斷服務(wù)中斷返回中斷系統(tǒng)中斷的優(yōu)點利用率高

實時性強可靠性好2023/1/159780C51中斷系統(tǒng)的結(jié)構(gòu)5個中斷源、2個優(yōu)先級2023/1/1598中斷源5.1.280C51的中斷源外部中斷0(INT0)P3.2中斷地址03H外部中斷1(INT1)P3.3………0BHT0溢出中斷(TF0)…………….13HT1溢出中斷(TF1)……………1BH串行口中斷(RI或TI)………..23H2023/1/1599觸發(fā)方式設(shè)置及中斷標(biāo)志

76543210TCONTF1TR1TF0TR0IE1IT1IE0IT0字節(jié)地址:88H電平方式(ITx=0),INTx引腳低電平時IEx=1,響應(yīng)中斷后IEx不自動清0(INTx引腳狀態(tài))。邊沿方式(ITx=1),INTx引腳負(fù)跳變時IEx=1,響應(yīng)中斷后IEx自動清0。外部中斷標(biāo)志IE1、IE0(用IEx表示)2023/1/15100溢出中斷標(biāo)志TF1、TF0(用TFx表示)

溢出中斷請求標(biāo)志TFx,Tx啟動后就開始由初值進(jìn)行加1計數(shù),直至最高位產(chǎn)生溢出使TFx=1向CPU請求中斷。CPU響應(yīng)中斷后TFx自動清0。

SCON的中斷標(biāo)志76543210SCONTIRI字節(jié)地址:98HRI:串口接收中斷標(biāo)志,響應(yīng)中斷時不能自動清除

TI:串口發(fā)送中斷標(biāo)志,響應(yīng)中斷時不能自動清除

2023/1/151015.1.380C51中斷的控制中斷允許控制中斷源的開放和屏蔽由IE控制(1,開放;0,禁止)

76543210IEEAESET1EX1ET0EX0字節(jié)地址:A8HEX0:外中斷0允許ET0:T0中斷允許

EX1:外中斷1允許ET1:T1中斷允許ES:串口中斷允許

EA:CPU中斷允許

2023/1/15102中斷優(yōu)先級控制中斷優(yōu)先級由IP控制(1,高級;0,低級)

76543210IPPSPT1PX1PT0PX0字節(jié)地址:B8HPX0:外中斷0優(yōu)先級

PT0:T0中斷優(yōu)先級PX1:外中斷1優(yōu)先級PT1:T1中斷優(yōu)先級PS:串口中斷優(yōu)先級同一優(yōu)先級的自然順序:自高至低:INT0、TO、INT1、T1、串口。

2023/1/15103中斷優(yōu)先級遵循的原則幾個中斷同時申請,先響應(yīng)高級的中斷正進(jìn)行的中斷服務(wù),同級或低級中斷不能對其中斷,但可以被高級中斷所中斷。

為此,中斷系統(tǒng)內(nèi)設(shè)有對應(yīng)高、低2個優(yōu)先級狀態(tài)觸發(fā)器(用戶不能尋址)。狀態(tài)觸發(fā)器的復(fù)位由中斷返回指令RETI控制。2023/1/151045.2

80C51單片機中斷處理過程5.2.1中斷響應(yīng)條件和時間中斷響應(yīng)條件有中斷請求

相應(yīng)的中斷允許位為1CPU開中斷(即EA=1)

遇下面情況之一將不被響應(yīng)(此間中斷條件失效,中斷丟失)

正在處理同級或高級中斷

當(dāng)前查詢周期不是所執(zhí)行指令的最后一個機器周期

正在執(zhí)行RETI或訪問IE或IP

的指令

2023/1/15105中斷響應(yīng)時間中斷響應(yīng)至少需要3個完整的機器周期(3~8個)!受阻時要附加3~5個機器周期(無同級或高級中斷正進(jìn)行)

查詢周期不是當(dāng)前指令的最后機器周期(如MUL,+3)查詢周期恰逢RETI類指令(且后跟MUL指令+5)2023/1/151065.2.2中斷響應(yīng)過程

CPU響應(yīng)中斷過程將相應(yīng)優(yōu)先級狀態(tài)觸發(fā)器置1(阻斷后來同級或低級中斷)執(zhí)行硬件LCALL指令(PC入棧,中斷服務(wù)程序入口址送PC

)執(zhí)行中斷服務(wù)程序

編寫中斷服務(wù)程序注意中斷服務(wù)程序入口存放指令LJMP或AJMP現(xiàn)場保護(hù)與現(xiàn)場恢復(fù)2023/1/151075.2.3中斷返回中斷服務(wù)程序最后指令必須是RETI,其功能:將斷點從堆棧彈送PC,CPU從原斷點繼續(xù)執(zhí)行將相應(yīng)優(yōu)先級狀態(tài)觸發(fā)器清0,恢復(fù)原來工作狀態(tài)注意不能用RET代替RETI

中斷服務(wù)程序中PUSH和POP必須成對使用2023/1/15108【例5-2】多外部中斷源示例中斷服務(wù)程序:

ORG0003HLJMPINSE0

ORG0013HLJMPINSE1

……INSE0:PUSHPSW;XI0中斷服務(wù)

PUSHACC……POPACCPOPPSWRETI(轉(zhuǎn)下頁)

2023/1/151095.3

80C51單片機的定時/計數(shù)器定時/計數(shù)器的結(jié)構(gòu)基本型:T0,定時、計數(shù)。T1,定時、計數(shù)、串口波特率發(fā)生器。增強型:增加了T2。見5.3.4節(jié)。5.3.1定時/計數(shù)器的結(jié)構(gòu)和工作原理TH1、TL1TH0、TL0TCONTMOD2023/1/15110定時/計數(shù)器的工作原理實質(zhì)是16位加1計數(shù)器定時器模式時,是對內(nèi)部機器周期計數(shù)。計數(shù)值乘以機器周期就是定時時間計數(shù)器模式時,是對外部事件計數(shù)。脈沖由T0(P3.4)或T1(P3.5)引腳輸入。

注意:(若計數(shù)值為N,計數(shù)初值為X)溢出信號使TF0或TF1置1,并發(fā)出中斷請求,16位時有:

N=65536-X,或X=65536-N12MHz晶振時,計數(shù)頻率低于0.5MHz

2023/1/151115.3.2定時/計數(shù)器的控制工作方式寄存器TMOD

76543210TMODGATEC/TM1M0GATEC/TM1M0字節(jié)地址:89HGATE:門控位。GATE=0時,只要TRx為1,就可啟動計數(shù)器工作;GATA=1時,定時器的啟動還要加上INTx引腳為高電平這一條件。

C/T:模式選擇位。清0為定時模式,置1為計數(shù)方式。M1M0:工作方式設(shè)置位??稍O(shè)置四種工作方式(見下頁)。2023/1/15112M1M0工作方式說明00方式013位定時/計數(shù)器01方式116位定時/計數(shù)器10方式28位自動重裝定時/計數(shù)器11方式3T0分成兩個獨立的8位定時/計數(shù)器;T1此方式停止計數(shù)注意:TMOD不能進(jìn)行位尋址

2023/1/15113控制寄存器TCON

76543210TCONTF1TR1TF0TR0IE1IT1IE0IT0字節(jié)地址:88HTFx:Tx溢出標(biāo)志位。響應(yīng)中斷后TFx有硬件自動清0。用軟件設(shè)置TFx可產(chǎn)生同硬件置1或清0同樣的效果。TRx:Tx運行控制位。置1時開始工作;清0時停止工作。TRx要由軟件置1或清0(即啟動與停止要由軟件控制)。2023/1/151145.3.3定時/計數(shù)器的工作方式T0有方式0、1、2、3;T1有方式0、1、2。以T0為例說明。方式0:13位方式

2023/1/15115C/T=1時,則為計數(shù)模式,有:

X=213-N=8192-NC/T=0時,則為定時模式,有:

X=213-N=8192-N,N=t/Tcy【例5-3】若計數(shù)個數(shù)N為2,求計數(shù)初值。公式法計算:X=8192-2=8190=1FFEH求補法計算:對0000000000010B取反加1為:

1111111111110B(1FFEH)初值計算:公式法

求補法:X=對N求補2023/1/15116方式1:16位方式

X=216-N=65536-N計數(shù)范圍:1~65536

計數(shù)初值要分成2個字節(jié)分別送入TH0、TL02023/1/15117方式2:8位自動重裝方式

X=28-N=256-N計數(shù)范圍:1~256

特別適合與脈沖信號發(fā)生器2023/1/15118方式3:(僅T0有此方式,T1的方式3將停止計數(shù))

TL0進(jìn)行8位定時/計數(shù)TH0進(jìn)行8位定時(T1方式2時,可出借TR1、TF1)2023/1/151195.3.5定時/計數(shù)器應(yīng)用舉例初始化程序應(yīng)完成:對TMOD賦值,以確定T0和T1的工作方式;求初值,并寫入TH0、TL0或TH1、TL1;中斷方式時,要對IE賦值,開放中斷;使TR0或TR1置位,啟動定時/計數(shù)器工作。2023/1/15120第6章80C51單片機的串行口計算機串行通信基礎(chǔ)6.180C51單片機的串行口6.280C51單片機的串行口應(yīng)用6.32023/1/151216.1計算機串行通信基礎(chǔ)通信:并行通信與串行通信

并行通信特點:傳送控制簡單、速度快,但傳輸線較多,成本高。2023/1/15122

串行通信特點:傳送控制復(fù)雜、速度慢,傳輸線少,成本低2023/1/15123

異步通信幀格式起始位(1位);數(shù)據(jù)位(8位);奇偶校驗位(1位,可無校驗位);停止位(1位)。

特點易于實現(xiàn)效率不高同步通信(發(fā)、收時鐘直接連接,效率高。板內(nèi)元件間的SPI接口)

2023/1/15124串行通信的傳輸方向單工

半雙工

全雙工80C51有1個全雙工串行口

2023/1/15125串行通信的錯誤校驗奇偶校驗

發(fā)送字符時,數(shù)據(jù)位尾隨1位奇偶校驗位(1或0)。奇校驗時,數(shù)據(jù)中“1”的個數(shù)與校驗位“1”的個數(shù)之和應(yīng)為奇數(shù);偶校驗時,數(shù)據(jù)中“1”的個數(shù)與校驗位“1”的個數(shù)之和應(yīng)為偶數(shù)。接收字符時,對“1”的個數(shù)進(jìn)行校驗,若發(fā)現(xiàn)不一致,則說明傳輸數(shù)據(jù)過程中出現(xiàn)了差錯。

2023/1/151266.2

80C51單片機的串行口6.2.180C51串行口的結(jié)構(gòu)1個全雙工串口:通信或接口擴(kuò)展

接收發(fā)送緩沖器邏輯同名、物理分開;接收雙緩沖。

2023/1/151276.2.280C51串行口的控制寄存器串行口控制寄存器SCONSM0和SM1:工作方式選擇位76543210SCONSM0SM1SM2RENTB8RB8TIRI字節(jié)地址:98HSM0SM1方

式說

明波特率000移位寄存器fosc/1201110位UART(8位數(shù)據(jù))可變10211位UART(9位數(shù)據(jù))fosc/64或fosc/3211311位UART(9位數(shù)據(jù))可變2023/1/15128SM2:多機通信控制位SM2=1時,接收機處于地址幀篩選狀態(tài)。若RB8=1,該地址幀信息可進(jìn)入SBUF,并使RI為1,進(jìn)而在中斷服務(wù)中再進(jìn)行地址號比較;若RB8=0,該幀不是地址幀,應(yīng)丟掉,且保持RI=0。SM2=0時,接收機處于地址幀篩選被禁止?fàn)顟B(tài)。不論收到的RB8為0或1,均可以使收到的信息進(jìn)入SBUF,并使RI=1。此時的RB8通常為校驗位。REN:串行接收使能位,軟件置1時,啟動接收過程2023/1/15129TB8:多機方式發(fā)送的第9位多機方式的地址/數(shù)據(jù)幀標(biāo)志。也可作為奇偶校驗位。

RB8:多機方式接收的第9位多機方式的地址/數(shù)據(jù)幀標(biāo)志。也可作為奇偶校驗位。

TI:發(fā)送中斷標(biāo)志位,要由軟件清0RI:接收中斷標(biāo)志位,要由軟件清02023/1/15130電源控制寄存器PCONSMOD:波特率倍增位。在串行口方式1、方式2、方式3時,波特率與SMOD有關(guān),當(dāng)SMOD=1時,波特率提高一倍。復(fù)位時,SMOD=0。

76543210PCONSMOD字節(jié)地址:97H2023/1/151316.2.380C51串行口的工作方式方式0:同步移位寄存器,用于擴(kuò)展并行口RXD:輸入或輸出引腳TXD:移位脈沖輸出接收和方式都是8位波特率固定為:fosc/122023/1/15132數(shù)據(jù)輸出:

CLR用于對74LS164清0

2023/1/15133方式1:10位幀,用于雙機通信起始位:1位數(shù)據(jù)位:8位停止位:1位20

溫馨提示

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

評論

0/150

提交評論