




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、單元四 匯編語言程序設(shè)計4.1 任務(wù)七單片機計數(shù)4.2 任務(wù)八LED顯示電路返回主目錄4.1 任務(wù)七 單片機計數(shù) 學(xué)習目標:通過學(xué)習任務(wù)七的完成方法,掌握MCS-51單片機匯編語言中的偽指令的功能特點。 任務(wù)描述:利用實驗開發(fā)板上的555振蕩電路產(chǎn)生的4HZ的脈沖信號進行計數(shù),要求每計十個數(shù)單燈向左移動一次。4.1.1 硬件電路ORG0000HLJMPMAINORG0030HMAIN:MOVTMOD,#06HMOVTH0,#0F6HMOVTL0,#0F6HSETBTR0MOVA,#0FEHLOOP:MOVP1,AJBCTF0,MLOOPSJMPLOOPMLOOP:RL ASJMPLOOPEND
2、 4.1.2 程序設(shè)計硬件演示:用“偉福”模擬仿真軟件進行程序的編輯、編譯。 打開“ISP下載軟件”將目標文件下載到ISP-4實驗 開發(fā)板上的AT89S51單片機芯片,觀察程序運行 結(jié)果。提出問題:1、ORG END這樣指令有什么意義? 2、什么是偽指令?有哪些常用偽指令?4.1.3 源程序編輯、編譯、下載什么是偽指令偽指令又稱匯編程序控制譯碼指令,屬說明性匯編指令。偽”字體現(xiàn)在匯編時不產(chǎn)生機器指令代碼,不影響程序的執(zhí)行,僅產(chǎn)生供匯編時用的某些命令,在匯編時執(zhí)行某些特殊操作。如EDN表示編譯到此結(jié)束。 4.1.4 相關(guān)知識-偽指令(1 )定位偽指令ORG格式:標號: ORG 地址表達式功能:規(guī)
3、定程序塊或數(shù)據(jù)塊存放的起始位置。 例如:ORG 1000H;MOV A,#20H表示下面指令MOV A,#20H存放于1000H開始的單元(2)定義字節(jié)數(shù)據(jù)偽指令DB格式:標號: DB 字節(jié)數(shù)據(jù)表功能:字節(jié)數(shù)據(jù)表可以是多個字節(jié)數(shù)據(jù)、字符串或表達式,它表示將字節(jié)數(shù)據(jù)表中的數(shù)據(jù)從左到右依次存放在指定地址單元。2.常用偽指令例如:ORG 1000H TAB: DB 2BH, 0A0H, A, 2*4 ;表示從1000H單元開始的地方存放數(shù)據(jù)2BH,0A0H,41H(字母A的ASCII碼),08H (3) 定義字數(shù)據(jù)偽指令DW格式:標號: DW 字數(shù)據(jù)表功能:與DB類似,但DW定義的數(shù)據(jù)項為字,包括兩
4、個字節(jié),存放時高位在前,低位在后。例如:ORG 1000H DATA: DW 324AH, 3CH ;表示從1000H單元開始的地方存放數(shù)據(jù)32H,4AH,00H ; 3CH(3CH以字的形式表示為003CH) (4)定義空間偽指令DS格式:標號: DS 表達式功能:從指定的地址開始,保留多少個存儲單元作為備用的空間。例如: ORG 1000H BUF: DS 50 ; TAB: DB 22H ;22H存放在1032H單元。表示從1000H開始的地方預(yù)留50(1000H1031H)個存儲字節(jié)空間。 (5) 符號定義偽指令EQU或“=”格式:符號名 EQU 表達式 或 符號名=表達式功能:將表達
5、式的值或某個特定匯編符號定義為一個指定的符號名,只能定義單字節(jié)數(shù)據(jù),并且必須遵循先定義后使用的原則,因此該語句通常放在源程序的開頭部分。例如:LEN=10SUM EQU 21HMOV A,#LEN;執(zhí)行指令后,累加器A中的值為0AH (6)數(shù)據(jù)賦值偽指令DATA格式:符號名 DATA 表達式功能:將表達式的值或某個特定匯編符號定義為一個指定的符號名,只能定義單字節(jié)數(shù)據(jù),但可以先使用后定義,因此用它定義數(shù)據(jù)可以放在程序末尾進行數(shù)據(jù)定義。例如: MOV A,#LEN LEN DATA 10盡管LEN的引用在定義之前,但匯編語言系統(tǒng)仍可以知道A的值是0AH。 7. 數(shù)據(jù)地址賦值偽指令XDATA格式:
6、符號名 XDATA 表達式功能:將表達式的值或某個特定匯編符號定義為一個指定的符號名,可以先使用后定義,并且用于雙字節(jié)數(shù)據(jù)定義。例如:DELAY XDATA 0356H LCALL DELAY ;執(zhí)行指令后,程序轉(zhuǎn)到0356H單元執(zhí)行 8. 匯編結(jié)束偽指令END格式:標號: END 功能:匯編語言源程序結(jié)束標志,用于整個匯編語言程序的末尾處。小結(jié):1.偽指令在程序中的作用是什么?2.單片機匯編語言程序中常用的有哪些偽指令?思考與練習:4.2 4.34.2 任務(wù)八 LED顯示電路 學(xué)習目標:通過學(xué)習任務(wù)八的完成方法,掌握單片機匯編語言程序設(shè)計的結(jié)構(gòu)化設(shè)計方法,如分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、子程序結(jié)構(gòu)、查
7、表程序結(jié)構(gòu)等。 任務(wù)描述:將09這十個數(shù)循環(huán)送P1口七段LED上顯示 。4.2.1 硬件電路START: ORG 0100H MAIN: MOV R0,#00H MOV DPTR,#TABLE DISP: MOVA,R0 MOVCA,A+ADPTR MOVP1,A ACALLDELAY INCR0 CJNER0,#0AH,DISP AJMPMAINDELAY: MOVR1,#0FFH LOOP0: MOVR2,#0FFHLOOP1: DJNZR2,LOOP1DJNZR1,LOOP0RETTABLE:DB0C0H,0F9H, DB0A4H,0B0H DB99H,92H DB82H,0F8H DB
8、80H,90H END 4.2.2 程序設(shè)計4.2.3 源程序編輯、編譯、下載硬件演示:用“偉?!蹦M仿真軟件進行程序的編輯、編譯。 打開“ISP下載軟件”將目標文件下載到ISP-4實驗 開發(fā)板上的AT89S51單片機芯片,觀察程序運行 結(jié)果。提出問題: 單片機源程序有哪些常用結(jié)構(gòu)形式? 一個應(yīng)用系統(tǒng)的匯編語言源程序,無論其系統(tǒng)功能的要求簡單還是復(fù)雜,其程序結(jié)構(gòu)的組成基礎(chǔ)總是由簡單程序、分支程序、循環(huán)程序、子程序、查表程序等結(jié)構(gòu)化程序塊組合而成。P2入口出口P1P3(a) 順序結(jié)構(gòu)過程A過程B是否入口出口條件滿足?(b) 分支結(jié)構(gòu)過程是否入口出口條件滿足?(c) 循環(huán)結(jié)構(gòu)4.2.4 相關(guān)知識-
9、MCS-51基礎(chǔ)程序設(shè)計1. 單片機基本程序結(jié)構(gòu)2. 分支程序結(jié)構(gòu)條件成立?NY(1)單分支程序結(jié)構(gòu) 只有一個入口 兩個出口 條件中只有兩種可能性出現(xiàn) 條件一般由運算或檢測的狀態(tài)標志提供 通常使用條件判斷指令實現(xiàn)單分支結(jié)構(gòu)程序的典型形式NY開始程序段1條件成立?程序段(2)結(jié)束分支程序(2)分支程序(1)NY開始程序段1條件成立?程序段(2)結(jié)束程序段(3)(A)=nS0S1Sn(2)多分支程序結(jié)構(gòu) 只有一個入口 多個出口 條件有多種可能性出現(xiàn) 通常使用散轉(zhuǎn)指令實現(xiàn) JMP A+DPTR采用轉(zhuǎn)移指令表的散轉(zhuǎn)程序例: 編出要求根據(jù)R的內(nèi)容轉(zhuǎn)向各個操作程序的程序。即當(R)=0,轉(zhuǎn)向OPR0(R)
10、=1,轉(zhuǎn)向OPRl(R)=n,轉(zhuǎn)向OPRn解:程序清單如下:MOV A,RRL A ;分支序號值乘2MOV DPTR ,#BRTABL ;轉(zhuǎn)移指令表首址JMP A+DPTR ;轉(zhuǎn)向形成的散轉(zhuǎn)地址BRTABL:AJMP OPR0 ;轉(zhuǎn)移指令表AJMP OPR1AJMP OPRn散轉(zhuǎn)程序舉例3. 循環(huán)程序結(jié)構(gòu)(1)循環(huán)結(jié)構(gòu)程序的基本組成(2)循環(huán)結(jié)構(gòu)程序舉例兩條轉(zhuǎn)移指令:DJNZ Rn,rel ;以工作寄存器Rn為控制寄存器DJNZ direct,rel ;以直接尋址單元作控制寄存器控制計數(shù)器方式:一般采用減1計數(shù)(遞減方式)。 (3)多重循環(huán)結(jié)構(gòu)程序應(yīng)用情況:復(fù)雜問題或是循環(huán)數(shù)超出256。多重循
11、環(huán)結(jié)構(gòu):即循環(huán)中包含循環(huán)程序或一個大循環(huán)中包含多個小循環(huán)程序,也稱循環(huán)嵌套。循環(huán)重數(shù)不限,但不能交叉。例如:雙重軟件延時START:MOV R3,#DATA1 ;外層循環(huán)計數(shù)初值LOOP1:MOV R2,#DATA2 ;內(nèi)層循環(huán)計數(shù)初值LOOP2:NOPNOPNOPDJNZ R2,LOOP2 ;(R2)-10,轉(zhuǎn)LOOP2DJNZ R3,LOOP1 ;(R3)-10,轉(zhuǎn)LOOP1END ;結(jié)束4. 子程序結(jié)構(gòu)(1)子程序的結(jié)構(gòu) 子程序的結(jié)構(gòu)A、必須標明子程序的入口地址,又稱首地址,以便在主程序調(diào)用;B、必須以返回指令RET結(jié)束子程序。 參數(shù)傳遞A、傳遞數(shù)據(jù) B、傳遞地址。 主程序的現(xiàn)場保護和恢
12、復(fù)A、調(diào)用前保護、返回后恢復(fù)。B、調(diào)用后保護、返回前恢復(fù)。 主程序PUSH PSW ;將PSW、A、DPTR等入棧保護PUSH ACCPUSH BPUSH DPL PUSH DPH PUSH PSW,#10H ;選用工作寄存器組2,將0組保護LCALL addr16 ;調(diào)用子程序addr16POP DPH ;出棧POP DPLPOP BPOP ACCPOP PSWA、調(diào)用前保護、返回后恢復(fù)ADDR:PUSH PSW ;子程序現(xiàn)場保護 PUSH ACC PUSH B PUSH DPL PUSH DPH MOV PSW,#08H ;選用工作寄存器組1,0組保護 ;子程序主體 POP DPH ;現(xiàn)場
13、恢復(fù)POP DPL POP BPOP ACCPOP PSWRET ;返回B、調(diào)用后保護、返回前恢復(fù)4. 子程序結(jié)構(gòu)(2)子程序的特性 通用性浮動性 可遞歸性 子程序的說明文件 子程序名:標明子程序功能的名稱。 子程序功能:簡要說明子程序能完成的主要功能,包括重要算法、參量要求及有關(guān)存儲單元配置等。 子程序調(diào)用:指明本子程序還需調(diào)用哪些子程程序流程圖及程序清單。5. 查表程序結(jié)構(gòu) 查表指令MOVC A,A+DPTRMOVC A,A+PC DPTR作為基地址查表A、將待查表格的首地址置入DPTR基址寄存器;B、將待查的表格具體項數(shù)值置入變址寄存器A中;C、執(zhí)行指令 PC作為基地址查表A、表格不能放
14、在查表指令的下一條。B、表格下移若干字節(jié)。C、A賦初值時使用ADD A,#DATA; #DATA為表格與查表指令之間的地址差。使用MOVC A,A+DPTR指令來查表,程序清單如下:MOV DPTR,#JZ ;子程序入口地址表首址RL A ;鍵碼值乘以 MOV R2,A ;暫存MOVC A,A+DPTR ;取得入口地址低位PUSH A ;進棧暫存INC AMOVC A,A+DPTR ;取得入口地址高位MOV DPH,APOP DPLCLR AJMP A+DPTR ;轉(zhuǎn)向鍵處理子程序JZ: DB RK0L ;處理子程序入口地址表 DB RK0H DB RK1L DB RK1H DB RK2L DB RK2H 查表程序舉例6. 單片機源程序的基本格式單片機應(yīng)用系統(tǒng)源程序的基本格式及其部分地址分配示例:ORG 0000HLJMP START ;轉(zhuǎn)向主程序ORG 0003HLJMP INTE0 ;轉(zhuǎn)向外中斷0服務(wù)子程序ORG 000BHLJMP INTTFO ;轉(zhuǎn)向定時/計數(shù)器0服務(wù)子程序 ;可按實際需要設(shè)置服務(wù)子程序ORG 0030HSTART:MOV A,#00H ;主程序從0030H單元開始MOV R1,#dataMOV R0,#00HDJNZ R1,LOOP0 ;初始化程序段 ;主程序主體區(qū)段ORG 3100HA0: ;子程序A0RETA1 ;子程序A1RE
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/CRIA 29008-2023載重子午線輪胎胎圈耐久性能室內(nèi)試驗方法
- T/CRIA 16011-2022煤礦用輸送帶合成纖維整體帶芯
- T/CNIDA 011-2023重水堆端部組件本體用11Cr12MnNiSi馬氏體不銹鋼鍛件
- T/CIET 29-2023裝配式波紋鋼結(jié)構(gòu)立式消力池應(yīng)用技術(shù)規(guī)程
- T/CHIA 24.1-2022兒童營養(yǎng)與健康調(diào)查基本數(shù)據(jù)集第1部分:0~23月齡
- T/CGCC 78-2023區(qū)域商業(yè)價值評價指南
- T/CGCC 10-2018交通樞紐型商業(yè)經(jīng)營管理要求
- T/CFDCC 0607-2023健康整家定制評價通則
- T/CFDCC 0213-2021家居企業(yè)信用等級評價準則
- T/CECS 10343-2023不銹鋼槽式預(yù)埋組件
- 制造部生產(chǎn)效率提升計劃
- 寵物丟失諒解協(xié)議書
- 幼兒園中班科學(xué)活動公開課《飛機本領(lǐng)大》課件
- 體育競彩考試題及答案
- 中國日用器皿行業(yè)市場前景預(yù)測及投資價值評估分析報告
- 2025年天津市西青區(qū)九年級二模數(shù)學(xué)試題(含部分答案)
- 2022年新高考全國I卷數(shù)學(xué)真題
- 2025中考英語解題技巧專題10.閱讀表達解題技巧(學(xué)生版+解析)
- 青少年體重健康管理
- 23G409先張法預(yù)應(yīng)力混凝土管樁
- 2022年高考真題-政治(重慶卷) 含答案
評論
0/150
提交評論