




已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
AVR單片機原理及應(yīng)用,陳淵睿 Tel:E-mail: 華南理工大學(xué)電力學(xué)院,關(guān)于狀態(tài)寄存器SREG,1 狀態(tài)寄存器SREG (MCS51類似的寄存器為程序狀態(tài)字PSW,有進位/借位CY, 輔助進位AC, 用戶標志F0, 溢出OV, 奇偶標志P等) 其各標志位意義如下: :全局中斷觸發(fā)禁止位,為中斷總控制開關(guān)。將其清除,則禁止一切中斷(但在異步工作方式下的 T/C2 的中斷喚醒MCU功能除外) :通用標志位,可將一對程序執(zhí)行起重要作用(或常用)的標志位放在此處,通過對它測試,實現(xiàn)執(zhí)行不同功能。如:可用BLD指令將T標志,送至寄存器某位,或用BST指令將寄存器某位存于T標志位,實現(xiàn)快速檢測判斷 :半進位標志位,指示加、減運算時,低四位向高四位產(chǎn)生的進(借)位。以其與進位C配合,可實現(xiàn)十進制加減法運算軟件調(diào)整(DAA)功能;或用于十進制數(shù)增(如數(shù)字鐘)調(diào)整場合 :符號標志位,在正常運算條件下(,不溢出),即運算結(jié)果最高位作為符號是正確的。而當產(chǎn)生溢出時,此時 已不能正確指示運算結(jié)果之正負,但 仍是正確的。對于單(或多)字節(jié)有符號數(shù)據(jù)來說,執(zhí)行減法或比較操作之后,標志能正確指示參與相減或比較的兩個數(shù)的大小,:溢出標志位,模補碼(即符號數(shù))加、減運算溢出之標志,溢出表示運算結(jié)果超過了符號數(shù)所能表示的范圍(-128+127)。加法溢出表現(xiàn)為正正負,或負負正;減法溢出表現(xiàn)為正負負,或負正正。溢出時,運算結(jié)果最高位(即 )取反才是真正的結(jié)果符號。例如: $30$50$80,正正負,溢出 $80$90$10,負負正,也為溢出 :負數(shù)標志位,直接取自運算結(jié)果最高位。時運算結(jié)果為負,否則為正。但溢出時不能表示真實結(jié)果(見上條對溢出標志的說明)。 :零標志位,用以標示數(shù)據(jù)算術(shù)運算或邏輯運算結(jié)果是否為零,或多字節(jié)數(shù)據(jù)算術(shù)運算(包括比較)結(jié)果是否為零。運算(比較)結(jié)果為零(即所有位都清除)時,標志置位。就字節(jié)型數(shù)據(jù)運算結(jié)果來說,的邏輯表達式為/R7/R6/R5/R4/R3/R2/R1/R0,:進/借位標志位,標志加法產(chǎn)生的進位,或減法產(chǎn)生的借位。多字節(jié)加、減法(包括比較)運算時,通過將產(chǎn)生的進位或借位提供給高位字節(jié),以實現(xiàn)多字節(jié)正確相加或相減。也是判斷相減(比較)兩個無符號數(shù)大小的標志。多字節(jié)移位操作時以傳遞銜接。 對全部標志位都可進行置位、清位操作;都可檢測各標志位,以檢測結(jié)果決定程序走向,引出繁多的條件轉(zhuǎn)移指令。 標志位很重要,對運算結(jié)果的判斷處理,要以相應(yīng)標志位為依據(jù)。它們也是分支、循環(huán)走向的路標。初學(xué)者因為不熟悉指令系統(tǒng),編程時要時時檢索各指令功能及其執(zhí)行后對標志位的影響,故要熟記才能提高編程的速度和質(zhì)量。,例:ADD運算時 各標志位定義,對于其它指令,C,Z,V,H定義式可能不同,2 執(zhí)行指令對標志位的影響 各類指令對標志位的影響歸納如下: 位加減法(包括帶/不帶進(借)位的加、減法,以及求補和帶/不帶借位比較等)指令,影響標志位 。 字加/減立即數(shù)(063)指令和求反指令不影響標志位。 增、減指令不影響標志位和。 邏輯運算指令都不影響標志位和,但清除溢出標志位。其中CLR指令還清除標志位、,并使。,關(guān)于狀態(tài)寄存器SREG, 邏輯左移和循環(huán)左移指令同位加法指令一樣影響標志位 。邏輯右移和循環(huán)右移指令以及算術(shù)右移指令都不影響半進位標志 ,但由于這些指令的特殊性,對標志位的影響面可進一步縮小或可簡化。如算術(shù)右移指令不影響標志位和 ,并使 ;邏輯右移指令清除標志位,使 等等。 轉(zhuǎn)移指令中除中斷返回指令RETI會置位全局中斷控制標志位外,其他指令都不影響標志位。 數(shù)據(jù)傳送指令如不向狀態(tài)寄存器SREG輸出數(shù)據(jù),對標志位無影響。 位操作指令只影響作為操作對象的標志位。,關(guān)于狀態(tài)寄存器SREG,關(guān)于狀態(tài)寄存器SREG,3 標志位與運算結(jié)果的關(guān)系 運算時,計算機按二進制(或十六進制)逐位運算得到結(jié)果,但會給出相應(yīng)標志,以讓用戶判斷結(jié)果是否正確。一般地,無符號數(shù)運算結(jié)果是否正確只需看C和Z,而符號數(shù)運算要看N、V、(S)和Z。(半進位標志H主要用于十進制運算調(diào)整) 例1:加法 $30 + $50 = $80 運算后C=0, Z=0, N=1, V=1, S=0 作為無符號數(shù)加法時, C=0(無進位), 結(jié)果正確 作為符號數(shù)加法時,V=1(溢出), N=1(負數(shù)),不正確,應(yīng)軟件修正(如用2個字節(jié)表示, S=0, 應(yīng)為正數(shù) $0080),3 標志位與運算結(jié)果的關(guān)系 例2:$80 + $90 = $10 運算后,C=1, Z=0, N=0, V=1, S=1 作為無符號數(shù)運算時,C=1(有進位)應(yīng)加到高字節(jié),否則結(jié)果不正確 作為符號數(shù)運算時, V=1(溢出), N=0(正數(shù)),不正確,應(yīng)軟件修正(如用2個字節(jié)表示, S=1, 應(yīng)為負數(shù) $FF10) -128 + -112 = -240 例3:$EB + $CA = $B5 運算后,C=1, Z=0, N=1, V=0, S=1, H=1 作為無符號數(shù)運算時,C=1(有進位)應(yīng)加到高字節(jié),否則結(jié)果不正確 作為符號數(shù)運算時, V=0(未溢出), N=1(負數(shù)),S=1(=N), 結(jié)果正確,不必修正(-21 + -54 = -75),關(guān)于狀態(tài)寄存器SREG,4 用軟件實現(xiàn)十進制加、減法調(diào)整子程序的設(shè)計方法(即軟件DAA) 計算機采用的十進制操作數(shù)一般為壓縮型8421 BCD 碼.每個 BCD 代表位十進制數(shù),每位BCD碼共存于同一字節(jié)單元中。BCD運算涉及狀態(tài)寄存器中的進位和半進位 ,它們分別為高、低位 BCD的進(借)位。在進行 BCD碼的加減運算時,計算機是按二進制數(shù)對待的,因此會產(chǎn)生與十進制運算規(guī)則不相符合的情況:,關(guān)于狀態(tài)寄存器SREG, 當產(chǎn)生進(借)位(或)時,該進(借)位等于16(對涉及的一位BCD碼而言),而在十進制運算時應(yīng)等于10,二者相差6。 可能產(chǎn)生非法 BCD 碼(AF)。產(chǎn)生原因有二:一是在十進制加法運算時,該產(chǎn)生進位而按二進制運算卻不能產(chǎn)生進位,使和成為非法 BCD 碼;二是相減產(chǎn)生借位時,借位應(yīng)為10而按二進制運算為16,使差多并可能使差變?yōu)榉欠˙CD碼。 軟件 DAA 即為糾正以上“錯誤”而設(shè)。從以上說明看到,“糾錯”的方法是做加減調(diào)整以及解決相關(guān)問題。,關(guān)于狀態(tài)寄存器SREG,(1)加法DAA 經(jīng)實踐考察,BCD碼加法運算可產(chǎn)生以下種情況,注意這里講的進位是對和的泛指。 不須調(diào)整。特點是既不產(chǎn)生進位,也不產(chǎn)生非法,如$22$11$33。 產(chǎn)生非法BCD,必須對非法BCD加調(diào)整。特點是BCD碼相加后不產(chǎn)生進位,但加調(diào)整后產(chǎn)生進位,如$36$37$6D,加$06調(diào)整后變?yōu)?73(產(chǎn)生半進位)。$68$87$EF,加$66調(diào)整后變?yōu)?155(產(chǎn)生進位和半進位)等。,關(guān)于狀態(tài)寄存器SREG, 產(chǎn)生進位,必須加調(diào)整。特點是BCD碼相加只產(chǎn)生進位,不會同時產(chǎn)生非法BCD碼;而加調(diào)整后既不會再產(chǎn)生進位(而是清除了原來的進位),也不會產(chǎn)生非法BCD。例$99$99$132,進位和半進位都置位,故加$66來調(diào)整:$32$66$98,并要恢復(fù)進位。 綜合以上種情況,得出下面加法DAA之實現(xiàn)方法:首先保存BCD碼相加后的狀態(tài)寄存器SREG(保存其中的進位和半進位,分別稱為Co和 Ho),再將BCD碼之和加上立即數(shù)$66,產(chǎn)生出新的進位Cn和半進位Hn。,關(guān)于狀態(tài)寄存器SREG,若Co、Cn中有一個置位(只能有一個),說明高位BCD滿足調(diào)整條件并調(diào)整完畢;否則為不夠調(diào)整條件,應(yīng)減$60恢復(fù)。若Ho、Hn中有一個置位(只能有一個),說明低位BCD滿足調(diào)整條件并調(diào)整完畢;否則為不夠調(diào)整條件,應(yīng)減恢復(fù)。程序中是將新舊進位、半進位對應(yīng)或起來,只對或結(jié)果進行判斷。注意,軟件DAA功能既要保證本字節(jié)壓縮BCD碼相加值的正確性,又要保證對高位BCD產(chǎn)生進位的正確性,故要將 CoCn 的結(jié)果返還給SREG中的進位,使下一步能正確實現(xiàn)高位字節(jié)BCD帶進位加。 ADDAA為BCD 碼相加調(diào)整子程序,使用寄存器 R16作為工作單元,使用 R17、R6兩個寄存器作為輔助工作單元,所有調(diào)整工作都在R16中進行,關(guān)于狀態(tài)寄存器SREG,關(guān)于狀態(tài)寄存器SREG,(2)減法DAA 由實踐可知,減法DAA要比加法來得簡單:只須對產(chǎn)生借位(泛指和 )的BCD碼進行調(diào)整。BCD碼減法運算,只有以下兩種情況: 不產(chǎn)生借位,不須調(diào)整,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 火鍋店管理手冊(全冊)
- 品牌代運營合作協(xié)議
- 2025房產(chǎn)如何撰寫買賣合同
- 2025大學(xué)生實習合同協(xié)議書
- 2025室內(nèi)廣告制作合同范本
- 2025版權(quán)轉(zhuǎn)讓合同范文
- 2025年塔吊操作工聘用勞務(wù)合同
- 《未來與職業(yè)發(fā)展》課件
- 《常見兒科手術(shù)》課件
- 2025智能會議室設(shè)備采購合同
- 倉庫物料儲存、搬運操作指導(dǎo)書
- GB/T 23587-2024淀粉制品質(zhì)量通則
- 珠子參免疫調(diào)節(jié)作用及其應(yīng)用
- DB32T 4793-2024 球墨鑄鐵管排水系統(tǒng)應(yīng)用技術(shù)規(guī)程
- 2022-2023學(xué)年河南省南陽市宛城區(qū)人教版五年級下冊期中測試數(shù)學(xué)試卷【含答案】
- 鹽城市鹽都區(qū)2023-2024學(xué)年四年級語文第二學(xué)期期末模擬檢測卷
- Academic English智慧樹知到答案2024年杭州醫(yī)學(xué)院
- 廣東省深圳市龍崗區(qū)南灣實驗小學(xué)2023-2024學(xué)年四年級下學(xué)期期中測試數(shù)學(xué)試題
- 安徽省合肥六校聯(lián)盟2022-2023學(xué)年高一下學(xué)期期中聯(lián)考化學(xué)試題(解析版)
- 提高感染性休克集束化治療完成率工作方案
- pvc輸送帶生產(chǎn)工藝
評論
0/150
提交評論