娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

    AVR單片機問世以來,獲得廣泛關注。它是一種采用精簡指令集、以時鐘周期為機器周期的高速單片機。它采用快速寄存器文件(共有32個寄存器 R0~R31,其中R16~R31具有較強通用功能)、快速單周期指令。另外在存儲器技術(Flash存儲器、EEPROM)、低功耗、系統(tǒng)可靠性、定時 /計數(shù)器功能多樣化等方面也都具特色。但由于采用精簡指令集,它沒有一般8位機的DAA指令。因BCD碼加減法運算及定點數(shù)制轉換都要用到DAA功能,故給使用匯編語言研發(fā)帶來不便。本文重點介紹用軟件實現(xiàn)DAA的方法。


    計算機采用的十進制操作數(shù)一般都為壓縮型8421 BCD碼,每個BCD碼表示1位十進制數(shù)。每2位BCD碼共存于同一字節(jié)單元中,故BCD運算涉及狀態(tài)寄存器SREG的進位C(第0位)和半進位H(第5 位)。它們分別為高、低位BCD的進(借)位。在進行BCD碼加減運算時,計算機是按二進制數(shù)對待的,因此會產生與十進制運算規(guī)則不相符合的情況:一是當產生進(借)位(C=1或H=1)時,該進(借)位等于16(對所涉及的1位BCD碼而言),而在十進制運算中應等于10;二是可能產生非法BCD碼(值大于9)。軟件DAA即為糾正以上錯誤而設的。

    1 軟件DAA的實現(xiàn)方法

    1.1 實現(xiàn)加法DAA功能子程序ADAA和ADAA1的設計方法

    經實踐考查,BCD碼加法運算,可產生以下3種情況:

    ① 不須調整,特點是既不產生進位,也不產生非法BCD碼。如$22+$11=$33。

    ② 產生非法BCD碼,必須加6調整。特點是BCD碼相加后不產生進位,但加6調整后產生進位。如
$36+$37=$6D(產生非法BCD),加6調整后變?yōu)?73(產生半進位H)。$68+$87=$EF,加$66調整后變?yōu)?155(產生進位C和半進位H)等。

    ③ 產生進位,必須加6調整。特點是BCD碼相加只產生進位,不會同時產生非法BCD碼;而加6調整后既不會再產生進位/半進位(而是清除了原來的進位/半進位),也不會產生非法BCD碼。例:
