版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),1,任務(wù)八 學(xué)習(xí)、應(yīng)用位操作指令,1. 位傳送指令(2條)MOV C, bit ;(bit)→CyMOV bit, C ;(Cy)→bit2. 位置位、清零、取反指令(6條)SETB C ; 1→Cy CLR bit ; 0→bit CPL C ; →cySETB bit ; 1→bit CLR C ;
2、 0→Cy CPL bit ;→bit3. 位運(yùn)算指令(4條)ANL C, bit;(Cy)∧( bit)→CyANL C, /bit;(Cy)∧→CyORL C, bit;(Cy)∨( bit)→CyORL C, /bit;(Cy)∨→Cy,下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),2,4、位控制轉(zhuǎn)移指令(5條)JC re ; 若(Cy)=1,則PC+2+rel→PC,程序轉(zhuǎn)移執(zhí)行;
3、 若(Cy)=0,則PC+2→PC,程序順序執(zhí)行JNC rel ;若(Cy)=0,則PC+2+rel→PC,程序轉(zhuǎn)移執(zhí)行; 若(Cy)=1,則PC+2→PC,程序順序執(zhí)行JB bit, rel ;若(bit)=1,則PC+3+rel→PC,程序轉(zhuǎn)移執(zhí)行; 若(bit)=0,則PC+3→PC,程序順序執(zhí)
4、行JNB bit, rel; 若(bit)=0,則PC+3+rel→PC,程序轉(zhuǎn)移執(zhí)行; 若(bit)=1,則PC+3→PC,程序順序執(zhí)行JBC bit, rel;若(bit)=1,則PC+3+rel→PC,程序轉(zhuǎn)移執(zhí)行 且 0→bit; 若(bit)=0,則PC+3→PC,程序順序執(zhí)行,任務(wù)八 學(xué)習(xí)、應(yīng)用位操作指令,下午
5、10時(shí)53分,單片機(jī)應(yīng)用技術(shù),3,【例3-29】試編程實(shí)現(xiàn)將內(nèi)RAM中以BUF開始的一批有符號數(shù),將正數(shù)送外RAM的正數(shù)區(qū),負(fù)數(shù)送外RAM的負(fù)數(shù)區(qū),遇到0中止。(設(shè)正數(shù)區(qū)起點(diǎn)地址是30H,負(fù)數(shù)區(qū)起點(diǎn)地址是60H)源程序: MOV R0, #BUF ; 將數(shù)據(jù)塊的首地址送到R0中 MOV R1, #30H ;將正數(shù)的首地址送到R1中
6、 MOV DPTR, #0060H ;將負(fù)數(shù)的首地址送到DPTR中 MP3: MOV A, @R0 ; 將數(shù)據(jù)讀到累加器A中 JNZ MP4 ;判斷A中數(shù)據(jù)不是0 SJMP $ ; 累加器A中數(shù)據(jù)是0中止 MP4: JB
7、ACC.7 ,MP5 ; 累加器A中數(shù)據(jù)是負(fù)數(shù)? MOVX @R1, A ;將正數(shù)送正數(shù)區(qū) INC R0 ;指向數(shù)據(jù)塊的下一個(gè)數(shù)據(jù) INC R1 ;指向正數(shù)區(qū)的下一個(gè)單元 MP5: MOVX
8、 @DPTR, A ;將負(fù)數(shù)送負(fù)數(shù)區(qū) INC R0 ;指向數(shù)據(jù)塊的下一個(gè)數(shù)據(jù) INC DPTR ;指向負(fù)數(shù)區(qū)的下一個(gè)單元 AJMP MP3 ;返回繼續(xù) END,任務(wù)八 學(xué)習(xí)、應(yīng)
9、用位操作指令,下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),4,任務(wù)八 初步掌握MCS—51單片機(jī)匯編程序設(shè)計(jì),認(rèn)知1 了解單片機(jī)偽指令,偽指令又稱指示性指令,具有和指令類似的形式,但匯編時(shí)偽指令并不產(chǎn)生可執(zhí)行的目標(biāo)代碼,只是對匯編過程進(jìn)行某種控制或提供某些匯編信息。 ◇ 定位偽指令ORG ◇ 定義字節(jié)數(shù)據(jù)偽指令DB ◇ 定義字?jǐn)?shù)據(jù)偽指令DW ◇ 定義空間偽指令DS ◇ 符號定義偽指令EQU或= ◇ 數(shù)據(jù)賦值偽指令DATA
10、 ◇ 數(shù)據(jù)地址賦值偽指令XDATA ◇ 匯編結(jié)束偽指令END,下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),5,1. 定位偽指令ORG格式:[標(biāo)號:] ORG 地址表達(dá)式功能:規(guī)定程序塊或數(shù)據(jù)塊存放的起始位置例如:ORG 1000H; MOV A,#20H 存放于1000H開始的單元。表示下面指令MOV A,#20H存放于1000H開始的單元。 說明:程序中可以出現(xiàn)多個(gè)ORG指令。2.
11、 定義字節(jié)數(shù)據(jù)偽指令DB格式:[標(biāo)號:] DB 字節(jié)數(shù)據(jù)表功能:字節(jié)數(shù)據(jù)表可以是多個(gè)字節(jié)數(shù)據(jù)、字符串或表達(dá)式,它表示將字節(jié)數(shù)據(jù)表中的數(shù)據(jù)從左到右依次存放在指定地址單元。例如:ORG 1000H TAB:DB 2BH,0A0H,‘A’,2*4 ;表示從1000H單元開始的地方存放數(shù)據(jù)2BH,0A0H,41H(字母A的ASCII碼),08H。,任務(wù)八 初步掌握MCS—51單片機(jī)匯編程序設(shè)計(jì),認(rèn)知
12、1 了解單片機(jī)偽指令,下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),6,任務(wù)八 初步掌握MCS—51單片機(jī)匯編程序設(shè)計(jì),認(rèn)知1 了解單片機(jī)偽指令,3. 定義字?jǐn)?shù)據(jù)偽指令DW格式:[標(biāo)號:] DW 字?jǐn)?shù)據(jù)表功能: 與DB類似,但DW定義的數(shù)據(jù)項(xiàng)為字,包括兩個(gè)字節(jié),存放時(shí)高位在前,低位在后。例如: ORG 1000HDATA:DW 324AH,3CH ; 表示從1000H單元開始的地方存放數(shù)據(jù)32H,4AH,
13、00H,3CH(3CH以字的形式表示為003CH)。4. 定義空間偽指令DS格式:[標(biāo)號:] DS 表達(dá)式功能:從指定的地址開始,保留多少個(gè)存儲單元作為備用空間。例如:ORG 1000HBUF:DS 50TAB:DB 22H ;表示從1000H開始的地方預(yù)留50(1000H~1031H)個(gè)存儲字節(jié)空間,22H存放在1032H單元。,下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),7,任務(wù)八 初步掌握MCS—51單
14、片機(jī)匯編程序設(shè)計(jì),認(rèn)知1 了解單片機(jī)偽指令,5. 符號定義偽指令EQU或=格式:符號名 EQU 表達(dá)式符號名=表達(dá)式功能:將表達(dá)式的值或某個(gè)特定匯編符號定義為一個(gè)指定的符號名,只能定義單字節(jié)數(shù)據(jù),并且必須遵循先定義后使用的原則,因此該語句通常放在源程序的開頭部分。例如: SUM EQU 21H MOV A,SUM ;執(zhí)行指令后,累加器A中的值為21H中的數(shù)據(jù)6. 數(shù)據(jù)賦值偽指令DAT
15、A格式:符號名 DATA 表達(dá)式功能:將表達(dá)式的值或某個(gè)特定匯編符號定義一個(gè)指定的符號名,只能定義單字節(jié)數(shù)據(jù),但可以先使用后定義,因此用它定義數(shù)據(jù)可以放在程序末尾進(jìn)行數(shù)據(jù)定義。舉例: MOV A,#LEN LEN DATA 10,下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),8,任務(wù)八 初步掌握MCS—51單片機(jī)匯編程序設(shè)計(jì),認(rèn)知1 了解單片機(jī)偽指令,7. 數(shù)據(jù)地址賦值偽指令XDATA
16、格式:符號名 XDATA 表達(dá)式功能:將表達(dá)式的值或某個(gè)特定匯編符號定義一個(gè)指定的符號名,可以先使用后定義,并且用于雙字節(jié)數(shù)據(jù)定義。舉例: DELAY XDATA 0356H………LCALL DELAY ;執(zhí)行指令后,程序轉(zhuǎn)到0356H單元執(zhí)行8. 匯編結(jié)束偽指令END格式:[標(biāo)號:] END 功能:匯編語言源程序結(jié)束標(biāo)志,用于整個(gè)匯編語言程序的末尾處。,下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),9,程
17、序設(shè)計(jì)概述—設(shè)計(jì)語言,最早人們只能用機(jī)器語言(二進(jìn)制)編寫程序; 為了方便記憶,人們開始用助記符形式的匯編語言編寫程序,稱為低級語言。然后再用匯編系統(tǒng)將其翻譯成機(jī)器語言,該過程稱為匯編;為了用更接近人的語言編寫程序,程序設(shè)計(jì)師們發(fā)明了高級語言,如: BASIC、FORTRAN、PASCAL、 C、JAVA 然后再用編譯系統(tǒng)將其翻譯成機(jī)器語言,該過程稱為編譯; 機(jī)器只能識別機(jī)器語言。所以必須用編譯系統(tǒng)
18、將高級語言編寫的源程序編譯成機(jī)器語言,用匯編系統(tǒng)將用匯編語言編寫的源程序匯編成機(jī)器語言; 由低級或高級語言構(gòu)成的程序稱為源程序,由機(jī)器語言構(gòu)成的程序稱作目標(biāo)程序;,任務(wù)八 初步掌握MCS—51單片機(jī)匯編程序設(shè)計(jì),下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),10,1. 匯編程序設(shè)計(jì)步驟(1) 分析問題,確定算法(2) 畫出程序流程圖編寫較復(fù)雜的程序,畫出程序流程圖是十分必要的。所謂程序流程圖也稱為程序框圖,是根據(jù)控制流程設(shè)計(jì)的
19、,它直接反映了整個(gè)系統(tǒng)以及各個(gè)部分之間的相互關(guān)系,同時(shí)也反映操作順序,因而有助于分析出錯(cuò)原因。(3) 分配內(nèi)存工作區(qū)及有關(guān)端口地址(4) 編制匯編源程序(5) 仿真調(diào)試程序(6) 固化程序,1、單片機(jī)匯編語言程序設(shè)計(jì)的基本步驟如下,認(rèn)知2 掌握匯編語言程序設(shè)計(jì)與匯編,任務(wù)八 初步掌握MCS—51單片機(jī)匯編程序設(shè)計(jì),下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),11,順序程序:順序程序是最簡單、最基本的程序結(jié)構(gòu),其特點(diǎn)是按指令的排列順
20、序一條條地執(zhí)行,直到全部指令執(zhí)行完畢為止。分支程序:分支程序是通過轉(zhuǎn)移指令對相應(yīng)條件的判斷實(shí)現(xiàn)改變程序的執(zhí)行方向的設(shè)計(jì)方法。循環(huán)程序:在程序中需要反復(fù)的執(zhí)行的程序段,為了避免在程序中多次的編寫,可以通過利用條件轉(zhuǎn)移或無條件轉(zhuǎn)移指令來控制程序的執(zhí)行。子程序結(jié)構(gòu):把實(shí)現(xiàn)一定功能的程序編制好,供其他程序調(diào)用。,單片機(jī)匯編語言程序主要的幾種程序設(shè)計(jì)方法:,任務(wù)八 初步掌握MCS—51單片機(jī)匯編程序設(shè)計(jì),下午10時(shí)53分,單片機(jī)應(yīng)用
21、技術(shù),12,順序結(jié)構(gòu)結(jié)構(gòu)特點(diǎn): 按指令的先后順序依次執(zhí)行。例:將內(nèi)RAM20H單元的兩個(gè)壓縮BCD碼拆開變成ASCII碼,存入21H、22H單元。(假設(shè)20H中的BCD碼為00110100),什么是BCD碼?什么是ASII碼?,0011,壓縮BCD碼,0011,0011,0100,低四位ASII碼,高四位ASII碼,任務(wù)八 初步掌握MCS—51單片機(jī)匯編程序設(shè)計(jì),下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),13,方法1:將BCD碼除以1
22、0H,恰好是將BCD碼分別移到了A、B的低4位。然后再各自與30H相或,即成為ASCII碼。,方法2:利用半字節(jié)交換指令來實(shí)現(xiàn)。,任務(wù)八 初步掌握MCS—51單片機(jī)匯編程序設(shè)計(jì),認(rèn)知2 掌握匯編語言程序設(shè)計(jì),下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),14,ORG 0000HMOV A,20HMOV B,#10HDIV ABORL B,#30HMOV 22H,BORL A,#30HMOV 21H
23、,ASJMP $,方法1,源程序如下:,0011,0100,PC,PC,PC,0011 0100,0001 0000,PC,0011,0000,0000 0100,PC,0011 0100,PC,PC,PC,0011,PC,任務(wù)八 初步掌握MCS—51單片機(jī)匯編程序設(shè)計(jì),下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),15,ORG 0000H MOV R0,
24、#20H MOV A,#30H XCHD A,@R0 MOV 22H,A MOV A,@R0 SWAP A
25、 ORL A , #30H MOV 21H, A SJMP $,方法2,PC,PC,PC,PC,PC,PC,PC,PC,PC,源程序如下:,0011,0010 0000,0011,0100,0000,0100,0011,0100,0011,0000,0011,0000,0
26、011,PC,0011,任務(wù)八 初步掌握MCS—51單片機(jī)匯編程序設(shè)計(jì),下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),16,分支程序結(jié)構(gòu)結(jié)構(gòu)特點(diǎn):不一定按指令的先后順序依次運(yùn)行程序,程序的流向有兩個(gè)或兩個(gè)以上分支,根據(jù)指定條件選擇程序的流向。實(shí)例:已知30H單元中有一變量X,要求編寫一程序按下述要求給Y賦值,結(jié)果存入31H單元。 X+1, X>0 Y = 0
27、, X = 0 –1 , X<0題意:根據(jù)X的不同,程序編寫時(shí)有三個(gè)出口,即有三個(gè)分支?。。?!,,想一想:程序怎么編寫?,任務(wù)八 初步掌握MCS—51單片機(jī)匯編程序設(shè)計(jì),下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),17,,,,,,,開始,X?A,A= –1,A= A+1,存結(jié)果,結(jié)束,,,,,,,,,,,,,,Y,Y,N,N,程序框圖:,,A>0?,,A=0?,任務(wù)八 初步掌握M
28、CS—51單片機(jī)匯編程序設(shè)計(jì),下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),18,源程序如下: ORG 2000H MOV A,30H JZ LP1 ;X = 0,轉(zhuǎn)LP1處理 JNB ACC.7,LP2 ;X>0,轉(zhuǎn)
29、LP2處理 MOV A,#0FFH ;X<0,則Y= –1 SJMP LP1 LP2:ADD A,#01 ;X >0,Y=X+1 LP1:MOV 31H,A ;存結(jié)果 SJMP $
30、 ;循環(huán)等待,$表示轉(zhuǎn)至 本地址,此方法適用 于一字節(jié)的偏移量,最高位為符號位。,任務(wù)八 初步掌握MCS—51單片機(jī)匯編程序設(shè)計(jì),下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),19,結(jié)構(gòu)特點(diǎn):利用轉(zhuǎn)移
31、指令反復(fù)運(yùn)行需要多次重復(fù)的程序段。例如:延時(shí)程序:(DELAY) DELAY: MOV R3, #OFFH DEL2: MOV R4,#0FFH DEL1: DJNZ R4,DEL1 DJNZ R3,DEL2
32、 RET 循環(huán)程序的組成: 1. 初始化部分(設(shè)定循環(huán)次數(shù)等)。 2. 循環(huán)體(重復(fù)執(zhí)行的部分,用于完成實(shí)際操作) 3. 循環(huán)控制(不斷修改和判別循環(huán)變量,直至結(jié)束)。 4. 循環(huán)結(jié)束處理。,循環(huán)程序結(jié)構(gòu),任務(wù)八 初步掌握MCS—51單片機(jī)匯編程序設(shè)計(jì),下午10時(shí)53分,單片機(jī)應(yīng)用技術(shù),20,子程序結(jié)構(gòu),在實(shí)際問題中,常常會遇到在
33、一個(gè)程序中多次用到相同的運(yùn)算或操作,若每遇到這些運(yùn)算或操作,都從頭編起,將使程序繁瑣、浪費(fèi)內(nèi)存。因此在實(shí)際中,經(jīng)常把這種多次使用的程序段,按一定結(jié)構(gòu)編好,存放在存儲器中,當(dāng)需要時(shí),可以調(diào)用這些獨(dú)立的程序段。通常將這種可以被調(diào)用的程序段稱為子程序。,主要內(nèi)容: 1. 主程序與子程序的關(guān)系 2. 子程序嵌套 3. 子程序的調(diào)用與返回,任務(wù)八 初步掌握MCS—51單片機(jī)匯編程序設(shè)計(jì),下午10
34、時(shí)53分,單片機(jī)應(yīng)用技術(shù),21,任務(wù)八 初步掌握MCS—51單片機(jī)匯編程序設(shè)計(jì),【例3-33】設(shè)有一長度為30H的字符串在單片機(jī)內(nèi)RAM中,其首地址為40H,要求將該字符串中的每一個(gè)字符加偶校驗(yàn)位,試編程用子程序的方法來實(shí)現(xiàn)。參考程序: ORG0030HMAIN: MOV R0, #40H ; 置地址指針R0初值 MOV R7, #30H ;
35、 置字符串長度LOOP: MOV A, @R0 ;取未加檢驗(yàn)位的ASCII碼 LCALL MP3 ;調(diào)用子程序 MOV @R0, A ;將加檢驗(yàn)位的ASCII碼送回 INC R0 ;修改數(shù)據(jù)指針 DJNZ R7, LOOP
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2014單片機(jī)應(yīng)用技術(shù)
- 《單片機(jī)應(yīng)用技術(shù)》答案
- 單片機(jī)原理與應(yīng)用技術(shù)
- 《單片機(jī)應(yīng)用技術(shù)》選擇題題庫
- 《單片機(jī)應(yīng)用技術(shù)》填空題 題庫
- 單片機(jī)應(yīng)用技術(shù)課程整體教學(xué)設(shè)計(jì)
- 單片機(jī)應(yīng)用技術(shù)培訓(xùn)系統(tǒng)研制.pdf
- 《單片機(jī)應(yīng)用技術(shù)》教材—串行口通信技術(shù)
- 《單片機(jī)應(yīng)用技術(shù)》試卷及答案2套
- 單片機(jī)原理與應(yīng)用技術(shù)復(fù)習(xí)提綱
- 數(shù)字時(shí)鐘單片機(jī)應(yīng)用技術(shù)項(xiàng)目設(shè)計(jì)方案
- 第8章 單片機(jī)開發(fā)及應(yīng)用技術(shù).PDF
- 第8章 單片機(jī)開發(fā)及應(yīng)用技術(shù).PDF
- 關(guān)于《單片機(jī)原理及應(yīng)用技術(shù)》課程整體設(shè)計(jì)初探
- 機(jī)電單片機(jī)應(yīng)用技術(shù)課程設(shè)計(jì)--單片機(jī)多功能測量儀的設(shè)計(jì)
- 單片機(jī)應(yīng)用系統(tǒng)單片機(jī)
- 第2講-單片機(jī)應(yīng)用技術(shù)-湖北職業(yè)技術(shù)學(xué)院
- 單片機(jī)和圖形液晶顯示器接口應(yīng)用技術(shù)
- 《單片機(jī)應(yīng)用技術(shù)》復(fù)習(xí)題及答案電科2018
- 單片機(jī)原理應(yīng)用技術(shù)雙芯燈的應(yīng)用課程設(shè)計(jì)
評論
0/150
提交評論