怎麼將微控制器接收到的十六進位制數轉為十進位制

2022-02-23 03:38:23 字數 3314 閱讀 4350

1樓:寧霖夫詩蘭

不是轉換……

不論十進位制還是十六進位制都是看你怎麼解釋,或者說怎麼定義,但是不論怎麼定義資料,儲存的都是十六進位制形式,你傳送的資料是儲存的形式,所以上位機vb讀取的資料也是十六進位制的,你如果想要十進位制,需要自己在上位機接收後解析資料,解析的時候注意大小端等問題……

2樓:

你說的數字帶小數點的,叫浮點數。

小數點的資料用十六進位制表示用4個位元組。

如果小數部分都是0,則可以用整數表示。

例如:用長整型表示。

long dat; //用於儲存接收到的十六進位制數dat=12345;

萬位數:ww = dat/10000;

千位數:qw = dat%10000/1000;

百位數:bw = dat%10000%1000/100;

十位數:sw = dat%10000%1000%100/10;

個位數:gw = dat%10000%1000%100%10;

依次類推。

3樓:南霸天

轉換方法:

16進位制就是逢16進1,但我們只有0~9這十個數字,所以我們用a,b,c,d,e,f這六個字母來分別表示10,11,12,13,14,15。字母不區分大小寫。

十六進位制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方……,所以,在第n(n從0開始)位上,如果是是數 x (x 大於等於0,並且x小於等於 15,即:f)表示的大小為 x * 16的n次方。

例如:用豎式計算:

2af5換算成10進位制:

第0位: 5 * 16的0次方 = 5

第1位: f * 16的1次方 = 240第2位: a * 16的2次方 = 2560第3位: 2 * 16的3次方 = 8192直接計算就是:

5 * 16的0次方 + f * 16的1次方 + a * 16的2次方 + 2 * 16的3次方 = 10997

求微控制器組合語言怎樣程式設計才能實現將一個十六進位制數轉換為十進位制數 20

4樓:匿名使用者

用除法例如 0xff 轉換成十進位制數,百位十位個位分別存在r1、r2、r3中

在51微控制器中暫存器a中的數除以暫存器b中的數,商存在a,餘數存在bmov a,#0ffh

mov b,#100

mul a,b

mov r1,a //存百位mov b,a

mov b,#10

mul a,b

mov r2,a //存十位mov r3,b //存個位

5樓:

mov r6,#00h;存轉化後的數的低位mov r5,#00h;存轉化後的數的高位mov r7,#0ffh;為要轉化的

mov a,r7

cjne a,#00h,loop;判斷要轉化的數是否為0ajmp loop1

loop;mov a,r6

add a,#01h

da a

mov r6,a

addc a,#00h

da a

mov r5,a

djnz r7,loop

loop1:sjmp $

6樓:做而論道

一樓的,是在什麼地方抄的吧?文字註釋,看著眼熟。

呵呵,原來是我以前寫的答案。

7樓:匿名使用者

你確定你要的是十六進位制轉換成十進位制的程式?不是二進位制轉成十進位制的嗎?微控制器中的資料可都是二進位制的,只是通常用十六進位制表示罷了,我以前也犯過這個錯誤

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

8樓:

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

9樓:

把數值送到暫存器a中,

mov b,#10

div ab

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

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

mov a,b

mov b,10

div ab

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

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

10樓:匿名使用者

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

是幾就點亮相應的led腳。

11樓:匿名使用者

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

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

微控制器給電腦傳送一個位元組的十六進位制數,這個數該存放在什麼型別的變數裡呢

12樓:

……不知道你為什麼如此執念於十進位制。

想象你自己是計算機,只認識十六進位制、不認識十進位制。那麼很多問題或許將迎刃而解。

13樓:愛桔子人

傳送就傳送16進位制就可以,接收採用byte陣列,byte接收到一般就是10進位制的,這個你可以除錯看看。如果在需要別的格式用vb2008轉換即可

14樓:匿名使用者

16進位制當然是用byte儲存啊,0xff表示最大,也就是255.和byte一致

15樓:匿名使用者

我初學的時候也會問這樣的問題哎。。。

在微控制器c語言怎麼把16進位制數變成10進位制發到串列埠

16樓:徐老二嗯嗯嗯

串列埠都是用16進位制傳送的,有兩種辦法,

在接收到資料之後你把16進位制轉為10進位制就可以了,比如你傳送的十進位制10,傳送的時是十六進位制0x0a,接收到資料後轉成10進位制 0ah = 10。

在傳送時把資料轉換成bcd碼,傳送十進位制10,轉成bcd碼十六進位制就是0x10,接收到資料時顯示的就是10h。

51微控制器兩個十六進位制數相加程式設計

直接按位或 a 0xff b 0xea c a b 或者直接相加 a 0xff b 0xea c a b 推薦第一種 兩個什麼樣的陣列,是將每個值相加嗎 這個有什麼說的嗎 int a 0x0a int b 0xff int c c b a 51微控制器中,如果兩個16進位制的數相加超過了ffh,那我...

怎麼將十六進位制轉化為bcd碼,怎麼將十六進位制轉化為BCD碼

十六進位制數 3d2轉換成十進位制是978 最後bcd碼是 1001 0111 1000。在計算機中,資料是以0和1的二進位制方式來表示的。比如一個8位的二進位制數,就表示為 0001 0001,由於二進位制數用起來比較不方便,所以人們通常以16進位制的方式來表達,比如上述的00010001的16進...

請問3 6的一進位制是怎麼算的,十六進位制是怎麼算的?

1 1 1 1 就是那麼實現的 對應位數相加 0000 0001 0000 0001 0000 0010 除非是 1 1 計算機中 負數一般使用 補碼形式 比如8位二進位制表示 1 0000 0001 1 1111 1111 1 1就是 1 1 0000 0001 1111 1111 1 0000 ...