MCS單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)教材_第1頁(yè)
MCS單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)教材_第2頁(yè)
MCS單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)教材_第3頁(yè)
MCS單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)教材_第4頁(yè)
MCS單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)教材_第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第5章MCS-51單片機(jī)匯編語(yǔ)言程序設(shè)計(jì)

程序設(shè)計(jì):指令的有序羅列。兩個(gè)方面:

(1)選擇某種語(yǔ)言;

(2)解決問(wèn)題的方法與步驟

-----(算法)本章介紹匯編語(yǔ)言程序設(shè)計(jì)的基本問(wèn)題,包括:5.1程序設(shè)計(jì)概述5.2基本的程序設(shè)計(jì)5.3基本功能程序的設(shè)計(jì)5.4數(shù)字濾波程序5.1程序設(shè)計(jì)概述一、程序設(shè)計(jì)步驟(1)分析問(wèn)題,確定問(wèn)題的數(shù)學(xué)模型(2)確定符合計(jì)算機(jī)運(yùn)算的算法(3)繪制流程圖(4)內(nèi)存單元分配(5)據(jù)流程圖編寫匯編語(yǔ)言程序(6)程序調(diào)試與修改二、程序設(shè)計(jì)技術(shù)

(1)模塊化程序設(shè)計(jì)(2)自頂向下的程序設(shè)計(jì)(3)軟件的抗干擾技術(shù)三、評(píng)價(jià)程序質(zhì)量的標(biāo)準(zhǔn)

①程序的執(zhí)行時(shí)間;②程序所占用的內(nèi)存字節(jié)數(shù);③程序的邏輯性、可讀性;④程序的兼容性、可擴(kuò)展性;⑤程序的可靠性。5.2基本的程序設(shè)計(jì)在程序設(shè)計(jì)過(guò)程中,無(wú)論多復(fù)雜的程序結(jié)構(gòu)都是由基本的程序結(jié)構(gòu)組成的。

一、順序結(jié)構(gòu)程序設(shè)計(jì)二、分支結(jié)構(gòu)的程序設(shè)計(jì)三、循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)一、順序結(jié)構(gòu)的程序

順序結(jié)構(gòu)程序是一種最簡(jiǎn)單、最基本的程序,按照程序編寫的順序逐條依次執(zhí)行,直到程序結(jié)束。這是程序的最基本的形式,任何程序都離不開這種形式。例5-1:

編程將片內(nèi)RAM21H單元的低3位和20H單元的低5位合并為一個(gè)字節(jié)送片內(nèi)RAM30H,要求21H的低3位放在高位上。分析:(1)將RAM20H的高位屏蔽掉;(2)將21H的高3位屏蔽掉,然后將其低5位移到高5位上;(3)將以上兩者合并即可。

MOV 30H,20H

;20H中內(nèi)容處理 ANL30H,#1FH MOVA,21H

;21H中內(nèi)容處理 SWAPA RLA ANL A,#0E0H ORL 30H,A;兩數(shù)合并