$99+$88=$121,進位C和半進H位都置位,故加$66來調整:$21+$66=$87,并要恢復進位C。

    綜合以上3種情況,得出下面加法DAA之實現(xiàn)方法:首先保存BCD碼相加后的狀態(tài)寄存器SREG(保存其中的進位C和半進位H,稱為Co和Ho)。再將 BCD碼之和加上$66,產生出新的進位Cn及半進位Hn。若Co、Cn中有1個置位(只能有1個!),說明高位BCD滿足調整條件并調整完畢,否則為不夠調整條件,應減$60恢復;若Ho、Hn中有1個(只能有1個!)置位,說明低位BCD滿足調整條件并調整完畢,否則為不夠調整條件,應減6恢復。程序中是將新、舊進位和半進位對應"或"起來,只對"或"結果進行判斷。注意,軟件DAA功能既要保證本字節(jié)壓縮BCD碼相加值的正確性,又要保證對高位 BCD產生進位的正確性,故要將Co∨Cn的結果返還給SREG,以使下一步能正確實現(xiàn)高位BCD帶進位加。

    ADAA為BCD碼相加調整子程序,使用寄存器R20作為工作單元(使用R22、R11、R10等3個寄存器作為輔助工作單元),所有調整工作都在此單元內進行。

    ADAA1為數(shù)制轉換程序中實現(xiàn)BCD碼左移調整的子程序,為加法DAA之特例:它在R20工作單元內實施BCD碼帶進位位自加并完成對和的調整。

    1.2 實現(xiàn)減法DAA功能子程序SDAA的設計方法

    由實踐可知,減法DAA要比加法來得簡單:只須對產生借位的BCD碼進行調整。BCD碼減法運算,只有以下2種情況:

    ① 不產生借位,不須調整,如 $22-$11=$11。

    ② 產生借位,此時不論有否非法BCD碼產生,一律對產生借位的BCD碼加$A調整。但AVR單片機沒有加字節(jié)型立即數(shù)指令,改為減6調整,要注意加原和減補對進位的影響是相反的。為保證多字節(jié)壓縮BCD碼運算的正確性,若調整后清除了借位C,必須將其恢復。例如$22-$54=$CE,因C、H皆置位,用減去$66來調整$CE-$66=$68,調整后清除了借位C,故子程序中還要加SEC 指令來恢復借位C。

    注:MCS-51單片機減法DAA子程序很容易按此移植(半進位為AC)。

    1.3 實現(xiàn)右移DAA功能子程序RDAA的設計方法

    見"3 定點數(shù)制轉換子程序"中對BCD碼右移調整的說明。

    2 定點運算子程序

    (1)多字節(jié)壓縮BCD碼加法子程序ADBCD

    加法在寄存器內直接完成,以R20為DAA工作單元。BCD碼相加后,將和送到R20,調用ADAA子程序,實現(xiàn)對和的調整(返回主程序后再回送調整結果)。

    (2)多字節(jié)壓縮BCD碼減法子程序SUBCD

    減法在寄存器內直接完成,以R20為DAA工作單元。BCD碼相減后,將差送至R20,調用SDAA子程序,實現(xiàn)對差的調整(返回主程序后再回送調整結果)。

    (3)乘法子程序MUL16

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

    采用字乘字無符號數(shù)運算。采取逐次右移部分積和乘數(shù),當乘數(shù)移出位等于1時將被乘數(shù)加入部分積的方法完成計算。可視為16位整數(shù)×16位整數(shù)→32位整數(shù),也可視為16位整數(shù)×16位小數(shù)→16位整數(shù),或視為16位小數(shù)×16位小數(shù)→32位小數(shù)。可加上舍入處理。

    (4)除法子程序DIV16

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

    采用雙字除以字無符號數(shù)運算。采取逐次左移被除數(shù)與除數(shù)相減、試商、記商的方法完成計算。可視為雙字型整數(shù)÷字型整數(shù)→字型整數(shù),也可視為小數(shù)÷小數(shù)→ 小數(shù)。要求 (R17,R16)<(R13,R12)。可加上舍入處理,但要注意可能產生舍入溢出(例如$7FFFC000÷$8000=$FFFF.8,舍入取整即產生溢出)。


    (5)開平方子程序SQR

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

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


    3 定點數(shù)制轉換子程序

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

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

    ADAA1為左移BCD碼并對其進行調整的子程序。

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

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

    參考文獻

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


關鍵字:軟件實現(xiàn)  DAA 引用地址:用軟件實現(xiàn)DAA的方法

上一篇:AVR看門狗使用范例即Reset程序詳解
下一篇:典型的ATmega128的軟件USART的接口程序

推薦閱讀

