九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

北方工業(yè)大學 單片機選修課課件

  • 資源ID:134560236       資源大?。?span id="24d9guoke414" class="font-tahoma">167.50KB        全文頁數(shù):29頁
  • 資源格式: DOC        下載積分:10積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

北方工業(yè)大學 單片機選修課課件

3.1 指令和指令程序指令和助記符:計算機能直接識別和執(zhí)行的命令稱為指令。一臺計算機所能執(zhí)行的全部指令的集合稱為這臺計算機的指令系統(tǒng)。MCS-51單片機的指令系統(tǒng)包含了111條指令。機器語言:01110100;(740AH)把10送累加器A0000101000100100;(2414H)A加20,結(jié)果仍在A中00010100上述指令的匯編形式:(740AH)MOVA,#0AH(2414H)ADDA,#14H指令的字節(jié)數(shù):1字節(jié)指令既含操作碼也含操作數(shù)(49條):指令的含義和對象明確eg. 10100011èINC DPTR;用一個字節(jié)中的幾位來表示操作數(shù)eg.1101rrrèMOV A,Rn2字節(jié)指令一個字節(jié)表示操作碼,另一個字節(jié)表示操作數(shù)(45條):eg.01110100 操作數(shù);MOVA,#data3字節(jié)指令一個字節(jié)表示操作碼,兩個字節(jié)表示操作數(shù)3.2 尋址方式MCS-51系統(tǒng)中, 操作數(shù)的尋址方式有7種:寄存器尋址 直接用寄存器名;寄存器指R0R7=>用Rn表示; eg.MOV A,R0 ADD A,R5直接尋址直接給出操作數(shù)地址內(nèi)部RAM包括21個SFR的地址=>用direct表示;對于特殊功能寄存器,使用其定義名稱和直接地址效果完全相同。 eg.MOV A,3AH MOV A,PCON<=> MOV A,87H立即尋址 直接給出8位或16位的數(shù)值=>用#data或#data16表示; eg.MOV A,# 3AH; MOV DPTR,# 3A87H系統(tǒng)僅此一條16位立即數(shù)傳指令;寄存器間接尋址僅R0; R1及DPTR可用作間址寄存器=>用Ri及DPTR表示;用此尋址方式可訪問內(nèi)部RAM和外部RAM,但不能訪問SFR; 當被訪問的是內(nèi)部RAM或外部RAM的低256位時, 可用Ri; 要訪問全部64k外部RAM時,用DPTR; eg.MOV A,R0 MOVX A,R1 MOVX A,DPTR3.2 尋址方式變址尋址 DPTR+A; PC+A=>主要用于訪問ROM eg.MOVC A,A+DPTR MOVC A,A+PC JMP A+DPTR 相對尋址 (給出偏移量; 只出現(xiàn)在相對轉(zhuǎn)移指令中 =>用rel 表示偏移量帶符號數(shù):-128127) eg.JZ 3AH(目的地址 = 源地址 + 轉(zhuǎn)移指令字節(jié)數(shù) + rel)位尋址給出位地址=>用bit表示; eg.MOV C,07H 位地址有下列幾種表示方法: 直接用位地址: 07H; (00HF7H中再剔除CxH, D8DF;合計224bit) 采用第幾單元 .第幾位: 25H . 5; SFR名.位數(shù): TCON. 3; 用偽指令定義: eg. A1 BIT P1.0 ; A2 BIT 20H3.3 數(shù)據(jù)傳送指令MCS-51指令系統(tǒng)中的指令,可分為五大類:數(shù)據(jù)傳送指令28條算術(shù)運算指令24條邏輯運算及移位指令25條控制轉(zhuǎn)移指令25條位操作(布爾操作)指令17條=>合計111條一. 內(nèi)部RAM之間的數(shù)據(jù)傳送指令(15條)1.立即尋址(4條) MOV A, # data;MOV Rn, # data;MOV Ri, # data; MOV direct, # data2.直接尋址(5條) MOV A, direct;MOV direct, A MOV Rn, direct MOV Ri, directMOV direct2, direct1;3.間接尋址(3條) MOV A, Ri MOV Ri, A; MOV direct, Ri4.寄存器尋址(3條) MOV A, Rn MOV Rn, AMOV direct, Rn3.3 數(shù)據(jù)傳送指令MOV指令(15條)圖解基本規(guī)律:兩兩互訪,兩例外:立即數(shù)只能作為源操作數(shù); Ri與Rn無聯(lián)系兩特例: direct可自訪; Ri不能訪問SFR3.3 數(shù)據(jù)傳送指令二. 涉及外部存儲器的數(shù)據(jù)傳送指令 1. 16位地址傳送指令(僅此一條16位數(shù)傳指令) MOV DPTR,# data16(data16-16位立即數(shù),通常是外部RAM或ROM的地址) 2. 訪問ROM的指令 MOVC A,A+DPTR;A (A+DPTR) MOVC A,A+PC;PC PC+1, A (A+PC) 3. 訪問外部RAM的指令 MOVX A,Ri ;只能尋址外部RAM的0000H00FFH;比較: MOV A,Ri MOVX Ri,A MOVX A,DPTR MOVX DPTR,A三. 堆棧操作指令 PUSH direct;SPSP+1, (SP)(direct) POP direct ;(direct)(SP), SPSP-1四.數(shù)據(jù)交換指令 XCH A,Rn XCH A,direct XCH A,Ri XCHD A,Ri;ACC.0ACC.3與(Ri)03交換, 高位保持不變;*數(shù)傳指令不影響各標志位,僅P標志受A內(nèi)容的影響; 數(shù)據(jù)傳送類指令課堂練習11.如何用MCS-51指令實現(xiàn)以下的數(shù)據(jù)傳送1)R1內(nèi)容傳送到R02)外部RAM 20H單元內(nèi)容送R03)外部RAM 20H單元內(nèi)容送內(nèi)部RAM 20H單元4)外部RAM 1000H單元內(nèi)容送內(nèi)部RAM 20H單元5)ROM 2000H單元內(nèi)容送R06)ROM 2000H單元內(nèi)容送內(nèi)部RAM 20H單元7)ROM 2000H單元內(nèi)容送外部RAM 20H單元數(shù)據(jù)傳送類指令課堂練習22.設內(nèi)部RAM的30H單元的內(nèi)容為40H, 即(30H)=40H, 還知(40H)=10H, (10H)=00H,端口P1=CAH,問執(zhí)行以下指令后,各有關(guān)存儲單元、寄存器及端口的內(nèi)容?MOVR0,#30H;R0=30HMOVA,R0;A=40HMOVR1,A;R1=40HMOVB,R1;B=10HMOVR1,P1;(40H)=CAHMOVP2,P1;P2=CAHMOV10H,#20H;(10H)=20HMOV30H,10H;(30H)=20H3.4 算術(shù)運算指令 此類指令分為6組, 每組4條; 四條指令的目的操作數(shù)是累加器A時,源操作數(shù)采用寄存器; 直接; 間接和立即數(shù)四種尋址方式 。1. 加法指令(ADD): ADD A,Rn; ADD A,direct; ADD A,Ri; ADD A,#data 2. 帶進位加法指令(ADDC): ADDC A,Rn; ADDC A,direct; ADDC A,Ri; ADDC A,#data3. 加 1指令(INC): (標志位不受影響; 但P標志受A內(nèi)容的影響) INC A; INC Rn; INC direct; INC Ri4.帶借位減法指令(SUBB): SUBB A,Rn; SUBB A,direct; SUBB A,Ri; SUBB A,#data5.減 1指令(DEC):(標志位不受影響; 但P標志受A內(nèi)容的影響) DEC A; DEC Rn; DEC direct; DEC Ri6.乘除指令和其他運算指令 A. 乘除指令: MUL AB;DIV AB(影響Cy, OV, P標志;執(zhí)行乘除操作后Cy=0;相乘后若B0, 則OV=1, 否則OV=0;做除法時若除數(shù)B=0, 則OV=1;否則OV=0) B. 十進制調(diào)整指令:DA A(兩個壓縮的BCD數(shù)相加后應進行此調(diào)整;該指令僅影響Cy) C. 數(shù)據(jù)指針加1指令: INC DPTR(唯一的一條16位算術(shù)運算指令)3.5 邏輯運算及移位指令1. 邏輯與運算指令:ANL A,Rn; ANL A,direct; ANL A,Ri; ANL A,#dataANL direct,A; ANL direct,#data;2. 邏輯或運算指令:ORL A,Rn; ORL A,direct; ORL A,Ri; ORL A,#dataORL direct,A; ORL direct,#data;3. 邏輯異或運算指令:XRL A,Rn; XRL A,direct; XRL A,Ri; XRL A,#dataXRL direct,A; XRL direct,#data;4.累加器清零及取反指令CLRA;CPLA;*以上邏輯運算都是按位進行的;對Cy,AC和OV都沒有影響。5. 移位及半字節(jié)交換指令(只能針對A,移位全部是循環(huán)移位)RLA循環(huán)左移RLCA帶進位循環(huán)左移RRA循環(huán)右移RRCA帶進位循環(huán)右移SWAPA半字節(jié)交換(相當于執(zhí)行4次循環(huán)左移)*循環(huán)指令執(zhí)行一次,移一位;若想多移幾位,則應編寫循環(huán)程序 算術(shù)運算/邏輯運算類指令課堂練習33.已知A=7AH,R0=30H,(30H)=A5H,PSW=80H,問執(zhí)行以下各指令的結(jié)果(每條指令都以題中規(guī)定的數(shù)據(jù)參加操作)。1)XCHA,R0;A=30HR0=7AH2)XCHA,30H;A=0A5H3)XCHA,R0;A=0A5H4)XCHDA,R0;A=75H5)SWAPA;A=0A7H6)ADDA,R0;A=0AAHCy=0 OV=17)ADDA,30H;A=1FHCy=1 OV=08)ADDA,#30H;A=0AAHCy=0 OV=19)ADDCA,30H;A=20HCy=1 OV=010)SUBBA,30H;A=0D4HCy=1 OV=111)SUBBA,#30H;A=49HCy=0 OV=0算術(shù)運算/邏輯運算類指令課堂練習44.設A=83H, R0=17H, (17H)=34H, 執(zhí)行以下指令后, A=?ANLA,#17H;A=03HORL17H,A;(17H)=37HXRLA,R0;A=34HCPLA;答A=0CBH3.6 控制轉(zhuǎn)移指令1. 無條件轉(zhuǎn)移指令(4條)長轉(zhuǎn)移指令:LJMP addr16 ;PCaddr16;在匯編語言中addr16可以直接用一個16位的地址,也可以用標號由匯編語言算出其16位的地址。eg. LJMP 35ECH;LJMP lable絕對轉(zhuǎn)移指令:AJMP addr11 ; PC PC+2; PC.100addr11; 在匯編語言中addr11可以直接用一個16位的地址, 也可以用標號由匯編語言算出其16位的地址;但僅取該16位地址的低11位用于替換PC中的低11位;可獲得2k的轉(zhuǎn)移范圍;但目標地址必須與該條指令地址+2在同一個2k區(qū)域;所以指令“l(fā)ab:AJMP lab”不一定能實現(xiàn)。 eg. AJMP 27BCH;AJMP lable短轉(zhuǎn)移指令: SJMP rel ; PC PC+2+rel; rel相對尋址, 8位帶符號數(shù)表示地址偏移量; 在匯編語言中通常用標號表示: eg. HERE: SJMP HERE; <=> SJMP $; <=> SJMP FEH變址方式的轉(zhuǎn)移指令:JMP A+DPTR ; PC A+DPTR; 這條指令的特點是轉(zhuǎn)移的地址可以在程序運行中加以改變。例如,當DPTR為確定的值時,根據(jù)A的不同的值就可以實現(xiàn)多分支的轉(zhuǎn)移,起到一條指令完成多條指令的功能。3.6 控制轉(zhuǎn)移指令2. 條件轉(zhuǎn)移類指令累加器判零條件轉(zhuǎn)移指令(2條) JZ rel;若A=0, 則PCPC+2+rel; 若A0, 則PCPC+2;eg. Lable: JZ Lable JNZ rel ;若A0, 則PCPC+2+rel; 若A =0, 則PCPC+2比較條件轉(zhuǎn)移指令(4條) CJNE A, direct, rel ; CJNE A, #data, rel ; CJNE Rn, #data, rel ; CJNE Ri, #data, rel ; 在匯編語言中通常用標號表達rel; eg. lable : CJNE A, #data, lable減 1條件轉(zhuǎn)移指令(2條) DJNZ Rn , rel ;RnRn-1;若Rn0, 則PCPC+2+rel; 否則PCPC+2; DJNZ direct, rel ;(direct)(direct)-1;若(direct)0, 則PCPC+2+rel; 否則PCPC+2; *條件轉(zhuǎn)移指令均為相對轉(zhuǎn)移,轉(zhuǎn)移范圍-128127;若要大范圍轉(zhuǎn)移需與無條件轉(zhuǎn)移配合使用。3.6 控制轉(zhuǎn)移指令3. 子程序調(diào)用及返回指令調(diào)用指令ACALL addr11;PCPC+2; SPSP+1, (SP)PC70;(絕對調(diào)用指令);SPSP+1, (SP)PC158; (低位低地址,) ;PC100addr11; (不在同一2k塊,則轉(zhuǎn)不過去) LCALL addr16;PCPC+3; SPSP+1, (SP)PC70;(長調(diào)用指令);SPSP+1, (SP)PC158; (,高位高地址) ;PCaddr16;返回指令RET ;(子程序返回);PC158 (SP), SPSP-1; PC70 (SP), ;SPSP-1 (高地址高位,低地址低位) RETI ;(中斷返回);PC158 (SP), SPSP-1; PC70 (SP), ;SPSP-14. 空操作指令NOP ;PC PC+1單字節(jié)單周期指令;僅消耗了一個機器周期。3.7 布爾變量操作指令1. 位傳送指令(可位尋址的各位和位累加器C之間可以互相傳送內(nèi)容) MOVC, bit;MOVbit, C2. 復位/置位指令(4條) CLR C;CLR bit;SETB C;SETB bit;3. 位運算指令(6條) ANL C, bit;ORL C, bit;CPL C; ANL C, /bit;ORL C, /bit;CPL bit;*(ANL C, /bit;表示將bit取反后再與C相與,該指令不會影響原bit的內(nèi)容)4. 位控制轉(zhuǎn)移指令(5條)以Cy內(nèi)容為條件的轉(zhuǎn)移指令: JCrel;若Cy=1,PCPC+2+rel;否則,PCPC+2 JNCrel;若Cy1,PCPC+2+rel;否則,PCPC+2以位地址內(nèi)容為條件的轉(zhuǎn)移指令 JBbit,rel;若(bit)=1,PCPC+3+rel;否則,PCPC+3 JNBbit,rel;若(bit)1,PCPC+3+rel;否則,PCPC+3 JBCbit,rel;若(bit)=1,PCPC+3+rel,且使(bit=0); 否則,PCPC+3控制轉(zhuǎn)移類指令課堂練習55.已知SP=25H, PC=2345H, (24H)=12H, (25H)=34H, (26H)=56H, 問在這種條件下執(zhí)行RET指令以后, SP=? PC=?答:SP=23H;PC=3412H6.若SP=25H, PC=2345H, 標號LABEL所在的地址為3456H,問執(zhí)行長調(diào)用指令”LCALL LABEL” 之后, 堆棧指針和堆棧內(nèi)容發(fā)生什么變化?PC=?答:SP=27H; (26H)=48H; (27H)=23H; PC=3456H7.在上題中的LCALL指令能否直接換成ACALL指令?為什么?答:不能;因為不在同一個2k區(qū)域?qū)嵗豪?.1若在外部ROM中2000H單元開始存放09的平方值,要求根據(jù)累加器A中的值(09)來查找所對應的平方值。解1: MOVA,#8MOVDPTR,#2000HMOVCA, A+DPTRORG2000HTAB: DB 0, 1, 4, 9, 16, 25, 36, 49, 64, 81解2: MOVA,#8ADDA,#0FH(1ff0h)MOVCA, A+PCORG2000HTAB: DB 0, 1, 4, 9, 16, 25, 36, 49, 64, 81實例:例4.3有2個無符號16位數(shù), 分別存放在從M1和M2開始的數(shù)據(jù)區(qū)中, 低8位先存, 高8位在后, 和存于R3(高8位); R4(低8位), 設和不超過16位。MOVR0,#M1MOVR1,#M2MOVA,R0ADDA,R1MOVR4,AINCR0INCR1MOVA,R0ADDCA,R1MOVR3,A4.1 匯編語言源程序的格式匯編語言源程序的一般形式:標號:操作碼操作數(shù);注釋1. 標號: 標號由8個或8個以下的字母、數(shù)字、下劃線組成,標號的第一個字符必須是字母;此外,系統(tǒng)中保留使用的字符或字符串不能用作標號。以下標號非法: 2A; S+N; EQU.2. 操作數(shù)A. 對于#data: #10010010B; #10; #9BH; #0ABH注意不能丟掉前面的0; 否則按符號地址ABH處理。eg. MOV A,#0ABH <=> MOV A,#ABHB. 對于直接地址direct可以用:10010011B;98;0F9H;eg. MOVA,98標號地址:eg. MOVA,SUM帶 +、-號的表達式 => 直接地址:eg. MOVA,SUM+3SFR名:eg. MOVA,P2C. 對于相對尋址的 rel:除可以采用上面提到的 外,還允許采用一個專門的符號“$”,它表示相對轉(zhuǎn)移指令所在的地址。eg. JNB TF0,$*源程序中除“注釋”外,不能出現(xiàn)全角符號;即必須全為西文字符。4.2 偽指令 每種匯編語言都會定義若干條偽指令,用來對匯編過程進行某種控制,或者對符號、標號賦值。1. ORG(匯編起始命令)用于規(guī)定下面的目標程序的起始地址,在源程序中可以多次使用,但所規(guī)定的地址必須從小到大,且不能造成地址重疊。格式:OGR16位地址eg.ORG 2000H START:MOVA,#64H2. END(匯編結(jié)束)在END以后所寫的指令,匯編程序都不予處理。源程序中只能有一條END,放在所有指令的最后。格式:END3. EQU(等值命令)將一個數(shù)或特定的匯編符號賦予規(guī)定的字符名稱。用EQU定義的字符名稱,必須先定義后使用,且通常不能用于表達式中。格式:字符名稱 EQU數(shù)或匯編符號4. DATA(數(shù)據(jù)地址賦值命令)將數(shù)據(jù)地址或代碼地址賦予規(guī)定的字符名稱; 用DATA定義的字符名稱,允許先使用后定義,且可用在表達式中。格式:字符名稱 DATA表達式4.2 偽指令5. BIT(位地址符號命令)將位地址賦予所規(guī)定的字符名稱。格式:字符名稱BIT 位地址;eg. A1 BIT P1.0 ; A2 BIT 20H6. DB/DW(定義字節(jié)/字命令)從指定地址單元開始, 定義若干個8/16位內(nèi)存單元內(nèi)容格式:標號:DB8位二進制數(shù)表;標號:DW16位二進制數(shù)表;(*高8位在前,低8位在后)eg. lab:DB 45H, 73, “5”, “A”DW 45H, 73, “5”, “A”*注意2者的區(qū)別7. DS(定義空間命令)從指定地址單元開始,保留由表達式所指定的個數(shù)存儲單元作為內(nèi)存?zhèn)溆每臻g。格式:標號:DS表達式;ORG 3000HBUF:DS50 ;從地址3000H開始保留50個存儲單元作為備用單元;*以上6、7兩條偽指令均只能作用于ROM4.3 MCS-51程序設計舉例1. 分支程序設計例5.6_設變量X存放在VAR單元, 函數(shù)值Y存放在FUNC單元。按下式給Y賦值: -1 X < 10 Y= 0 10X20 1 20 < XVARDATA 30HFUNCDATA31HMOVA, VARCJNEA, #10, NEXT1NEXT1:JCNEXT2MOVR0, #1CJNEA, #21, NEXT3NEXT3:JNC NEXT4MOVR0, #0SJMPNEXT4NEXT2:MOV R0, #0FFHNEXT4:MOV FUNC,R04.3 MCS-51程序設計舉例1. 分支程序設計例5.8 設有4分支, 對應R3的值為03; 每分支用于分別從內(nèi)部RAM, 外部RAM256B, 外部64kB, 或外部RAM4kB緩沖區(qū)讀取數(shù)據(jù), 設低8位地址=>R0,高8位地址=>R1。MOVA, R3MOVDPTR,#BRTABMOVCA, A+DPTRJMPA+DPTRBRTAB:DB BR0 -BRTAB DBBR1 -BRTAB DBBR2 -BRTAB DBBR3 -BRTAB4.3 MCS-51程序設計舉例2. 循環(huán)程序設計例5.11 從BLOCK單元開始有一個無符號數(shù)據(jù)塊,其長度存于LEN單元,試求出數(shù)據(jù)塊中最大的數(shù),并存入MAX單元。LEN DATA 20HMAX DATA 21HBLOCK DATA 22H CLR A MOV R2,LEN MOV R1,#BLOCKLOOP: CLR C SUBB A,R1 JNC NEXT MOV A,R1 SJMP NEXT1NEXT: ADD A,R1NEXT1: INC R1 DJNZ R2,LOOP MOV MAX,A4.3 MCS-51程序設計舉例例5.13 有10組3字節(jié)的被加數(shù)和加數(shù), 分別存在兩個數(shù)據(jù)塊中, 首地址分別存于R0和R1中, 求這10組數(shù)的10組和, 各組的和仍送回以R0為指針的單元。MOVTEMP, R0MOVTEMP+1, R1MOVR3, #10LOOP:MOVR2, #3CLRCLOOP1:MOVA, R0ADDCA, R1MOVR0, AINCR0INCR1DJNZR2, LOOP1DJNZR3, LOOPMOVR0, TEMPMOVR1, TEMP+1TEMPDATA20H4.3 MCS-51程序設計舉例3. 查表程序例5.16若A中存放的是某一位十進制數(shù)的7段碼, 通過查表程序, 將其轉(zhuǎn)換為相應的BCD碼, 仍存于A中。MOVR1,#00HMOVB,AMOVDPTR,#KTABLOOP:MOVA,R1MOVCA,A+DPTRCJNEA, B, NEXTSJMPRESUNEXT:INCR1SJMPLOOPRESU:MOVA,R1RETKTAB:DB40H, 79H, 24HDB0H, 19H, 12HDB02H, 78H, 00H, 18H4.3 MCS-51程序設計舉例3. 查表程序例5.15 將一組16進制數(shù)轉(zhuǎn)換為ASCII碼。每個字節(jié)內(nèi)存放兩個16進制數(shù)。16進制數(shù)據(jù)塊首地址存于R0,存放ASCII碼區(qū)域的首地址存于R1,數(shù)據(jù)塊長度存于R2。MOVTEMP,R0MOVTEMP+1,R1LOOP:MOVA,R0ANLA,#0FHADDA,#18MOVCA,A+PCMOVR1,AINCR1MOVA,R04.3 MCS-51程序設計舉例4. 子程序通過R0R7或A來傳送數(shù)據(jù)例5.17 用程序?qū)崿F(xiàn)c=a2+b2。設a,b,c存于內(nèi)部RAM的D1,D2,D3。MOVA,D1ACALLSQRMOVR1,AMOVA,D2ACALLSQRADDA, R1MOVD3,ASJMP$SQR:INCAMOVCA,A+PCRETTAB:DB0, 1, 4, 9, 16DB25, 36, 49, 64, 81END4.3 MCS-51程序設計舉例TEMDATA20HMOVR1, #BLOCK1ACALLFMAXMOVTEM,AMOVR1, #BLOCK2ACALLFMAXCJNEA, TEM, NEXNEX:JNCNEX1MOVA,TEMNEX1:MOVMAX,ASJMP$4.3 MCS-51程序設計舉例4. 子程序通過堆棧傳遞參數(shù)例5.19 在HEX單元有2個16進制數(shù), 試將它們分別轉(zhuǎn)換成ASCII碼, 存入ASC和ASC+1單元。HEXDATA30HASCDATA31HPUSH HEXACALL HASCPOP ASCMOV A,HEXSWAP APUSH ACCACALL HASCPOP ASC+1SJMP $4.3 MCS-51程序設計舉例MOVR0,#BLOCKMOVR1,#SUMSUB:MOVR2,#0MOVR3,#0MOVA,R0JNBACC.7,N1MOVR2,#0FFHN1:INCR0MOVB,R0JNBB.7,N2MOVR3,#0FFH4.3 MCS-51程序設計舉例例5.21 2個16位無符號數(shù)乘法程序;設R7R6存放乘數(shù), R5R4存乘數(shù),乘積存入以R0開始的單元(低位積先存)。MOVA,R6MOVB,R4MULABMOVR0AMOVR3,BMOVA,R7MOVB,R4MULABADDA,R3MOVR3,AMOVA,BADDCA,#0MOVR2,AMOVA,R6MOVB,R5MULABADDA,R3INCR0MOVR0,AMOVR1,#0MOVA,R24.3 MCS-51程序設計舉例例5.22 兩個8位帶符號數(shù)乘法程序 ;設兩個數(shù)已存在R0和R1, 16位乘積送R3, R2保存。SBITBIT20.0SBIT1BIT20.1SBIT2BIT20.2MOVA,R0RLCAMOVSBIT1,CMOVA,R1RLCAMOVSBIT2,CANLC,/SBIT1MOVBIT,CMOVC,SBIT1ANLC,/SBIT2ORLC,SBITMOVSBIT,CMOVA,R14.3 MCS-51程序設計舉例例5.23 16位被除數(shù)已存于R7R6, 16位除數(shù)存于R5R4; 除數(shù)若為0, 則置單元OVER為 0FFH, 以表示溢出; 若被除數(shù)為0, 則置單元OVER為 0(商:R7R6; 余數(shù):R3R2)。SUB:MOVA,R5JNZSTARTMOVA,R4JZOVERFSTART:MOVA,R7JNZSTART1MOVA,R6JNZSTART1MOVOVER,#0RETSTART1:CLRAMOVR2,AMOVR3,AMOVR1,#16DIV:CLRCMOVA,R6RLCAMOVR6,A5.1 中斷概述中斷是cpu與外部設備交換信息的一種方式;它解決了CPU和外設之間的速度配合問題,提高了CPU的效率,使計算機可實時處理控制現(xiàn)場瞬息變化的信息、參數(shù),提高了計算機處理故障的能力。因此,計算機中斷系統(tǒng)的功能也是鑒別計算機性能好壞的重要標志之一。1.中斷源引起中斷的原因或發(fā)出中斷申請的來源;一般可分為軟件中斷和硬件中斷,MCS-51不支持軟件中斷,僅有5個硬件中斷源。2.硬件中斷的分類:A.屏蔽中斷可直接稱中斷;B.非屏蔽中斷,MCS-51不支持此類中斷;3.中斷的開放與關(guān)閉4.中斷源的判別和中斷優(yōu)先級判別:單線中斷,軟件查詢多線中斷矢量中斷中斷優(yōu)先級:A.若干個中斷源同時發(fā)出申請B.中斷嵌套5.2 中斷處理過程1.中斷請求是中斷源向CPU發(fā)出的信號,可以是電平信號,也可以是脈沖信號,視CPU而定,MCS-51兩種方式都支持。2.中斷響應A.響應的條件 中斷開放(IEèEA;ES/ET1/EX1/ET0/EX0); 執(zhí)行完當前指令(正執(zhí)行RETI;訪問IE/IP的指令時,需再執(zhí)行一條指令); 無同級或更高優(yōu)先級中斷正在響應(IPèPS/PT1/PX1/PT0/PX0) ;B.中斷響應基本操作: 中止正在執(zhí)行的程序;并保護斷點(即將斷點地址壓入堆棧); 確定中斷服務程序的入口地址;并將入口地址送入PC;*中斷入口地址的獲得:固定入口地址;中斷向量表;3.中斷處理 A.保護現(xiàn)場; B.處理開/關(guān)中斷; C.執(zhí)行中斷服務程序; D.恢復現(xiàn)場; E.結(jié)束中斷4.中斷返回 RETI:èCPU將斷點地址彈回PC5.3 80C51 的中斷系統(tǒng)及其控制MCS-51單片機和外設交換數(shù)據(jù)通常采用兩種方式:查詢方式和中斷方式1.中斷系統(tǒng)的一般功能 中斷系統(tǒng)負責對多個中斷源進行管理, 涉及4個SFR:TCON;SCON;IE;IP; 主要任務:對于中斷申請的屏蔽或開放的管理 采用兩級管理:總開關(guān)EA和5個中斷源自己的開關(guān)EX0,ET0,EX1,ET1,ES中斷的排隊 對IP編程將中斷分兩級,同級時按系統(tǒng)規(guī)定的優(yōu)先順序執(zhí)行;在未被屏蔽的前提下高級中斷可中斷低級中斷。5.3 80C51 的中斷系統(tǒng)及其控制中斷的響應 當中斷源產(chǎn)生中斷申請時,MCS-51系統(tǒng)先把這些申請登記在各自的中斷標志位中,然后在下一個周期按照內(nèi)部優(yōu)先順序和規(guī)定的級別來查詢這些中斷標志,并在一個機器周期內(nèi)完成檢測和優(yōu)先級排隊,此時若系統(tǒng)滿足下面的3個條件,則在下一個機器周期的S1狀態(tài)開始響應其中優(yōu)先級最高的中斷。A.沒有同級或更高級的中斷正在響應;B.當前指令執(zhí)行完畢;C.若正在執(zhí)行的指令是RETI或任何訪問IE、IP的指令,則必須在另外執(zhí)行一條指令之后才可以響應中斷;中斷響應需要兩個機器周期,完成兩件事: 將PC推入堆棧(低地址放PC低8位,高地址放PC高8位)保護斷點 將入口地址裝入PC;=>相當于內(nèi)部調(diào)用LCALL。中斷的撤除串行口發(fā)送/接受中斷標志,需通過軟件清除;外中斷采用電平觸發(fā)時,中斷服務程序應使該I/O設備撤消中斷申請;其余的中斷標志,一旦被響應將會被自動清除。5.3 80C51的中斷系統(tǒng)及其控制*電平觸發(fā)時只要在S5P2時刻為低電平即可將IE0/1置位;而邊沿觸發(fā)時需兩個S5P2才能檢測到下降沿。5.3 80C51的中斷系統(tǒng)及其控制2.中斷方式應用舉例(80C51和打印機的接口)例: 將內(nèi)部RAM從20H開始的50個8位數(shù)據(jù)通過打印機打印出來。5.3 80C51的中斷系統(tǒng)及其控制ORG0000H ;主程序入口LJMPMAINORG0003H ;中服程序入口LJMPROUTORG100H ;主程序MAIN:SETBIT0SETBEASETBEX0SETBPX0MOVR0,#20HMOVR1,#0F0HMOVR2,#49MOVA,R0MOVXR1,ALOOP:SJMP$5.4 80C51外部中斷源的擴展1.借用定時/計數(shù)器溢出中斷作為外部中斷MOVTMOD,#06HMOVTL0,#0FFHMOVTH0,#0FFHSETBEASETBET0SETBTR02.用查詢方式擴展中斷源3.用8259可編程中斷控制器擴展中斷源(略)5.5 80C51內(nèi)部定時/計數(shù)器及其應用 51系列內(nèi)部帶有2個16位的定時/計數(shù)器; 它們本質(zhì)上都是“加法”計數(shù)器, 當計數(shù)器被加至“全1”后, 再計一個脈沖就會“溢出”使TF0/1被置1, 標識它已完成計數(shù)工作;可以通過將一個數(shù)寫入TH0/1和TL0/1, 改變計數(shù)器的初值, 即使計數(shù)器在此初值的基礎上開始計數(shù)。1. MCS-51內(nèi)部定時/計數(shù)器的工作方式5.5 80C51內(nèi)部定時/計數(shù)器及其應用方式0:13位計數(shù)方式初值=>TH0/1+TL0/1的低5位;eg. 欲計數(shù)1000213-1000 =7192=>1110000011000B將初值11100000B(E0H) =>TH0/1; 11000B(18H) =>TL0/1方式1:16位計數(shù)方式初值=>TH0/1+TL0/1eg. 欲計數(shù) 58344216-58344=7192=>1110000011000B;將初值11100B(1CH) =>TH0/1; 00011000B(18H) =>TL0/1方式2:8位自動重裝計數(shù)方式TL0/1=>8位計數(shù)器;TH0/1=>寄存器;當TL0/1計滿溢出后能將TH0/1的內(nèi)容自動裝入;方式3:T0拆為2個獨立的8位計數(shù)器TL0和TH0;但2者的工作方式略有不同,TL0可用于定時/計數(shù)器;TH0只能用于計時器;但將占用T1的TR1,TF1;此時T1將不能使用中斷;T1在方式3下相當于TR1=0,停止計數(shù)(內(nèi)容保持不變)5.5 80C51內(nèi)部定時/計數(shù)器及其應用2. MCS-51內(nèi)部定時/計數(shù)器的控制A.定時/計數(shù)器工作方式控制寄存器TMOD(89H)M1M0確定計數(shù)器工作方式;C/-TT1/0是用作計數(shù)器(1)還是用作定時器(0);GATE起輔助控制作用;右上圖為定時/計數(shù)器工作于方式0/方式1時的邏輯結(jié)構(gòu)圖。方式0時的計數(shù)器由TH0和TL0的低5位構(gòu)成13位的計數(shù)器; 方式1時的計數(shù)器由TH0和TL0構(gòu)成16位計數(shù)器。定時/計數(shù)器工作于方式2時的邏輯結(jié)構(gòu)如右下圖所示:TL0溢出, 使TF0置1的同時將TH0的內(nèi)容重裝入TL0,并重新開始計數(shù);5.5 80C51內(nèi)部定時/計數(shù)器及其應用應用 定時/計數(shù)器0工作于方式3及定時/計數(shù)器1與之相應的工作方式:注意:與定時/計數(shù)器1”GATE”配合使用的是INT1!5.5 80C51內(nèi)部定時/計數(shù)器及其應用B.定時/計數(shù)器的啟動和中斷控制相關(guān)的SFR:C.定時計數(shù)器的初始化 對TMOD賦值,以確定其工作方式; 對TH0/1, TL0/1賦初值; 確定優(yōu)先級、開放中斷; 對TCON中的TR0或TR1置位,啟動計數(shù);5.5 80C51內(nèi)部定時/計數(shù)器及其應用3. 應用舉例eg.1 利用定時器輸出周期2ms的方波,設單片機時鐘頻率為12MHz。答:用T0; 方式0; 定時1ms; èTMOD = 0000 0000B用P1.0輸出方波; 計算定時器初值X=213-1*10-3(1ms)/1*10-6(1us) =7192=11100000 11000B=>0E0 18HORG0BH BRT0:MOVTH0,#0E0HAJMPBRT0 MOVTL0,#20H; *main:MOVTMOD,#00HCPLP1.0MOVTH0,#0E0HRETIMOVTL0,#18HSETBEA SETBET0 SETBTR0 SJMP$ 5.5 80C51內(nèi)部定時/計數(shù)器及其應用*在定時器溢出發(fā)出中斷申請,到重裝完定時器初值并在此基礎上繼續(xù)計數(shù)定時,總會有一定的時間間隔,若要求定時/計數(shù)比較精確,就需對重裝的初值作一些調(diào)整。一般考慮兩個因素:一是中斷響應所需的時間;二是重裝指令及中斷服務程序中在重裝指令前的其它指令所用時間;修正量通常取78個機器周期,即少計78個數(shù)=>重裝初值+78。eg. 上題采用查詢方式產(chǎn)生2ms的方波。MOVTMOD,#00HSETBTR0LOOP:MOVTH0,#0E0HMOVTL0,#18HJNBTF0,$CPLP1.0CLRTF0SJMPLOOP5.5 80C51內(nèi)部定時/計數(shù)器及其應用ORG0BHAJMPBRT5START:ORG2000HMOVTMOD,#01HMOVTH0,#0B1HMOVTL0,#0E0HMOVIE,#82HSETBTR0MOVR0,#50LOOP:SJMP$6.1 計算機串行通信基礎計算機與外部的信息交換稱為通信;基本的通信方式:并行通信;串行通信。并行通信數(shù)據(jù)各位同時傳送=>并行接口;速度快,但使用的通信線多(數(shù)據(jù)線+控制信號線),且隨著傳輸距離的增加,傳輸可靠性下降。串行通信在單根線上,按一位接一位從低位到高位的先后順序進行傳送/接收。串行通信中,按數(shù)據(jù)傳送方向可分為:單工(Simplex)半雙工(Half Duplex)全雙工(Full Duplex)串行通信中,按照通信的收發(fā)雙方是否有統(tǒng)一的時鐘,可分為兩種基本的傳送方式:異步方式(Asynchronous);同步方式(Synchronous);6.1 計算機串行通信基礎異步傳送方式:1.如何同步?A.必須約定串行數(shù)據(jù)傳送速率波特率(Baud Rate)=>每秒鐘所傳送數(shù)據(jù)的位數(shù),單位為Bd。常用國際標準波特率為:110、300、600、1200、2400、4800、9600和19200BdB.高于波特率的時鐘頻率:一般16倍或64倍C. 加1位起始位0;D. 加1/1.5/2位停止位1)2.異步傳送從哪一位開始傳?(從低位到高位)3.可以傳送多少位數(shù)據(jù)?數(shù)據(jù)在線路上的傳送不是連續(xù)的,數(shù)據(jù)是以一個字(或稱字符)為單位來傳送的,它可以是5/6/7/8位;4.如何糾錯和區(qū)分數(shù)據(jù)/控制信息?可加1位奇偶校驗位或>=1位的控制位;例如用來確定這個字符所代表的性質(zhì):地址還是數(shù)據(jù)6.1 計算機串行通信基礎同步傳送方式: 同步傳送是一種連續(xù)傳送數(shù)據(jù)的方式,即字符與字符間沒有間隙(不用起始位和停止位);僅在數(shù)據(jù)塊開始時用同步字符SYNC來指示; 同步字符的插入可以是單同步字符方式或雙同步字符方式;同步字符可以有用戶約定,也可以采用ASCII碼中規(guī)定的SYN代碼,即16H;因此,一般在硬件設備上需要有插入同步字符或相應的監(jiān)測手段。 在同步傳送時,無論接收或發(fā)送,都要求x1時鐘,即時鐘頻率和波特率一致。發(fā)送方除了傳送數(shù)據(jù)外,還要把時鐘信號同時傳送。串行接口芯片UART和USARTUART通用異步收發(fā)器(Universal Asynchronous Receiver-Transmitter)USART通用同步異步收發(fā)器(Universal Synchronous-Asynchronous Receiver-Transmitter)6.2 80c51串行口51單片機的串口為:可編程/全雙工/異步串行口=>”SBUF”管腳:Rxd=>P3.0;Txd=>P3.1串口控制:SCON(98H);PCON(87H)不可位尋址!6.2 80c51串行口串口工作方式:SM2:多機通信控制位主要用于方式2/3,若允許多機通信,則為1,然后依據(jù)接收到的第九位數(shù)據(jù)的值來決定從機是否接收主機的信號。串口數(shù)據(jù)寄存器:SBUF串口的波特率:方式2:波特率(方式2)=(2MOD/64)×fosc方式1和方式3的波特率都由定時器1的溢出率來決定:波特率(方式1/3)=(2MOD/32)×T1溢出率 T1溢出率=(fosc/12)/(2k-初值) T1為方式0:k=13; T1為方式1:k=16; T1為方式2/3:k=8;6.2 80c51串行口方式0移位寄存器輸入/輸出方式: 是用同步的方式串行輸出或串行輸入數(shù)據(jù),但是和同步通信不是一回事,因為它不能插入或檢出同步字符,此時的串口相當于一個并入串出(發(fā)送)或串入并出的移位寄存器。 串行數(shù)據(jù)通過RXD線輸入或輸出,也就是接到外部移位寄存器的串行輸入或串行輸出;而TXD專用于輸出時鐘脈沖給外部移位寄存器; 方式0可用來同步輸出或接收8位數(shù)據(jù),波特率固定為fosc/12;此時SM2/RB8/TB8都不起作用; 方式0的發(fā)送操作是

注意事項

本文(北方工業(yè)大學 單片機選修課課件)為本站會員(仙***)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!