例5-2:求內(nèi)部RAM20H、21H中的4位壓縮BCD數(shù)與22H、23H中的4位壓縮BCD數(shù)的差,結(jié)結(jié)果送24H、25H中。即:(20H)(21H)-(22H)(23H)=(24H)(25H).分析:[(9999H+1)-(22H)(23H)]+(20H)(21H).CLRCMOVA,#9AH;用999AH-(22H)(23H)SUBBA,23HMOV25H,A;結(jié)果送24H和25HMOVA,#99HSUBBA,22HMOV24H,AMOVA,25H;(24H)(25H)+(20H)(21H)ADDA,21HDAAMOV25H,A;結(jié)果存24H25HMOVA,24HADDCA,20HDAAMOV24H,A補(bǔ)充例題::片外RAM1000H、1001H分別存放兩兩個(gè)無(wú)符號(hào)號(hào)數(shù)10010001B和10001010B,如果視其為二進(jìn)制數(shù),,編程完成成其加法和和減法運(yùn)算算,結(jié)果放放到片外RAM1002H和1003H單元;如果果視其為BCD碼,編程完完成其加法法運(yùn)算和減減法運(yùn)算,,結(jié)果放到到片外RAM1004H和1005H單元。(框圖)二、分支結(jié)結(jié)構(gòu)的程序序分支結(jié)構(gòu)程程序是利用用條件轉(zhuǎn)移移指令,使使程序執(zhí)行行到某一指指令時(shí),根根據(jù)條件是是否滿足,,來(lái)改變程程序執(zhí)行的的順序。編寫分支結(jié)結(jié)構(gòu)的程序序主要在于于正確使用轉(zhuǎn)轉(zhuǎn)移指令。編寫分支結(jié)結(jié)構(gòu)的程序序的關(guān)鍵是是確定好分支支條件轉(zhuǎn)移指令有有三種:無(wú)條件轉(zhuǎn)移移條件轉(zhuǎn)移散轉(zhuǎn)(1)無(wú)條件轉(zhuǎn)轉(zhuǎn)移它的程序轉(zhuǎn)轉(zhuǎn)移方向是是設(shè)計(jì)者事事先安排的的,與已執(zhí)執(zhí)行程序的的結(jié)果無(wú)關(guān)關(guān),使用時(shí)時(shí)只需給出出正確的轉(zhuǎn)轉(zhuǎn)移目標(biāo)地地址或偏移移量即可,,如:ORG0000HLJMPMAIN···ORG0030HMAIN:······(2)條件轉(zhuǎn)移移它是根據(jù)已已執(zhí)行程序序?qū)?biāo)志位位或累加器器或?qū)?nèi)部部RAM某位的影響響結(jié)果,決決定程序的的走向,形形成各種分分支??捎糜诜种еЫY(jié)構(gòu)的指指令:JZ/JNZ、CJNE、DJNZ、JC/JNCJB/JNB、JBC程序框圖:(a、b正確,c錯(cuò)誤)(3)散轉(zhuǎn)它是根據(jù)某某種已輸入入的或運(yùn)算算的結(jié)果,,使程序轉(zhuǎn)轉(zhuǎn)向各個(gè)處處理程序中中去,一般般單片機(jī)實(shí)實(shí)現(xiàn)散轉(zhuǎn)程程序常用于于逐次比較較和算法處處理的方法法。這些方方法一般比比較麻煩、、易出錯(cuò),,MCS-51單片機(jī)具有有一條專門門的散轉(zhuǎn)指指令JMP@A+DPTR,可以使它較較方便地實(shí)實(shí)現(xiàn)散轉(zhuǎn)功功能。例5-3:編制程序使使y按下式賦值值:VAREQU30HFUNCEQU31HSTART:MOVA,VAR;取xJZ COMP;為0轉(zhuǎn)COMPJNBACC.7,POSI;>0轉(zhuǎn)POSIMOVA,#0FFH;<0,-1ASJMPCOMPPOSI:MOVA,#01HCOMP:MOVFUNC,ARET例5-4:設(shè)外外部部存存儲(chǔ)儲(chǔ)器器單單元元ST1和ST2存放放兩兩個(gè)個(gè)不帶帶符符號(hào)號(hào)的的二二進(jìn)進(jìn)制制數(shù),,找找出出其其中中的的大大數(shù)存存入入ST3單元元。。START1:CLRC;進(jìn)進(jìn)位位位位清清0MOVDPTR,#ST1;設(shè)設(shè)數(shù)數(shù)據(jù)據(jù)指指針針MOVXA,@DPTR;取取第第一一個(gè)個(gè)數(shù)數(shù)MOVR1,A;暫暫存存第第一一個(gè)個(gè)數(shù)數(shù)INCDPTRMOVXA,@DPTR;取取第第二二個(gè)個(gè)數(shù)數(shù)MOVR2,A;暫暫存存第第二二個(gè)個(gè)數(shù)數(shù)SUBBA,R1;兩兩數(shù)數(shù)比比較較JNCBIG1XCHA,R1;第第一一個(gè)個(gè)數(shù)數(shù)大大SJMPLBIG1:MOVA,R2L:INCDPTRMOVX@DPTR,A;存存大大數(shù)數(shù)例5-5:空調(diào)調(diào)機(jī)機(jī)在在制制冷冷時(shí)時(shí),,若若排排出出空空氣氣比比吸吸入入空空氣氣溫溫度度低低8℃℃,則則認(rèn)認(rèn)為為工工作作正正常常,,否否則則認(rèn)認(rèn)為為工工作作故故障障,,并并設(shè)設(shè)置置故故障障標(biāo)標(biāo)志志。。設(shè)片片內(nèi)內(nèi)RAM40H中存存放放吸吸入入空空氣氣溫溫度度值值,,41H中存存放放排排除除空空氣氣溫溫度度值值。。若(40H)-(41H)≥8℃℃,則則空空調(diào)調(diào)機(jī)機(jī)制制冷冷正常常,在在42H單元元中中存存放放“0”。否否則則在在42H單元元中中存存放放“FFH”,以以示示故故障障((在在此此42H單元元被被設(shè)設(shè)定定為為故故障障標(biāo)標(biāo)志志))。。為了了可可靠靠地地監(jiān)監(jiān)控控空空調(diào)調(diào)機(jī)機(jī)的工工作作情情況況,,應(yīng)應(yīng)做做兩兩次次減法法,,第第一一次次減減法法(40H)-(41H),,若C=1,則則肯肯定定有有故故障障;;第二二次次減減法法用用兩兩個(gè)個(gè)溫溫度度的的差值值減減去去8℃℃,若若C=1,說(shuō)說(shuō)明溫溫差差小小于于8℃℃,空空調(diào)調(diào)機(jī)機(jī)也也不正正常常工工作作。。ORG0000HSTART:MOVA,40H;吸吸入入溫溫度度值值送送ACLRCSUBBA,41HJCERROR;C=1有故故障障SUBBA,#8JCERROR;溫溫差差小小于于8℃℃,有有故故障障MOV42H,#0;工工作作正正常常標(biāo)標(biāo)志志SJMPEXITERROR:MOV42H,#0FFH;工工作作故故障障標(biāo)標(biāo)志志EXIT:SJMP$END三、、循循環(huán)環(huán)結(jié)結(jié)構(gòu)構(gòu)的的程程序序循環(huán)環(huán)程程序序是是強(qiáng)強(qiáng)制制CPU重復(fù)復(fù)執(zhí)執(zhí)行行某某一一指指令令序序列列的的一一種種程程序序結(jié)結(jié)構(gòu)構(gòu)形形式式。。循環(huán)環(huán)結(jié)結(jié)構(gòu)構(gòu)的的程程序序一一般般由由5部部分分組組成成::初始始化化,,循循環(huán)環(huán)體體((處處理理部部分分))、、循循環(huán)環(huán)修修改改、、循循環(huán)環(huán)控控制制(繼續(xù)續(xù)循循環(huán)環(huán)嗎嗎??))和結(jié)束束部部分分。。關(guān)鍵鍵::循環(huán)環(huán)體體((做做什什么么))-變化化量量--如何何變變化化—初始始化化、、控控制制與與判判斷斷例5-10、5-11、5-12:1、工作單元清0。2、多個(gè)單字節(jié)數(shù)數(shù)據(jù)求和。3、設(shè)在DAT開始的片內(nèi)RAM中存放10個(gè)無(wú)符號(hào)字節(jié)節(jié)數(shù),找出最最大值,并暫存在A中。實(shí)驗(yàn)3:10個(gè)數(shù),去掉一一個(gè)最大值、、一個(gè)最小值值,求剩余8個(gè)數(shù)的平均值值。例5-15:多重循環(huán)設(shè)計(jì)軟件延時(shí)時(shí):12MHZ,1ms冒泡程序5-16。注意循環(huán)結(jié)構(gòu)構(gòu):5.3基本功能程序序的設(shè)計(jì)一、查表程序的設(shè)設(shè)計(jì)二、子程序的的設(shè)計(jì)三、算術(shù)邏輯輯運(yùn)算程序四、數(shù)制轉(zhuǎn)化化程序一、查表程序序查表法是對(duì)一一些復(fù)雜的函函數(shù)運(yùn)算如sinx等,事先把其其全部可能范范圍的函數(shù)值值按一定的規(guī)規(guī)律編成表格格存放在計(jì)算算機(jī)的程序存存儲(chǔ)器中。當(dāng)當(dāng)用戶程序中中需要用到這這些函數(shù)時(shí),,直接按編排排好的索引值值(或程序號(hào)號(hào))尋找答案案。在控制應(yīng)用場(chǎng)場(chǎng)合或智能儀儀器儀表中,,經(jīng)常使用查查表法。例5-17已知數(shù)據(jù)0~9的平方,設(shè)變變量x的值在累加器器A中,查表后求求x2的值放回累加加器,試編制制程序。X2:MOVDPTR,#X2TABMOVCA,@A+DPTRRETX2TAB:DB00H,01H,02H,……64H,81H例5-18:設(shè)計(jì)一個(gè)將十十六進(jìn)制數(shù)轉(zhuǎn)轉(zhuǎn)換成ASCII碼的子程序。。設(shè)十六進(jìn)制制數(shù)存放在R0的低4位,要求轉(zhuǎn)換換后的ASCII碼送回R0中DB30H,31H,。。39H,41H,。。46H如果不用查表表,應(yīng)該怎樣樣做:例5-19:某智能化儀器器的鍵盤程序序中,根據(jù)命命令的鍵值((0、1、2、···、9)轉(zhuǎn)換成相應(yīng)應(yīng)的雙字節(jié)16位命令操作入入口地址,其其鍵值與對(duì)應(yīng)應(yīng)入口地址關(guān)關(guān)系如下:鍵值(入口地地址):0(0123H);1(0186H);2(0234H);3(0316H);4(0415H);5(0520H);6(0626H);7(0710H);8(0818H);9(0929H)設(shè)鍵值存放在在片內(nèi)RAM20H單元中,出口口地址值存放放在片內(nèi)RAM22H和23H中。DB01H,23HDB01H,86H。。。。DB09H,29H二、子程序設(shè)設(shè)計(jì)在實(shí)際問(wèn)題中中,常常會(huì)遇遇到在一個(gè)程程序中有許多多相同的運(yùn)算算或操作。因此在實(shí)際應(yīng)應(yīng)用中,通常常把這些多次次使用的程序序段,按一定定結(jié)構(gòu)編好,,存放在內(nèi)存存中,當(dāng)需要要時(shí),程序可可以去調(diào)用這這些獨(dú)立的程程序段。通常將這種可可以被

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論