|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
18f系列 daw的用法 |
| 作者:looks 欄目:單片機(jī) |
在bcd加法中,18f系列的daw指令可調(diào)整字節(jié)的bcd值,在多字節(jié)bcd加法中如何用請指教,以下程序結(jié)果不對,有什么簡單方法改正? MOVLW 0X99 MOVWF PPP1 MOVLW 0X11 MOVWF PPP2 MOVLW 0X99 ADDWF PPP1,W DAW MOVWF PPP1 MOVLW 0X33 ADDWFC PPP2,W DAW MOVWF PPP2 正確結(jié)果為PPP1=0X45 PPP2=0X98,但實際PPP1=0X44 PPP2=0X98 |
| 2樓: | >>參與討論 |
| 作者: looks 于 2005/1/18 10:45:00 發(fā)布:
? 為何無人回答????我有什么問題??? |
|
| 3樓: | >>參與討論 |
| 作者: martin 于 2005/1/19 12:57:00 發(fā)布:
Re: 首先,正確的結(jié)果應(yīng)該是:PPP2=0X45 PPP1=0X98 之所以出現(xiàn)4498,是因為DAW這條指令會影響C標(biāo)志位,當(dāng)你前一次加法產(chǎn)生C標(biāo)志位后,DAW指令在高4位加6沒有進(jìn)位時會把C清零,于是就丟掉了前次加法的進(jìn)位位。 代碼修改方法: bcf Flag,0;*********add************ MOVLW 0X99 MOVWF PPP1 MOVLW 0X11 MOVWF PPP2 MOVLW 0X99 ADDWF PPP1,W btfsc STATUS,C;***********add*********** bsf Flag,0;************add********** DAW MOVWF PPP1 MOVLW 0X33 btfsc Flag,0;************add********** bsf STATUS,C;***********add********** ADDWFC PPP2,W DAW MOVWF PPP2 這是我的方法,不一定是最好的,但我試過是沒問題的。哪位朋友有更好的方法請跟貼。 |
|
| 4樓: | >>參與討論 |
| 作者: looks 于 2005/1/19 14:35:00 發(fā)布:
謝! 現(xiàn)謝謝martin,你說的很對,daw時丟失了原來的進(jìn)位位,如果沒有簡單的方法彌補(bǔ)那太不應(yīng)該了。另外在指令說明中也不特別說明一下,只說影響C,還以為高4位>9時dwa后會有進(jìn)位產(chǎn)生,沒想到還會丟失進(jìn)位;舜罅繒r間真氣人! |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |