版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第5章MCS-51單片機匯編語言程序設計
程序設計:指令的有序羅列。兩個方面:
(1)選擇某種語言;
(2)解決問題的方法與步驟
-----(算法)本章介紹匯編語言程序設計的基本問題,包括:5.1程序設計概述5.2基本的程序設計5.3基本功能程序的設計5.4數字濾波程序5.1程序設計概述一、程序設計步驟(1)分析問題,確定問題的數學模型(2)確定符合計算機運算的算法(3)繪制流程圖(4)內存單元分配(5)據流程圖編寫匯編語言程序(6)程序調試與修改二、程序設計技術
(1)模塊化程序設計(2)自頂向下的程序設計(3)軟件的抗干擾技術三、評價程序質量的標準
①程序的執(zhí)行時間;②程序所占用的內存字節(jié)數;③程序的邏輯性、可讀性;④程序的兼容性、可擴展性;⑤程序的可靠性。5.2基本的程序設計在程序設計過程中,無論多復雜的程序結構都是由基本的程序結構組成的。
一、順序結構程序設計二、分支結構的程序設計三、循環(huán)結構的程序設計一、順序結構的程序
順序結構程序是一種最簡單、最基本的程序,按照程序編寫的順序逐條依次執(zhí)行,直到程序結束。這是程序的最基本的形式,任何程序都離不開這種形式。例5-1:
編程將片內RAM21H單元的低3位和20H單元的低5位合并為一個字節(jié)送片內RAM30H,要求21H的低3位放在高位上。分析:(1)將RAM20H的高位屏蔽掉;(2)將21H的高3位屏蔽掉,然后將其低5位移到高5位上;(3)將以上兩者合并即可。
MOV 30H,20H
;20H中內容處理 ANL30H,#1FH MOVA,21H
;21H中內容處理 SWAPA RLA ANL A,#0E0H ORL 30H,A;兩數合并
例5-2:求內部RAM20H、21H中的4位壓縮BCD數與22H、23H中的4位壓縮BCD數的差,結結果送24H、25H中。即:(20H)(21H)-(22H)(23H)=(24H)(25H).分析:[(9999H+1)-(22H)(23H)]+(20H)(21H).CLRCMOVA,#9AH;用999AH-(22H)(23H)SUBBA,23HMOV25H,A;結果送24H和25HMOVA,#99HSUBBA,22HMOV24H,AMOVA,25H;(24H)(25H)+(20H)(21H)ADDA,21HDAAMOV25H,A;結果存24H25HMOVA,24HADDCA,20HDAAMOV24H,A補充例題::片外RAM1000H、1001H分別存放兩兩個無符號號數10010001B和10001010B,如果視其為二進制數,,編程完成成其加法和和減法運算算,結果放放到片外RAM1002H和1003H單元;如果果視其為BCD碼,編程完完成其加法法運算和減減法運算,,結果放到到片外RAM1004H和1005H單元。(框圖)二、分支結結構的程序序分支結構程程序是利用用條件轉移移指令,使使程序執(zhí)行行到某一指指令時,根根據條件是是否滿足,,來改變程程序執(zhí)行的的順序。編寫分支結結構的程序序主要在于于正確使用轉轉移指令。編寫分支結結構的程序序的關鍵是是確定好分支支條件轉移指令有有三種:無條件轉移移條件轉移散轉(1)無條件轉轉移它的程序轉轉移方向是是設計者事事先安排的的,與已執(zhí)執(zhí)行程序的的結果無關關,使用時時只需給出出正確的轉轉移目標地地址或偏移移量即可,,如:ORG0000HLJMPMAIN···ORG0030HMAIN:······(2)條件轉移移它是根據已已執(zhí)行程序序對標志位位或累加器器或對內部部RAM某位的影響響結果,決決定程序的的走向,形形成各種分分支。可用于分支支結構的指指令:JZ/JNZ、CJNE、DJNZ、JC/JNCJB/JNB、JBC程序框圖:(a、b正確,c錯誤)(3)散轉它是根據某某種已輸入入的或運算算的結果,,使程序轉轉向各個處處理程序中中去,一般般單片機實實現(xiàn)散轉程程序常用于于逐次比較較和算法處處理的方法法。這些方方法一般比比較麻煩、、易出錯,,MCS-51單片機具有有一條專門門的散轉指指令JMP@A+DPTR,可以使它較較方便地實實現(xiàn)散轉功功能。例5-3:編制程序使使y按下式賦值值:VAREQU30HFUNCEQU31HSTART:MOVA,VAR;取xJZ COMP;為0轉COMPJNBACC.7,POSI;>0轉POSIMOVA,#0FFH;<0,-1ASJMPCOMPPOSI:MOVA,#01HCOMP:MOVFUNC,ARET例5-4:設外外部部存存儲儲器器單單元元ST1和ST2存放放兩兩個個不帶帶符符號號的的二二進進制制數,,找找出出其其中中的的大大數存存入入ST3單元元。。START1:CLRC;進進位位位位清清0MOVDPTR,#ST1;設設數數據據指指針針MOVXA,@DPTR;取取第第一一個個數數MOVR1,A;暫暫存存第第一一個個數數INCDPTRMOVXA,@DPTR;取取第第二二個個數數MOVR2,A;暫暫存存第第二二個個數數SUBBA,R1;兩兩數數比比較較JNCBIG1XCHA,R1;第第一一個個數數大大SJMPLBIG1:MOVA,R2L:INCDPTRMOVX@DPTR,A;存存大大數數例5-5:空調調機機在在制制冷冷時時,,若若排排出出空空氣氣比比吸吸入入空空氣氣溫溫度度低低8℃℃,則則認認為為工工作作正正常常,,否否則則認認為為工工作作故故障障,,并并設設置置故故障障標標志志。。設片片內內RAM40H中存存放放吸吸入入空空氣氣溫溫度度值值,,41H中存存放放排排除除空空氣氣溫溫度度值值。。若(40H)-(41H)≥8℃℃,則則空空調調機機制制冷冷正常常,在在42H單元元中中存存放放“0”。否否則則在在42H單元元中中存存放放“FFH”,以以示示故故障障((在在此此42H單元元被被設設定定為為故故障障標標志志))。。為了了可可靠靠地地監(jiān)監(jiān)控控空空調調機機的工工作作情情況況,,應應做做兩兩次次減法法,,第第一一次次減減法法(40H)-(41H),,若C=1,則則肯肯定定有有故故障障;;第二二次次減減法法用用兩兩個個溫溫度度的的差值值減減去去8℃℃,若若C=1,說說明溫溫差差小小于于8℃℃,空空調調機機也也不正正常常工工作作。。ORG0000HSTART:MOVA,40H;吸吸入入溫溫度度值值送送ACLRCSUBBA,41HJCERROR;C=1有故故障障SUBBA,#8JCERROR;溫溫差差小小于于8℃℃,有有故故障障MOV42H,#0;工工作作正正常常標標志志SJMPEXITERROR:MOV42H,#0FFH;工工作作故故障障標標志志EXIT:SJMP$END三、、循循環(huán)環(huán)結結構構的的程程序序循環(huán)環(huán)程程序序是是強強制制CPU重復復執(zhí)執(zhí)行行某某一一指指令令序序列列的的一一種種程程序序結結構構形形式式。。循環(huán)環(huán)結結構構的的程程序序一一般般由由5部部分分組組成成::初始始化化,,循循環(huán)環(huán)體體((處處理理部部分分))、、循循環(huán)環(huán)修修改改、、循循環(huán)環(huán)控控制制(繼續(xù)續(xù)循循環(huán)環(huán)嗎嗎??))和結束束部部分分。。關鍵鍵::循環(huán)環(huán)體體((做做什什么么))-變化化量量--如何何變變化化—初始始化化、、控控制制與與判判斷斷例5-10、5-11、5-12:1、工作單元清0。2、多個單字節(jié)數數據求和。3、設在DAT開始的片內RAM中存放10個無符號字節(jié)節(jié)數,找出最最大值,并暫存在A中。實驗3:10個數,去掉一一個最大值、、一個最小值值,求剩余8個數的平均值值。例5-15:多重循環(huán)設計軟件延時時:12MHZ,1ms冒泡程序5-16。注意循環(huán)結構構:5.3基本功能程序序的設計一、查表程序的設設計二、子程序的的設計三、算術邏輯輯運算程序四、數制轉化化程序一、查表程序序查表法是對一一些復雜的函函數運算如sinx等,事先把其其全部可能范范圍的函數值值按一定的規(guī)規(guī)律編成表格格存放在計算算機的程序存存儲器中。當當用戶程序中中需要用到這這些函數時,,直接按編排排好的索引值值(或程序號號)尋找答案案。在控制應用場場合或智能儀儀器儀表中,,經常使用查查表法。例5-17已知數據0~9的平方,設變變量x的值在累加器器A中,查表后求求x2的值放回累加加器,試編制制程序。X2:MOVDPTR,#X2TABMOVCA,@A+DPTRRETX2TAB:DB00H,01H,02H,……64H,81H例5-18:設計一個將十十六進制數轉轉換成ASCII碼的子程序。。設十六進制制數存放在R0的低4位,要求轉換換后的ASCII碼送回R0中DB30H,31H,。。39H,41H,。。46H如果不用查表表,應該怎樣樣做:例5-19:某智能化儀器器的鍵盤程序序中,根據命命令的鍵值((0、1、2、···、9)轉換成相應應的雙字節(jié)16位命令操作入入口地址,其其鍵值與對應應入口地址關關系如下:鍵值(入口地地址):0(0123H);1(0186H);2(0234H);3(0316H);4(0415H);5(0520H);6(0626H);7(0710H);8(0818H);9(0929H)設鍵值存放在在片內RAM20H單元中,出口口地址值存放放在片內RAM22H和23H中。DB01H,23HDB01H,86H。。。。DB09H,29H二、子程序設設計在實際問題中中,常常會遇遇到在一個程程序中有許多多相同的運算算或操作。因此在實際應應用中,通常常把這些多次次使用的程序序段,按一定定結構編好,,存放在內存存中,當需要要時,程序可可以去調用這這些獨立的程程序段。通常將這種可可以被
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年09月山東/北京/上海2024年恒豐銀行總行秋季校園招考筆試歷年參考題庫附帶答案詳解
- 2024年09月山東2024年中國農業(yè)發(fā)展銀行山東省分行秋季校園招考筆試歷年參考題庫附帶答案詳解
- 《心理測量》精神科常用量表課件
- 江蘇省揚州區(qū)六校2025屆中考生物最后一模試卷含解析
- 陜西省西安市經開區(qū)2025屆中考三模生物試題含解析
- 2024年09月2024年中國建設銀行校園招考即將啟動筆試歷年參考題庫附帶答案詳解
- 2024年09月2024內蒙古銀行校園招聘120人筆試歷年參考題庫附帶答案詳解
- 2024年08月蘇州銀行公司銀行總部風險合規(guī)部宿遷區(qū)域招考1名合規(guī)事務崗人員【(111)號】筆試歷年參考題庫附帶答案詳解
- 2024年08月恒豐銀行上海分行社會招考筆試歷年參考題庫附帶答案詳解
- 天貓客服規(guī)則培訓
- 巖溶區(qū)水文地質參數研究-洞察分析
- 大學體育與健康 教案全套 體育舞蹈 第1-16周
- 一年級數學練習題-20以內加減法口算題(4000道)直接打印版
- 施工作業(yè)安全管理規(guī)定(4篇)
- 浙江省金華市(2024年-2025年小學五年級語文)人教版質量測試((上下)學期)試卷及答案
- 傳媒行業(yè)突發(fā)事件應急預案
- 2024年《工會法》知識競賽題庫及答案
- 《中國血脂管理指南》考試復習題庫(含答案)
- 人教版道德與法治八年級上冊2.1網絡改變世界課件
- 外研版小學英語(三起點)六年級上冊期末測試題及答案(共3套)
- 中醫(yī)診療規(guī)范
評論
0/150
提交評論