新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機(jī)第二次作業(yè)

單片機(jī)第二次作業(yè)

作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
作業(yè):將A擴(kuò)大十倍(A值較小,不溢出



,此題方法較多,根據(jù)材料有三種做法,下面就一一列出。(既然此題如此繁瑣,就請大家給個好評吧!
當(dāng)然剛開始還是新建文件和工程,大家都懂得!那么我就直接粘貼啦!
1、先fileànew建asm文件6.asm
方法一:MOV B,#10
MUL AB
END
為了調(diào)試時看數(shù)據(jù),預(yù)先在A中賦值為01H(既然A值較小,不溢出,那么就選個小一點(diǎn)的吧,簡單嘛!)所以程序前加:
MOV A,#01H
2、建新工程,Projectànewproject,選AtemlàAT89C51,導(dǎo)入文件6.asm。
注意,對初學(xué)者,一個工程里只能有本程序6.asm,無關(guān)的程序要刪除,新試驗一個程序最好重新建工程,以保證一個工程里只有你要試驗的那一個程序。
3、可見程序


4、編譯通過后,點(diǎn)debug下的start/stop開始調(diào)試,step和stepover都是單步調(diào)試,step是遇到子程序或中斷也要進(jìn)入進(jìn)行單步調(diào)試,stepover是遇到子程序或中斷當(dāng)一句一次執(zhí)行完。本程序物子程序,二者是一樣的。我們執(zhí)行一句得到:


可見A中的值變?yōu)?1H,B中還為0,是將要執(zhí)行的語句,再執(zhí)行一步,可見:



B中數(shù)據(jù)已變?yōu)?ah,再執(zhí)行一步,可見:

.
A與B相乘,A中存放低八位。所以A中的值為0AH,B中的值為00H.
,可知已經(jīng)把A擴(kuò)大了十倍,這個程序簡單吧?!不過,別急,有簡單就有復(fù)雜的,不過誰好誰壞就不知道了,總之能用就行。

方法二:新建文件和工程就不羅嗦了,直接看程序吧!

呵呵,是不是復(fù)雜了一些?不過,別怕。一步步來看。執(zhí)行一步可見:


可見A中的值變?yōu)?1H,B中還為0,是將要執(zhí)行的語句,再執(zhí)行一步,可見:


可見B中的值也變?yōu)?1H。接著執(zhí)行:

可見A中的值變?yōu)?2H。接著執(zhí)行:

可見:RO中的值變?yōu)?2H。接著執(zhí)行:



可見:A中的值變?yōu)?4H。接著執(zhí)行:


可見:A中的值變?yōu)?5H。接著執(zhí)行:


可見:B中的值也變?yōu)?5H。接著執(zhí)行:


哈哈,是不看到A中的值變?yōu)?AH了,那就對了!至此,第二種方法也搞定!

,有點(diǎn)困了,不過還是要把它寫完吧!加快速度?。?!

第三種方法:照樣是直接看程序啦!


嗯,不是很復(fù)雜,一會就搞定了!執(zhí)行一步:




可見A中的值變?yōu)?1H,B中還為0,是將要執(zhí)行的語句,再執(zhí)行一步,可見:


可見:B中的值也變?yōu)?1H。接著執(zhí)行:


對A進(jìn)行循環(huán)左移,相當(dāng)于乘二,所以A中的值為02H.接著執(zhí)行:


原因如上,就不說了。所以A中的值為04H.接著執(zhí)行:


A和B相加,結(jié)果放到A中,所以A中的值為05H.接著執(zhí)行:


還是循環(huán)左移,大家都懂吧,所以就不說啦!直接得到結(jié)果了。

,還行吧,三種方法都實現(xiàn)了A擴(kuò)大十倍,只不過這只適合不溢出的情況。OK!寫完了


關(guān)鍵詞: 單片機(jī)溢

評論


技術(shù)專區(qū)

關(guān)閉
×

Digikey let's do
· 2025年第1期限时报名开启,5月8日截止
· Digikey助力,提供一站式免费器件支持
· 跟大佬一起 【DIY 功率监测与控制系统】