北京小客車指標辦公布新能源指標配置結果,本期共5.4萬人獲得個人新能源小客車指標,至此第一期已經將全年指標分配完畢。截至目前,已經有超過151723個申請人將進入輪候狀態(tài)。一號難求,指標輪候逼近2021年2017年新能源汽車總銷量達到79.4萬輛,環(huán)比增長17.9%,同比增長68.5%,全年整體呈現(xiàn)上升趨勢。2018年1月新能源乘用車銷量達到31638輛,同比增長超過400%,伴隨...
簡單說明:/*****************************************************************************************************1、RTC模塊和時鐘配置系統(tǒng)(RCC_BDCR寄存器)處于后備區(qū)域中。其斷電時靠備份電源供電可繼續(xù)維持其功能。所以RTC的使用同時涉及到BKP(備份寄存器)和PWR(電源控制),還需對它們進行配置。2、由于RTC之前可能已配置(不是第一次使用),它斷...
全球電子元器件與開發(fā)服務分銷商e絡盟獨家發(fā)售Multicomp Pro 品牌全新系列經濟實惠型工業(yè)生產級精密測試設備和工具。該系列匯聚最優(yōu)質的自有品牌測試與測量產品,可讓設計工程師、維護工程師和實驗室技術人員能夠更輕松地找到超值替代品,同時確保生產級品質和可靠性。 與其他品牌產品相比,e絡盟Multicomp Pro品牌系列產品可進一步降低預付成本并縮短...
美國際貿易委員會(ITC)于當?shù)貢r間3月4日發(fā)布公告稱,已決定對愛立信展開337調查。據(jù)悉,1月8日,三星依據(jù)《美國1930年關稅法》第337節(jié)規(guī)定,向美國際貿易委員會(ITC)提出申請,指控愛立信對美出口、在美進口或在美銷售的無線通訊設備及元件侵犯其專利權,請求發(fā)起337調查,并發(fā)布普遍排除令、有限排除令和禁止令。而就在1月4日,愛立信向ICT發(fā)起337調...

史海拾趣

問答坊 | AI 解惑

虛擬聲卡信號發(fā)生器

聲卡是多媒體計算機最基本的配置硬件之一,...并以三角波信號發(fā)生器為例,詳細介紹了該信號發(fā)生器的具體實現(xiàn)方法,這對獲得難以用常規(guī)儀器設備產生的信號提供了... …

查看全部問答∨

在線的都來看看我要說的吧.

在線的看的出來都來加入會員吧,我們這里有很多有用的資料. 在這里找相關的東西比在別的地方找的都快,因為我們每一個會員都會把自己用過的資料發(fā)上來的.…

查看全部問答∨

DIY麥克風

請教各位高手,用駐極話筒直接接一個同軸接頭能否當做麥克風接到電腦主機上? [ 本帖最后由 rabbit-cricket 于 2009-4-21 19:21 編輯 ]…

查看全部問答∨

嵌入式系統(tǒng)基本知識

上課課件的資料,希望對大家有所幫助!接上面…

查看全部問答∨

有人用過WINCE 6.0 R3的Silverlight嗎?

想嘗嘗鮮,不知是否有人用過,效果如何,性能怎樣? 希望有大蝦能分享一下,先謝謝了!…

查看全部問答∨

大家以后LINUX上面開發(fā)一定要注意

大家以后再LINUX上面寫程序一定要注意,無論多個文件還是單個文件,一定都要寫Makefile,剛才就是因為我沒有寫Makefile,一不小心把我的.c文件給編譯成了.c文件!~寫了幾天的程序,又要重新寫了!~ …

查看全部問答∨

夢之旅同學松鼠1.0學習筆記(四)之UART

1.     串口的基本概念 在STM32的參考手冊中,串口被描述成通用同步異步收發(fā)器(USART),它提供了一種靈活的方法與使用工業(yè)標準NRZ異步串行數(shù)據(jù)格式的外部設備之間進行全雙工數(shù)據(jù)交換。USART利用分數(shù)波特率發(fā)生器提供寬范圍的 ...…

查看全部問答∨

sja1000基地址計算

   CAN總線控制器sja1000 基地址怎么計算? 看了好多51的,都是根據(jù)CS來確定,如:CS接的是p20腳,AD0-AD7接P0,這樣基地址就是0XFE00;但如果AD0-AD7不是接P0,而是P0口4個,P1口4個,片選接在P3.0上,那么這時基地址怎么算? 第一 ...…

查看全部問答∨

求介紹計算機體系結構的經典書籍

我今年剛畢業(yè),專業(yè)計算機科學與技術,之前一直自學Linux驅動與應用,但是現(xiàn)在工作了,經理讓我去調powerpc的Uboot,經常有客戶自己設計的板子,在演示板的基礎上硬件做了些改動就跑不起來了,也就是技術支持吧,現(xiàn)在調試的過程中發(fā)現(xiàn)自己的硬件知 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 东乌珠穆沁旗| 江西省| 南充市| 茂名市| 光山县| 达拉特旗| 公安县| 盘山县| 新野县| 民和| 丹江口市| 海南省| 雷波县| 阜康市| 淳化县| 金堂县| 廉江市| 西平县| 泗洪县| 高阳县| 泾川县| 衡阳县| 石狮市| 柳林县| 乌兰县| 廉江市| 乌兰浩特市| 余干县| 昌平区| 丹巴县| 阜阳市| 基隆市| 广州市| 霍林郭勒市| 芷江| 万盛区| 上犹县| 延庆县| 大余县| 保山市| 德清县|