MCS-51單片機匯編語言程序設(shè)計舉例

MCS-51單片機匯編語言程序設(shè)計舉例

ID:37428459

大小:280.31 KB

頁數(shù):29頁

時間:2019-05-12

MCS-51單片機匯編語言程序設(shè)計舉例_第1頁
MCS-51單片機匯編語言程序設(shè)計舉例_第2頁
MCS-51單片機匯編語言程序設(shè)計舉例_第3頁
MCS-51單片機匯編語言程序設(shè)計舉例_第4頁
MCS-51單片機匯編語言程序設(shè)計舉例_第5頁
資源描述:

《MCS-51單片機匯編語言程序設(shè)計舉例》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、MCS-51單片機匯編語言程序設(shè)計舉例1查表程序設(shè)計查表程序是一種常用程序,它廣泛使用于LED顯示控制、打印機打印控制、數(shù)據(jù)補償、數(shù)值計算、轉(zhuǎn)換等功能程序中,這類程序具有簡單、執(zhí)行速度快等特點。所謂查表法,就是預(yù)先將滿足一定精度要求的表示變量與函數(shù)值之間關(guān)系的一張表求出,然后把這張表存于單片機的程序存儲器中,這時自變量值為單元地址,相應(yīng)的函數(shù)值為該地址單元中的內(nèi)容。查表,就是根據(jù)變量X在表格中查找對應(yīng)的函數(shù)值Y,使Y=f(X)。MCS-51指令系統(tǒng)中,有兩條查表指令:MOVCA,@A+PCMOVCA,@A+DPTR例1一個十六進制數(shù)存放在內(nèi)部RAM的HEX單元的低4位中,

2、將其轉(zhuǎn)換成ASCII碼并送回HEX單元。十六進制0~9的ASCII碼為30H~39H,A~F的ASCII碼為41H~46H,ASCII碼表格的首地址為ASCTAB。編程如下:ORG1000HHEXASC:MOVA,HEXANLA,#0FHADDA,#03H;修改指針MOVCA,@A+PCMOVHEX,ARETASCTAB:DB30H,31H,32H,33H,34HDB35H,36H,37H,38H,39HDB41H,42H,43H,44H,45HDB46H在這個程序中,查表指令MOVCA,@A+PC到表格首地址有兩條指令,占用3個字節(jié)地址空間,故修改指針應(yīng)

3、加3。例2設(shè)有一個巡回檢測報警裝置,需對96路輸入進行控制,每路有一個額定的最大值,是雙字節(jié)數(shù)。當(dāng)檢測量大于該路對應(yīng)的最大值時,就越限報警。假設(shè)R2為保存檢測路數(shù)的寄存器,其對應(yīng)的最大額定值存放于31H和32H單元中。查找最大額定值的程序如下:FMAX:MOVA,R2ADDA,R2;表中一個額定值為2個字節(jié)MOV31H,AMOVDPTR,#TAB;表首址MOVCA,@A+DPTR;查表讀取第一個字節(jié)XCHA,31H;第一個字節(jié)內(nèi)容存入31HINCDPTRMOVCA,@A+DPTR;查表讀取第二個字節(jié)MOV32H,A;第二字節(jié)的內(nèi)容存入32HTAB:DW1230

4、H,1450H,...DW2230H,2440H,...DW3120H,3300H,...2數(shù)制轉(zhuǎn)換例4將一個字節(jié)二進制數(shù)轉(zhuǎn)換成3位非壓縮型BCD碼。設(shè)一個字節(jié)二進制數(shù)在內(nèi)部RAM40H單元,轉(zhuǎn)換結(jié)果放入內(nèi)部RAM50H#,51H,52H單元中(高位在前),程序如下:HEXBCD:MOVA,40HMOVB,#100DIVABMOV50H,AMOVA,#10XCHA,BDIVABMOV51H,AMOV52H,BRET例5BCD碼轉(zhuǎn)換為二進制代碼(方法:先將高半字節(jié)×1010,再加低半字節(jié))。設(shè)待轉(zhuǎn)換的BCD碼存放在R2中DTOBMOVA,R2;ANLA,#0

5、F0H;屏蔽低四位SWAPAMOVB,#0AHMULABMOVR3,AMOVA,R2ANLA,#0FH屏蔽高四位ADDA,R3得轉(zhuǎn)換結(jié)果RET例6雙字節(jié)BCD碼轉(zhuǎn)換為二進制碼設(shè)BCD碼表示的4位十進制數(shù)分別存放在R1和R2中,其中R2存放千、百位,R1存放十、個位。轉(zhuǎn)換后的結(jié)果低字節(jié)存放在20H單元,高字節(jié)存放在21H單元。轉(zhuǎn)換時,可由高位到低位逐位檢查BCD碼的數(shù)值,然后累加各十進制對應(yīng)的二進制數(shù)。其中,千位1000=03E8H百位100=0064H十位10=000AH各位BCD碼=二進制碼例BCD碼3245=0011001001000101則千位累加了3次03E8H,百位累

6、加了2次0064H,十位累加了4次000AH,再加上個位。BBCD11:MOV20H,#00H;MOV21H,#00H;MOVR3,#0E8H;MOVR4#00H;一千位二進制數(shù)送R3,R4MOVA,R2ANLA,#0F0H;屏蔽百位SWAPA;千位換到低四位JZBRAN1;LOOP1:DECA;千位減1ACALLADDT;調(diào)用累加子程序JNZLOOP1;千位為0否?BRAN1:MOVR3,#64H;MOVR4,#00H;一百位二進制數(shù)送R3,R4MOVA,R2;ANLA,#0FH;屏蔽千位JZBRAN2;百位為十轉(zhuǎn)到個位處執(zhí)行LOOP2DECA;百位減1ACALLADDT;調(diào)

7、用累加子程序JNZLOOP2;百位為0否BRAB2MOVR3,#0AH;十的二進制數(shù)送R3MOVA,R1;ANL#F0H;屏蔽個位SWAPA;十位換到低四位JZBRAN3;十位為0轉(zhuǎn)到個位處執(zhí)行LOOP3:DECA;十位減1ACALLADDT;調(diào)用累加子程序JNZLOOP3;十位為0否?BRAN3:MOVA,R1;ANLA,#0FH;屏蔽十位MOVR3,A;ACALLADDT;RETADDT:PUSHPSWPUSHACCCLRCMOVA,20HADDA,R3低位字節(jié)相加MOV20H,A結(jié)果送

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。