<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 測試測量 > 設計應用 > 智能儀表多字節二進(jìn)制數轉換BCD碼

智能儀表多字節二進(jìn)制數轉換BCD碼

作者: 時(shí)間:2006-05-07 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:多字節無(wú)符號二進(jìn)制數轉BCD碼在以單片機為核心的智能儀表中應用很普遍。本文介紹一種新的轉換方法,并給出三字節二進(jìn)制數轉BCD碼的源程序,該程序執行時(shí)間僅為原來(lái)的1.3%,效率提高顯著(zhù)。

本文引用地址:http://dyxdggzs.com/article/255669.htm

關(guān)鍵詞:多字節二進(jìn)制整數 BCD碼 轉換

一、引言

在以MCS-51單片機為核心的智能儀表系統中,常遇到二進(jìn)制整數轉換為BCD碼的情況。國內許多單片機書(shū)籍都對此進(jìn)行了介紹并給出了子程序,但效率不高。本文參考文獻作者剖析了二進(jìn)制整數轉BCD碼的子程序,分析了程序效率低的原因,給出了改進(jìn)后的源程序,效率有所提高。以3字節的二進(jìn)制整數為例,程序執行時(shí)間由2.856ms減小到2.410ms。還有沒(méi)有其它的辦法進(jìn)一步大幅度減少轉換設計時(shí)間?本文介紹一種新的程序設計思路,給出的源程序將3字節二進(jìn)制整數轉BCD碼執行時(shí)間僅為0.374ms。

二、改進(jìn)思路

由進(jìn)制數轉BCD碼的原理可知,這一轉換的實(shí)現的過(guò)程是(以3字節為例):首先把結果單元(這里是4個(gè)字節)清零,然后將待轉換的二進(jìn)制數的最高位移入進(jìn)位位C,把結果單元的值進(jìn)行乘2加C運算的值又作為結果單元的值,循環(huán)24次后得出轉換的BCD碼。如果能完全避開(kāi)效率運行的時(shí)間。這可用下例來(lái)說(shuō)明:

設結果單元某時(shí)的值為3456H,分別存放在R1、R2中,用如下的程序來(lái)完成結果單元乘2加(設C的當前值為1):

MOV A,R1

ADDC A,ACC

DA A

MOV R1,A

MOV A,R2

ADDC A,ACC

DA A

MOV R2,A

程序中使用ADDC A,ACC指令完成乘2加C的工作,經(jīng)過(guò)執行上面的程序,進(jìn)位位C的值為0,R1、R2單元中的內容分別為69H、13H,該值即為結果單元的值。這樣就使程序避免了循環(huán)而又實(shí)現了結果單元乘2加C的功能。這個(gè)例子的結果單元為2字節,隨著(zhù)進(jìn)一步的運算,結果單元會(huì )變?yōu)?字節并最終變?yōu)?字節(以二進(jìn)制數是3字節為例)。只要在程序中加以適當的控制,則可避免過(guò)多的運算,從而使轉換的速度加快。

三、源程序

程序名:FBCD

程序功能:將三字節二進(jìn)制數轉換為BCD碼。

程序入口:20H,21H,22H,

存放被轉換的三字節二進(jìn)制數。

程序出口為R1,R2,R3,R4,存放轉換的BCD碼的結果(見(jiàn)程序清單)。

四、結語(yǔ)

為了盡可能地減少轉換時(shí)間,使用了一些小技巧。例如:在程序開(kāi)始轉換二進(jìn)制數前3位時(shí),考慮到這3位在進(jìn)行乘2加C的操作時(shí)不會(huì )有進(jìn)位位,則使用3條RL A,完成了前3位的轉換。該程序完成3字節二進(jìn)制無(wú)符號整數轉BCD碼所需時(shí)間僅為374微秒,轉換時(shí)間縮短為原來(lái)的13%,效率提高是顯著(zhù)的。另外,該程序比較靈活,程序中標注(****)處,已完成了2字節二進(jìn)制整數轉三字節的BCD碼,程序執二字節二進(jìn)制數轉BCD碼所需時(shí)間僅為194微秒,使用一條MOV R1,A指令,則轉換結果按由高到低的次序依次存放在R1,R2,R3中。當然,很容易在此程序基礎之上,實(shí)現4字節或更高字節無(wú)符號二進(jìn)制整數向BCD碼的轉換。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>