這是壹個?8位2進制數轉換成10進制顯示的程序,或者叫計算器。
改變的地方是為了仿真成功。低位在右。?1101B?轉換過來正好是13
;p3口接段碼a,b,c,d,e,f,g,?p2.5-7口接位碼,選哪個數碼管顯示
a_bit?equ?20h?;個位數存放處 b_bit?equ?21h?;十位數存放處 org0000HSJMP?main
ORG0030H
main:?
mov?p0,#0ffh?;初始化p0口loop:?mov?a,p0?;將a中的十六進制數轉換成10進制
mov?b,#10;10進制/10=10進制
div?ab
mov?b_bit,a?;十位在a
mov?a_bit,b?;個位在b
mov?dptr,#numtab?;指定查表啟始地址 mov?a,a_bit?;取個位數 MOVC?A,@A+DPTR?;查個位數的7段代碼mov?p3,a
acall?d1ms mov?p2,#40h?;顯示個位數 acall?d1msmov?p2,#0ffh;屏蔽所有顯示
acall?d1ms
mov?dptr,#numtab?;指定查表啟始地址 mov?a,b_bit?;取十位數 MOVC?A,@A+DPTR?;查十位數的7段代碼mov?p3,a
call?d1ms
mov?p2,#80h?;顯示十位數acall?d1ms
mov?p2,#0ffh?;屏蔽所有顯示 SJMP?loopd1ms:?
MOV?R2,#200 DJNZ?R2,$nop
RETnumtab:?DB?3FH,6H,5BH,4FH,66H,6DH,7DH,7H,7FH,6FH
end?
妳看這句,?loop:?mov?a,p0?;將a中的十六進制數轉換成10進制
把p0?送A?才開始的轉換?。?這可不是我加的。不知妳說的fpga在哪裏。當然把p0改成fpga就是妳說的那個功能了。
總之?理解成16進制轉換成2位10進制數再顯示就對了,?至於16進制數是哪來的?就全看在那用了吧。