




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB3707T 135-2025 大蔥三系雜交制種技術(shù)規(guī)程
- 楚雄州統(tǒng)測數(shù)學(xué)試卷
- 海南優(yōu)騰愛科醫(yī)療科技有限公司醫(yī)療器械研發(fā)生產(chǎn)環(huán)評報告表
- 運動解剖學(xué)試題冊答案全套
- 協(xié)同推進(jìn)降碳減污擴(kuò)綠增長的背景與意義
- 完善基層衛(wèi)生服務(wù)網(wǎng)絡(luò)建設(shè)的策略及實施路徑
- 國內(nèi)外醫(yī)療機構(gòu)水污染物排放現(xiàn)狀
- 低空經(jīng)濟(jì)發(fā)展趨勢與前景
- 促進(jìn)醫(yī)療服務(wù)的公平性的策略及實施路徑
- 四級人力資源管理師-上半人力(四級)《基礎(chǔ)知識》黑鉆押題4
- 部編版《道德與法治》四年級下冊第5課《合理消費》優(yōu)質(zhì)課件
- 京東入駐流程(課堂PPT)
- 鍋爐巡檢制度
- 切紙機說明書-原稿
- 中國國際航空公司VI形象識別規(guī)劃提案
- 江蘇企業(yè)投資項目備案申請表樣表
- 三菱PLC模擬量模塊fx2n4da中文手冊
- 金屬材料工程課程設(shè)計
- 學(xué)校突發(fā)公共衛(wèi)生事件應(yīng)急處置.ppt
- 學(xué)生課堂表現(xiàn)評價量表(20211208204532)
- 4K超高清電視在傳統(tǒng)播出中面臨的問題及系統(tǒng)建設(shè)規(guī)劃探討
評論
0/150
提交評論