在51微控制器中,使用組合語言,如何將十六進位制數轉換成十進位制

時間 2021-09-06 09:22:35

1樓:

共陽數碼管顯示數字嗎?0~9:0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90

2樓:

把數值送到暫存器a中,

mov b,#10

div ab

得到的a即是商,也就是十位,b中是餘數,也就是個位。

如果位數更多的話,例如三位六進位制數,100關到b中,相除,得到的a中就是最高位,先存放到別的暫存器中,再

mov a,b

mov b,10

div ab

得到的a就是十位嘍,b中自然是個位

就是這個原理,再想想,不難的

3樓:匿名使用者

程式經過**除錯通過,如下所示:

mov r0, tl0

mov r1, th0

clr a

mov r2, a, ;先清零

mov r3, a,

mov r4, a,

mov r5, #16 ;共轉換十六位數

loop:

clr c

mov a, r0 ;從待轉換數的高階移出一位到cy

rlc a

mov r0, a

mov a, r1

rlc a

mov r1, a

mov a, r4 ;送到bcd碼的低端

addc a, r4 ;帶進位加。自身相加,相當於左移一位

da a ;十進位制調整,變成bcd碼

mov r4, a

mov a, r3

addc a, r3

da a

mov r3, a

mov a, r2

addc a, r2

mov r2, a

djnz r5, loop ;共轉換十六位數

;-------至此,已經把th1 tl1中的數字,轉換成bcd碼,送到了r2 r3 r4。

;-------下面,分別存入r4 r3 r2 r1 r0。

mov a, r4

mov b, #16

div ab

mov r1, a

mov r0, b

mov a, r2

mov r4, a

mov a, r3

mov b, #16

div ab

mov r3, a

mov r2, b

ret;完

4樓:匿名使用者

unsigned char code seg_code = ; // a, b, c, d, e, f

是幾就點亮相應的led腳。

5樓:匿名使用者

樓主可以到網上搜尋一下,很多這樣的子程式。在使用時要注意這段子程式佔用了哪些儲存單元,程式的入口和出口分別是什麼。你可以把計數器得到的數值賦給轉換子程式的入口單元,轉換結束後就可以從出口的儲存地址得到結果,然後做一下處理送到數碼管顯示。

這類程式有很多,樓主只要注意它使用了哪些儲存地址即可順利使用。

在51微控制器中,使用組合語言,如何將8位2進位制數轉換成2位16進位制顯示 5

6樓:匿名使用者

太高深了,真沒看懂

難道8位2進位制不是2位16進位制?

是不是要顯示成字元啊?

比如0101_1010,在顯示器上顯示0x5a ?

7樓:匿名使用者

在微控制器組合語言 程式設計中 ,其實 8位2進位制數 就可以直接 看成 2位16進位制數,

只是 與 10進位制數 有轉換關係, 組合語言中 也是通用的 如mov a, #11111111bmov a, #0ffh ; 彙編 中 資料的第一個 數不能以字元開頭

mov a, #255 ; 這 三條語句是相同的

8樓:做而論道

顯示16(或10、或2)進位制數字,需要顯示器,led數碼管、lcd1602,都很常用。

如何顯示?

樓主必須指定顯示器和電路。

9樓:匿名使用者

在微控制器中是可以識別2進位制和16進位制的,直接轉換就可以的如mov a,00110101b;

mov r1,a;

and a,0fh;

mov porta,a;

mov a,r1

swap a;

and a,0fh

mov porta,a;

10樓:匿名使用者

要把8位的,變成兩個4位的二進位制數

高位部分,右移4位即可,

低位部分,對之取與0f,即可

11樓:匿名使用者

將8位2進位制數除以16,商就是2位16進位制資料的高位,餘數是低位。

12樓:朝酒晚舞

分解成高四位、低四位,分別找出顯示**,送到顯示器即可。

順便問一下:你有顯示器嗎?

13樓:匿名使用者

還要看是靜態顯示的,還是動態顯示的。

如何用51微控制器組合語言編寫一個將十六進位制數轉換成十進位制數,並在七段數碼管上顯示出來的程式

