




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、單片微型計算機原理與應用單片微型計算機原理與應用主講教師:凌宏江華中科技大學材料學院材料學院本科生用電子教案2019-2019學年第一學期目目 錄錄第一章第一章 概述概述第二章第二章 MCS-51的內部結構的內部結構第三章第三章 MCS-51的指令系統(tǒng)的指令系統(tǒng)第四章第四章 匯編語言程序設計匯編語言程序設計第五章第五章 存儲器及擴展技術存儲器及擴展技術第六章第六章 中斷系統(tǒng)中斷系統(tǒng)第七章第七章 I/O口擴展及應用口擴展及應用第八章第八章 定時器定時器/計數器計數器第九章第九章 串行通信及其接口串行通信及其接口 第十章第十章 A/D和和D/A轉換器接口轉換器
2、接口第十一章第十一章 顯示器、鍵盤、打印機接口顯示器、鍵盤、打印機接口第四章第四章 匯編語言程序設計匯編語言程序設計4.1 匯編語言程序設計概述匯編語言程序設計概述4.2 順序程序設計順序程序設計 4.3 分支程序設計分支程序設計4.4 循環(huán)程序設計循環(huán)程序設計4.5 子程序設計子程序設計4.1 匯編語言程序設計概述匯編語言程序設計概述 所謂程序設計,就是按照給定的任務要求,編寫出完整的計算機程序。要完成同樣的任務,使用的方法或程序并不是唯一的。因此,程序設計的質量將直接影響到計算機系統(tǒng)的工作效率、運行可靠性。 程序設計語言包括 機器語言 匯編語言 高級語言 匯編語言源程序由以下兩種指令構成匯
3、編語句指令語句)偽指令指示性語句)1. MCS-51匯編語言的格式匯編語言的格式 一條匯編語言指令中最多包含4個區(qū)段 標號: 操作碼目的操作數, 源操作數;注釋方括符 表示可選項標號代表指令所在地址,1-8個字母/數字組成,以“:”結尾操作碼是指令實體與操作數之間用“空格隔開;目的操作數和源操作數之間用“,”分隔;注釋,以“;”開頭例LOOP: MOV P1, #80H ;將80H送P1 標號 操作碼 第一操作數 第二操作數 注釋 (目的操作數) (源操作數)紅色的內容不是必須的 標號是由用戶定義的符號組成,可有可無。若一條指令中有標號,標號代表該指令所存放的第一個字節(jié)存儲單元的地址,故標號又
4、稱為符號地址,在匯編時,把該地址賦值給標號。 操作碼是指令的功能部分,不能缺省。MCS-51指令系統(tǒng)中共有42種助記符,代表了33種不同的功能。例如MOV是數據傳送的助記符。 操作數是指令要操作的數據信息。根據指令的不同功能,操作數的個數有3、2、1或沒有操作數。上例指令包含了兩個操作數P1和#80H,它們之間用“,”隔開。 注釋可有可無,加入注釋主要為了便于閱讀,程序設計者對指令或程序段作簡要的功能說明,在閱讀程序或調試程序時將會帶來很多方便。2. 偽指令偽指令 偽指令并不是真正的指令,也不產生相應的機器碼,它們只是在計算機將匯編語言轉換為機器碼時,指導匯編過程,告訴匯編程序如何匯編。 “偽
5、字體現在匯編時不產生機器指令代碼,不影響程序的執(zhí)行,僅產生供匯編時用的某些命令,在匯編時執(zhí)行某些特殊操作。 有哪些常用偽指令? 不同的單片機及其開發(fā)裝置所定義的偽指令不全相同。下面介紹幾種常用的偽指令 1) ORG (Origin)格式:格式:ORG 表達式表達式功能:規(guī)定程序塊或數據塊存放的起始地址。功能:規(guī)定程序塊或數據塊存放的起始地址。注:表達式必須為注:表達式必須為16位地址值位地址值,同一源程序中可多次同一源程序中可多次使用,自小至大,不能重疊。使用,自小至大,不能重疊。 如:如:ORG 0000HLJMPSTARTORG 000BHLJMPINTT0ORG 0030HSTART:I
6、NTT0:RETI2)程序結束偽指令程序結束偽指令END 格式:格式:END 功能:匯編語言程序結束偽指令。功能:匯編語言程序結束偽指令。注:一定放在程序末尾!匯編程序對注:一定放在程序末尾!匯編程序對END后后語句不予理睬。語句不予理睬。例:例: ORG 2000HSTART: MOV A,#64H END3) 等值指令等值指令EQU (Equate)格式:字符名稱格式:字符名稱 EQU 數值或匯編符號數值或匯編符號 功能:將操作數段中的地址或數據賦值給字功能:將操作數段中的地址或數據賦值給字符名稱。符名稱。注:先賦值后使用,因此該語句放在源程序開頭。注:先賦值后使用,因此該語句放在源程序開
7、頭。例:例:AAEQU 30HK1EQU R0MOV A, AA;(30H)AMOV A, #AA;#30H AMOV A, K1;R0A4) 數據地址賦值偽指令數據地址賦值偽指令 DATA格式:字符名稱格式:字符名稱 DATA 表達式表達式功能:將表達式指定的數據或代碼地址功能:將表達式指定的數據或代碼地址賦予規(guī)定的字符名稱。賦予規(guī)定的字符名稱。注:該指令與注:該指令與EQU指令相似,只是,可先使指令相似,只是,可先使用后定義,放于程序開頭、結尾均可。用后定義,放于程序開頭、結尾均可。例:例:AA DATA30HK1 DATAR05) 位地址符號指令位地址符號指令BIT格式:字符名稱格式:字
8、符名稱 BIT 位地址位地址功能:把位地址賦于規(guī)定的字符名稱。功能:把位地址賦于規(guī)定的字符名稱。例:例:ABCBIT P1.1KEY1 BIT P3.2 BIT 22H6) 定義字節(jié)數據定義字節(jié)數據 DB (Define Byte)格式:格式:標號標號: DB 字節(jié)常數或字節(jié)常數或ASCII字符字符功能:從指定單元開始定義存儲若干功能:從指定單元開始定義存儲若干個字節(jié)的數據或個字節(jié)的數據或ASCII碼字符,常用于定義數碼字符,常用于定義數據常數表。據常數表。例例: ORG 1000H TAB: DB 34H, 0DEH, A, BDB 0AH, 0BH, 207) 定義字定義字 DWDefin
9、e Word)格式:格式:標號標號: DW字常數或字常數或ASCII字符字符功能:從指定單元開始定義存儲若功能:從指定單元開始定義存儲若干個字的數據或干個字的數據或ASCII碼字符。碼字符。 例:例:ORG 2000HTAB:DW 1234H,B DW 0AH,208) 定義空間偽指令定義空間偽指令 DS (Define Store)格式:格式:標號標號: DS 表達式表達式功能:從指定地址開始,保留由表達式功能:從指定地址開始,保留由表達式指定的若干字節(jié)空間作為備用空間。指定的若干字節(jié)空間作為備用空間。例例: ORG 1000H DS 0AH DB 71H,11H,11H ;從;從100BH
10、開開始存放始存放 ;71H、11H、11H。3. 匯編語言程序編輯和匯編匯編語言程序編輯和匯編1. 編輯源程序,以編輯源程序,以.ASM擴展名存盤);擴展名存盤);2. 匯編手工或機器匯編);匯編手工或機器匯編);如:如:MOV A, #88H;機器碼機器碼74,88H 又如:又如: 地址地址 目標碼目標碼 源程序源程序 ORG 1000H 1000H 747F MOV A, #7FH 1002H 7944 MOV R1, #44H END 匯編有兩種方法:手工匯編、機器匯編。匯編有兩種方法:手工匯編、機器匯編。4. 匯編程序設計步驟匯編程序設計步驟任務分析硬件、軟件系統(tǒng)分析)任務分析硬件、軟
11、件系統(tǒng)分析)確定算法確定算法程序總體設計和流程圖繪制程序總體設計和流程圖繪制關于流程圖符號:關于流程圖符號:開場、終了開場、終了-圓角矩形圓角矩形工作任務工作任務-矩形矩形判斷分支判斷分支-菱形菱形程序流向程序流向-程序連接程序連接-開場終了4. 分配內存,確定程序與數據區(qū)存放地址;分配內存,確定程序與數據區(qū)存放地址;5. 編寫源程序;編寫源程序;6. 調試、修正,最終確定程序。調試、修正,最終確定程序。方法技巧方法技巧1. 模塊化設計按功能分:顯示、打印、輸模塊化設計按功能分:顯示、打印、輸入、發(fā)送等)入、發(fā)送等)2. 盡量采用循環(huán)及子程序結構節(jié)省內存)盡量采用循環(huán)及子程序結構節(jié)省內存)4.
12、2 順序程序設計順序程序設計 順序結構程序是一種最簡單、最基本的程序(也稱為簡單程序),它是一種無分支的直線形程序,按照程序編寫的順序依次執(zhí)行。其特點是,程序按編寫的順序依次往下執(zhí)行每一條指令,直到最后一條。是構成復雜程序的基礎。例4-1:變量存在內部RAM的20H單元中,其取值范圍:05,用查表法編程求其平方值。例例4-1的框圖與程序的框圖與程序 ORG 1000HSTART: MOV DPTR, #TABLE MOV A, 20H MOVC A, A+DPTR MOV 21H, A SJMP $ ORG 2000HTABLE: DB 0, 1, 4, 9, 16, 25 END4.3 分支
13、程序設計分支程序設計 分支程序可根據要求無條件或條件地改變程序分支程序可根據要求無條件或條件地改變程序執(zhí)行流向。編寫分支程序主要在于正確使用轉移指執(zhí)行流向。編寫分支程序主要在于正確使用轉移指令。分支程序有:雙分支結構、多分支結構散轉)令。分支程序有:雙分支結構、多分支結構散轉)【例4-2】雙分支結構1 設補碼X放在內部RAM30H單元中,函數Y與X有如下的關系式:試編寫程序,根據X的值求出Y,并放回原單元。解:取出X后先做取值范圍的判斷,用累加器A狀態(tài)轉移指令判斷X是否為0,用位狀態(tài)轉移指令判斷X是大于0還是小于0。0, 50,200,xxxHxxy【例4-2】程序及程序流程圖 MOV A,3
14、0H JZ ZERO JNB ACC.7,PLUS ADD A,#5 MOV 30H,APLUS: SJMP $ZERO: MOV 30H,#20H SJMP $ END【例4-3】雙分支結構2內部RAM40H和41H單元中各有一無符號數,比較其大小,將大數存放于內部RAM 60H單元,小數存放于內部RAM61H單元,如兩數相等,則分別送往這2個單元。 解 用比較不等轉移指令CJNE比較兩個無符號數,先確定它們是否相等,若不相等時再根據借位標志確定這兩個無符號數的大小。程序框圖如圖4.4所示。【例4-3】程序及程序流程圖 MOVA, 40H MOV61H, 41H CJNEA, 41H, LO
15、OP AJMPAGEQ LOOP: JNCAGEQ;A(41H)則無借位 XCHA, 61H;A(41H)有借位AGEQ:MOV60H, A;A與(61H)交換 SJMP END 【例4-4】多分支結構散轉) N路分支程序,N8。要求程序根據其運行中所產生的寄存器R3的值,來決定如何進行分支。 解:為實現N路分支,可以多次使用比較轉移指令:CJNE R3, #data , rel流程圖如圖4.6所時,但這樣比較次數太多,當N較大時,執(zhí)行速度就較慢。 我們可以用變址尋址的轉移指令JMPA+DPTR使問題得到解決。首先安排存放一個轉移分支入口的地址表,把入口地址表的首地址送到DPTR,再把R3的內
16、容送累加器A?,F以4個分支為例寫出程序。假設4個分支的不同功能分別是給不同的位置。【例4-4】程序及程序流程圖 MOV A,R3 MOV DPTR,#BRTAB MOVC A,A+DPTR JMP A+DPTRBRTAB: DB BR0 DB BR1 DB BR2 DB BR3BR0: SETB P1.0 SJMP BRKBR1: SETB P1.1 SJMP BRKBR2: SETB P1.2 SJMP BRKBR3: SETB P1.3BRK: SJMP BRKR3=0R3=2R3=1YYNNNY轉向第0分支轉向第1分支轉向第2分支4.4 循環(huán)程序設計循環(huán)程序設計 循環(huán)程序一般由4部分組成
17、。 (1置循環(huán)初值。 (2循環(huán)體。 (3循環(huán)修改。 (4循環(huán)控制。 圖(a)結構是“先執(zhí)行后判斷”,適用于循環(huán)次數已知的情況。 圖(b)結構是“先判斷后執(zhí)行”,適用于循環(huán)次數未知的情況。【例4-5】單循環(huán) 編制一個循環(huán)閃爍燈的程序。有8個發(fā)光二極管,每次其中一個燈閃爍點亮10次后,轉到下一個閃爍10次,循環(huán)不止?!纠?-5】程序 用P1口驅動LED,共陽連接。當P1.x輸出低電平時,LED燈亮,否則不亮。 MOV A, #0FEH ;燈亮初值SHIFT: LCALL FLASH ;調閃亮10次子程序 RLA ;左移一位 SJMP SHIFT ;循環(huán)FLASH:MOV R2, #0AH ;閃爍1
18、0次計數FLASH1:MOV P1, A ;點亮 LCALLDELAY ;延時 MOV P1, #0FFH;熄滅LCALL DELAY ;延時DJNZ R2, FLASH1 ;循環(huán)RET 【例4-6】多重循環(huán) 編制用軟件方法延時S的程序 軟件延時時間與執(zhí)行指令的時間有關。如果使用6MHz晶振,一個機器周期為2s。計算出執(zhí)行每一條指令以及一個循環(huán)所需要的時間,根據要求的延時時間確定循環(huán)次數,如果單循環(huán)時間不夠長,可以采用多重循環(huán)?!纠?-6】程序 MOV R5,#05HDELY0:MOV R6,#0C8HDELY1:MOV R7,#0F8H NOPDELY2:DJNZ R7,DELY2 DJNZ R6,DELY1 DJNZ R5,DELY0 這是一個三重循環(huán)程序。前條指令的機器周期數為,后條指令的機器周期數為。執(zhí)行內循環(huán)所用的機器周期數為2482=496,執(zhí)行中間循環(huán)所用的機器周期數(496+4)200=100000;執(zhí)行外循環(huán)所用的機器周期數為(100000+3)5=500015,再加上執(zhí)行第一條指令就是執(zhí)行整段程序所用的機器周期數。因此這段程序的延時時間為(500015+1)2s=1.000032s。4.5 子程序設計子程序設計 在匯編語言源程序中使用子程序時,一般要注意兩個問題:參數傳遞和現場保護。參數傳遞一般可采用以
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同視角下的產品經銷三方合作
- 工業(yè)園區(qū)食堂勞務合同標準版
- 梧州市長洲區(qū)政府綠化工程委托合同
- 隱名投資利益分配合同
- 代理社保業(yè)務合同合作協(xié)議2025
- 代理合作協(xié)議合同模板
- 搪瓷企業(yè)設備更新與技術改造考核試卷
- 旅游客運突發(fā)事件應急預案考核試卷
- 政策性銀行服務農村電商與精準扶貧考核試卷
- 后勤服務中的客戶關系管理測試考核試卷
- 借哪吒精神燃開學斗志 開學主題班會課件
- GB/T 45107-2024表土剝離及其再利用技術要求
- 一年級家長會課件2024-2025學年
- 2024年海南省??谑行∩鯏祵W試卷(含答案)
- 《中醫(yī)藥健康知識講座》課件
- 7S管理標準目視化管理標準
- 幼兒園安全教育課件:《危險的小圓珠》
- 廣東省五年一貫制語文試卷
- 過橋資金(新)
- 顱內壓監(jiān)測的方法與護理ppt課件
- 房地產項目盈虧平衡分析
評論
0/150
提交評論