全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1287
推到 Plurk!
推到 Facebook!

如何轉換為二進制數值?

答題得分者是:阿信
cls9215
一般會員


發表:18
回覆:28
積分:9
註冊:2004-12-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-09 11:52:31 IP:211.20.xxx.xxx 未訂閱
各位前輩先進: 如果我想要將delay的時間隨著某一個暫存器值來增減.....例如我由外界輸入 10011001(表示99),我如何將這個數值轉成二進制值....且使得delay副程式作99次運算,來增減delay的時間呢??
cls9215
一般會員


發表:18
回覆:28
積分:9
註冊:2004-12-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-09 13:14:25 IP:211.20.xxx.xxx 未訂閱
我補充說明一下,我是希望可以將99h(ex:mov a,#99h)的數值轉成10進制的99(ex:mov a,#99)!!

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-09 13:26:02 IP:211.22.xxx.xxx 未訂閱
假設現值為99H 1>取低四位元,存至另一暫存器.(存入9) 2>取高四位元(得到144),將其*5/8就會得到90 3>再與9相加存入暫存器,就會得到99 這可以寫成function來call,試試吧!! P.S: /8要先做 發表人 - ㊣ 於 2005/06/09 13:43:17
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-09 14:11:41 IP:61.66.xxx.xxx 未訂閱
        mov        a,#99h        ;A=99H
        mov        b,#10h        ;B=10H (BCD)
        div        ab        ;99H/10H = 9H (a) 餘 9H (b)
        mov        R0,b        ;把b放到R0儲存
        mov        b,#10        ;B=10=0AH (BIN)
        mul        ab        ;9*10=90(a)
        add        a,R0        ;a=90 9=99=63H    
------------------- 美好的事物 稍縱即逝 發表人 - 阿信 於 2005/06/09 14:14:09
cls9215
一般會員


發表:18
回覆:28
積分:9
註冊:2004-12-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-09 14:36:15 IP:211.20.xxx.xxx 未訂閱
我有照2位前輩的說法作,但是結果不是63h...是哪裡錯了呢?  
       阿信的做法:
        mov   a,t1_num1
         mov   b,#10h        ;B=10H (BCD)
         div   ab        ;99H/10H = 9H (a) 餘 9H (b)
         mov   tbuf,b        ;把b放到tbuf儲存
         mov   b,#10        ;B=10=0AH (BIN)
         mul   ab        ;9*10=90(a)
         add   a,tbuf        ;a=90 9=99=63H
         mov   tvalue,a
         mov   dig_t1,tvalue
===================================
我依照 正 版主的說法做的:
         mov   a,t1_num1
        
          anl   a,#0fh
         mov   tbuf,a        ;將低4位元存入tbuf暫存器
         mov   a,t1_num1
         anl   a,#f0h
         mov   b,#00001000b  ;除於8
         div   ab
         mov   tbuf2,a       ;tbuf2儲存除以8後的商
         mov   b,#00000101b  ;乘於5
         mov   a,tbuf2
         mul   ab
         mov   tbuf2,a       ;*5/8的結果存入tbuf2
         mov   a,tbuf2       
         add   a,tbuf        ;將高4bit*5/8後的結果加上低4bit的值
         mov   tvalue,a
         mov   dig_t1,tvalue 
 

版主


發表:261
回覆:2302
積分:1667
註冊:2005-01-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-09 14:54:31 IP:211.22.xxx.xxx 未訂閱
t1_num1你值給多少? 貼一下完整code給大家看一下吧!
------
-------------------------------------------------------------------------
走是為了到另一境界,停是為了欣賞人生;未走過千山萬水,怎知生命的虛實與輕重!?
阿信
版主


發表:111
回覆:983
積分:813
註冊:2005-03-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-09 16:36:35 IP:61.66.xxx.xxx 未訂閱
剛用Keil C跑了一下 (anl a,#f0h要修改成anl a,#0f0h) 兩段程式都可以正確的把BCD轉換成二進制數值啊 用單步執行看看吧 會不會是是中斷沒PUSH/POP ------------------- 美好的事物 稍縱即逝
cls9215
一般會員


發表:18
回覆:28
積分:9
註冊:2004-12-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-09 22:09:48 IP:61.70.xxx.xxx 未訂閱
我試出來了,真的可以....之前是因為傳入的數值錯才會造成轉換的錯誤!!    謝謝前輩先進的指導!!!
系統時間:2024-05-17 7:22:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!