線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1904
推到 Plurk!
推到 Facebook!

8051組合語言BIN2BCD

缺席
toyota790
一般會員


發表:3
回覆:4
積分:1
註冊:2010-11-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-11-12 19:38:59 IP:59.117.xxx.xxx 訂閱


我的副程式是這樣
BIN2BCD: MOV A,R1
MOV B,#10
DIV AB
ANL A,#0FH
SWAP A
ADD A,B
MOV R1,A
RET
我想請問一下
因為我前面主程式
R1的值是由8051的P1進入的
假設我的P1值是10000000(80H)
那麼這樣加種的話不就超過99了!?
這樣子組合語言不是不能表示了嗎?(十進位)
那要如何改進押?!
我要2進位轉10進位
感謝!
編輯記錄
toyota790 重新編輯於 2010-11-12 07:27:43, 註解 無‧
kib72377
高階會員


發表:1
回覆:217
積分:238
註冊:2004-11-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-11-13 12:46:36 IP:219.69.xxx.xxx 未訂閱
輸出2個byte,就可以表示到4位數BCD了阿.
toyota790
一般會員


發表:3
回覆:4
積分:1
註冊:2010-11-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-11-13 12:50:36 IP:59.117.xxx.xxx 訂閱
可是我只有用2個七段顯示器押......
kib72377
高階會員


發表:1
回覆:217
積分:238
註冊:2004-11-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-11-14 11:32:23 IP:219.69.xxx.xxx 未訂閱
 那就只能顯示 00-99囉,
不然就是改成輸出顯示hex 00h-FFh
toyota790
一般會員


發表:3
回覆:4
積分:1
註冊:2010-11-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-11-14 18:17:57 IP:59.117.xxx.xxx 訂閱
我是因為我從ADC0804讀進來
讀到P1去
然後要把2進位轉成10進位
如果說我把程式改成這樣
大大你看看行不行
Value EQU 41H
MOV R1,P1(這時是2進制的R1應該可以接受吧?)
ACALL BIN2BCD
MOV B,#5
DIV AB
MOV Value,A
ACALL CONV

BIN2BCD: MOV A,R1
MOV B,#10
DIV AB
ANL A,#0FH
SWAP A
ADD A,B
RET
CONV: MOV R1,#30H
MOV A,Value
ANL A,#0F0H
SWAP A
MOV @R1,A
INC R1
MOV A,Value
ANL A,#0FH
MOV @R1,A
RET


這樣的話我把十進位(含小數點)的放入到30H位置
31H位置就放小數第一位
這樣會有問題嗎!?
系統時間:2024-04-27 8:38:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!