14樓:匿名使用者

keyval equ 30h

dat equ 33h

scanled equ 39h

org 0000h

ljmp main

org 001bh

ljmp t1isr ;掃描顯示

org 0030h

main:

mov sp,#5fh

mov tmod,#10h

mov th1,#0ech

mov tl1,#078h

mov 33h,#10h

mov 34h,#10h

mov 35h,#10h

mov 36h,#10h

setb tr1

setb et1

setb ea

mov keyval,50h

loop:

lcall datchg

jb p1.0,loop1

jnb p1.0,$

inc keyval

sjmp loop

loop1:

jb p1.1,loop

jnb p1.1,$

mov a,keyval

dec a

mov keyval,a

sjmp loop

t1isr:

push acc

clr tr1

mov th1,#0ech

mov tl1,#78h

setb tr1

mov dptr,#ledtab

t100:

mov r0,#dat

mov a,scanled

add a,r0

mov r0,a

mov a,scanled

jnz t101

mov p2,#01h

sjmp t1dis

t101:

dec a

jnz t102

mov p2,#02h

sjmp t1dis

t102:

dec a

jnz t103

mov p2,#04h

sjmp t1dis

t103:

mov p2,#08h

t1dis:

mov a,@r0

movc a,@a+dptr

mov p0,a

inc scanled

mov a,scanled

cjne a,#4,t1end

mov scanled,#0

t1end:

pop acc

reti

datchg:

mov a,keyval

mov b,#100

div ab

mov 34h,a

xch a,b

mov b,#10

div ab

mov 35h,a

mov 36h,b

retledtab: ; 共陰極數碼管顯示**表db 3fh,06h,5bh,4fh,66h ;01234db 6dh,7dh,07h,7fh,6fh ;56789end

51微控制器彙編程式二進位制、十進位制、十六進位制數怎麼表示?

15樓:落日之暮

彙編中的2進位制在數值結尾加“b”

10進位制在結尾加“d”(有的編譯器不加字母預設為十進位制)

16進位制在結尾加“h”(有的編譯器不加字母預設為十六進位制,如windows裡面的debug程式)

16樓:亮到掉渣

00010100b

2014h

51微控制器彙編程式二進位制、十進位制、十六進位制數怎麼表示??

17樓:匿名使用者

十進位制 20d

十六進位制 14h

二進位制 10100b

應該是這樣,試一下吧

18樓:匿名使用者

十進位制bai就是0到9這是個數 比如du mov a,#8二進位制就

是01這兩個數

十六進位制是zhi從0到9到a b c d e f 這16個數.a表示10 b表示11 。。dao。。。。。

f表示15就這樣。16進位制後面有帶一個h表示16進位制。比如 mov a #0ffh

19樓:林立秋

真是搞笑,你把這個當成提供答案的工具呀,每個人都問這些奇怪的問題,這個問題是最基本的,你應該不是小學生吧

20樓:匿名使用者

比如說20,用二進位制表示為00010100,十進位制20,十六進位制14h

大學80C51微控制器程式設計題,請使用組合語言編寫,謝謝

1 mov a,r1 anl a,0f0h xch a,r2 anl a,0fh orl a,r2 mov r3,a 2 mov r0,30h mov 40h,0 mov 41h,0 mov r2,16 loop mov a,r0 add a,40h mov 40h,a mov a,41h addc...

組合語言微控制器,組合語言怎麼寫入微控制器

rlc 是帶進位的迴圈左移,rlc a即將a的內容左移一位,將進位位c中的值移到累加器a的最低位,a的最高位移到c裡。譬如說 設a 01000001,c 1 則如果執行rl 則a 10000010,c 1 a所有位左移一位,最低位補零,c不參加移位操作,保持原值不變 如果執行rlc後,則a 1000...

微控制器組合語言程式設計,全國微控制器組合語言程式設計師

org 0000h main mov dptr,3000h clr r0 clr r1 clr r2 mov r3,100 loop mov a,dptr clr c cjne a,0h,loop1 inc r0 djnz r3,loop loop1 rl a jc fushu inc r1 djn...