<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è) > 嵌入式系統 > 設計應用 > AVR單片機定點(diǎn)運算及數制轉換子程序

AVR單片機定點(diǎn)運算及數制轉換子程序

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

(5)開(kāi)平方SQR

操作:(R17,R16,R15,R14)→R14,R13,R12

可視為雙字型整數X(≤4294967295)開(kāi)平方,因有舍入處理,方根最大可達$10000(如X=$FFFF0000開(kāi)平方即屬此),故用3字節存儲平方根。也可視為小數開(kāi)平方,將X自最高位起每2位進(jìn)行分割,采用摸擬手算的方法(X每左移2位試出1位根)開(kāi)平方。

3 數制

該組整數二翻十、定點(diǎn)整數十翻二、定點(diǎn)小數二翻十和定點(diǎn)小數十翻二等4個(gè)子程序組成,分別稱(chēng)為CONV1、CONV2、CONV3和CONV4。由于AT90系列只有字節乘字節指令,計算功能不強,故采用移位調整法實(shí)現多字節數據的數制。其中,整數二翻十子程序CONV1和小數十翻二子程序CONV4采取左移調整的方法,而整數十翻二子程序CONV2和小數二翻十子程序CONV3采用右移調整的方法。不論左移還是右移,調整總是對十進(jìn)制數進(jìn)行,其目的是使十進(jìn)制數的移位規則符合于二進(jìn)制數移位規則:左移1位值增倍,右移1位值折半。當某位BCD中的最高位(8)左移移入高位BCD中時(shí),按二進(jìn)制數看待應為16,而按十進(jìn)制數相鄰位看待只能為10,故要做加6調整。另外,左移過(guò)程中若出現非法BCD碼時(shí)也要對其調整。BCD碼左移只不過(guò)是BCD碼相加的特例,故調用 BCD碼相加調整子程序ADAA1就可完全解決左移調整問(wèn)題。當右移BCD碼時(shí),若某位BCD中的1移入低位BCD最高位,按二進(jìn)制數看待,1折半應為 0.5,而低位BCD中最高位值為0.8,故要做減3(即0.3)調整。因8421BCD碼其各位之權(某位上的1所代表的實(shí)際數值)分別為8、4、2和 1,若只在本碼位內部移動(dòng),則符合左移1位值增倍、右移1位值折半的規則,故不須調整。

本組定點(diǎn)及數制子程序為適應大多數應用場(chǎng)合而設,具體使用時(shí)可加以修改。如整數二翻十時(shí),二進(jìn)制數不超過(guò)$FFFF,為提高運行速度,可將二進(jìn)制數改為二字節,十進(jìn)制數改為3字節,并將移位循環(huán)次數(R21)改為16。如數據精度不夠,可把乘法子程序改為3字節乘3字節等等。

ADAA1為左移BCD碼并對其進(jìn)行調整的子程序。

RDAA為對右移后的BCD碼進(jìn)行測試、實(shí)施減3調整的子程序,以R20為工作單元。

注:開(kāi)平方子程序SQR說(shuō)明中,請將對開(kāi)平方數R17、R16、R15、R14加上完整根號。

參考文獻

1 宋建國,等. 原理及其應用. 北京:北京航空航天大學(xué)出版社, 2000
2 張克彥. MCS-51/196浮點(diǎn)程序和實(shí)用程序(2.2.7 2.4.1 3.1.2 3.1.3等小節). 北京:北京航空航天大學(xué)出版社, 2001


上一頁(yè) 1 2 下一頁(yè)

評論


相關(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>