日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          EEPW首頁 > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 智能儀表多字節(jié)二進(jìn)制數(shù)轉(zhuǎn)換BCD碼

          智能儀表多字節(jié)二進(jìn)制數(shù)轉(zhuǎn)換BCD碼

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

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

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

          關(guān)鍵詞:多字節(jié)二進(jìn)制整數(shù) BCD碼 轉(zhuǎn)換

          一、引言

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

          二、改進(jìn)思路

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

          設(shè)結(jié)果單元某時(shí)的值為3456H,分別存放在R1、R2中,用如下的程序來完成結(jié)果單元乘2加(設(shè)C的當(dāng)前值為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)過執(zhí)行上面的程序,進(jìn)位位C的值為0,R1、R2單元中的內(nèi)容分別為69H、13H,該值即為結(jié)果單元的值。這樣就使程序避免了循環(huán)而又實(shí)現(xiàn)了結(jié)果單元乘2加C的功能。這個(gè)例子的結(jié)果單元為2字節(jié),隨著進(jìn)一步的運(yùn)算,結(jié)果單元會(huì)變?yōu)?字節(jié)并最終變?yōu)?字節(jié)(以二進(jìn)制數(shù)是3字節(jié)為例)。只要在程序中加以適當(dāng)?shù)目刂疲瑒t可避免過多的運(yùn)算,從而使轉(zhuǎn)換的速度加快。

          三、源程序

          程序名:FBCD

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

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

          存放被轉(zhuǎn)換的三字節(jié)二進(jìn)制數(shù)。

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

          四、結(jié)語

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

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評(píng)論


          相關(guān)推薦

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

          關(guān)閉