找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3302|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

51單片機 16位二進制數(shù)轉(zhuǎn)BCD碼,這個代碼不理解

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:981359 發(fā)表于 2021-11-16 07:41 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
這個代碼看不懂,有人可以給講一講思路嗎
比如Cy=1時 R5=00H
那么 MOV  A,R5
       ADDC   A,R5
       MOV     R5,A
執(zhí)行之后R5的值為多少
還有這里為什么是16次循環(huán)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:624769 發(fā)表于 2021-11-16 14:38 | 只看該作者
講就是: 2進制除法,就是這么一個計算過程。16位就是16次,32位就是32次,

說白了,就是利用加法器實現(xiàn)除法。你看看2進制運算方面的資料就能看明白了。說要說半天了。
回復(fù)

使用道具 舉報

板凳
ID:981359 發(fā)表于 2021-11-16 15:18 來自手機 | 只看該作者
188610329 發(fā)表于 2021-11-16 14:38
講就是: 2進制除法,就是這么一個計算過程。16位就是16次,32位就是32次,

說白了,就是利用加法器實現(xiàn)除 ...

好的,謝謝,我去查查相關(guān)資料
回復(fù)

使用道具 舉報

地板
ID:123289 發(fā)表于 2021-11-18 15:12 | 只看該作者
要說清楚,是哪16位,轉(zhuǎn)換成放在哪里。
回復(fù)

使用道具 舉報

5#
ID:624769 發(fā)表于 2021-11-18 15:24 | 只看該作者
yzwzfyz 發(fā)表于 2021-11-18 15:12
要說清楚,是哪16位,轉(zhuǎn)換成放在哪里。

?? 是說我么?

我補充一下,
這個應(yīng)該是中間步驟, 或者整個代碼都是匯編寫的。
R6, R7 是原始的16位2進制數(shù), 范圍是: 0~65535
轉(zhuǎn)譯出來的 十是進制BCD 保存在 R3,R4,R5
由于,沒有把他們移回R5,R6,R7 不在傳參位,所以,故計要么還有一段代碼,要么就是整個代碼就是匯編寫的,所以不需要放到傳參位。
回復(fù)

使用道具 舉報

6#
ID:123289 發(fā)表于 2021-11-18 15:33 | 只看該作者
我的做法是這樣的。
做一個表:分別對應(yīng)16位中各個位的BCD值,B15...B0,如果該位是1就加這個值(BCD加法),是0就不加,這樣很好理解。
B15:032768
B14:  016384
B13:008192
……
B0 :   000001
回復(fù)

使用道具 舉報

7#
ID:123289 發(fā)表于 2021-11-18 16:13 | 只看該作者
R67是16位二進制數(shù),R345是BCD結(jié)果。
1、HB2:將結(jié)果清0,準(zhǔn)累計結(jié)果。
2、HB3:先將R67的最高位移出,或0或1。
3、移出的0或1,放入結(jié)果的末位,進行BCD調(diào)整。
理解:假設(shè)最高位是1(也就是你舉例的),它將被移入CY,通過ADDC,被加入到R5的末位中,未來還會被向高位移動15次,并且還會被BCD調(diào)整15次,加上本次,一共被移位、調(diào)整16次。
每左移一次相當(dāng)于是二進制乘2,16次移動是還原成原值(原來在第幾位的還是在第幾位),這個很好理解。而每次乘2后會被進行BCD調(diào)整,就變成了10進制了。進行16次移位16次BCD調(diào)整,是否能正確地轉(zhuǎn)換,就不太好理解了。
不過你可以做個試驗:R67=1000000000000000,16次操作后看看是否 R345=032768。如此,便于你理解。
第1234次操作后, R345=0008,
第5次操作后, R345=0016,(移位變成0010H,BCD調(diào)整后變成0016)
第6次操作后, R345=0032,(移位變成002CH,BCD調(diào)整后變成0032)
第7次操作后, R345=0064,(移位變成0064H,BCD調(diào)整后變成0064)
第8次操作后, R345=0128,(移位變成00C8H,BCD調(diào)整后變成0128)
......
回復(fù)

使用道具 舉報

8#
ID:624769 發(fā)表于 2021-11-18 17:28 | 只看該作者
yzwzfyz 發(fā)表于 2021-11-18 16:13
R67是16位二進制數(shù),R345是BCD結(jié)果。
1、HB2:將結(jié)果清0,準(zhǔn)累計結(jié)果。
2、HB3:先將R67的最高位移出,或 ...

看了你寫的解答,令我驚嘆萬分,為啥我就寫不出這樣的,如此層次清晰的,感覺只要識字的就能看懂的,答復(fù)呢?
回復(fù)

使用道具 舉報

9#
ID:123289 發(fā)表于 2021-11-20 16:53 | 只看該作者
這個還是比較簡單的,如果是開方,三角計算,則更難。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表