導航:首頁 > 操作系統 > 單片機16進制

單片機16進制

發布時間:2022-04-05 03:46:05

1. 51單片機C語言里 怎樣將16進制 直接化成 10進制

我這兒有一個進制轉換的程序,你可以參考一下:
#include<stdio.h>
#include<math.h>
#include<string.h>
int count=0;
void *tentoBOH(int a,int n)
{
int t,i=0,j,str[50],*p;
char str1[50],*q,temp;
while(a!=0)
{
t=a%n;
if(n==16)
{
if(t<=9&&t>=0)str1[i++]=(char)('0'+t);
if(t>9&&t<16)str1[i++]=(char)('A'-10+t);
}
else
str[i++]=t;
a=a/n;
count++;
}
for(i=0,j=count-1;i<count/2;i++,j--)
{
t=str[i];
str[i]=str[j];
str[j]=t;
temp=str1[i];
str1[i]=str1[j];
str1[j]=temp;
}
if(n==16)
return q=str1;
else
return p=str;
}
int BOHtoTen(char str[],int n)
{
int len,i,a=0;
char t;
len=(int)strlen(str);
for(i=0;i<len/2;i++)
{
t=str[i];
str[i]=str[len-1-i];
str[len-1-i]=t;
}
i=0;
while(str[i]!='\0')
{
if(str[i]>='0'&&str[i]<='9')
a+=(str[i]-'0')*(int)pow(n,i);
if(str[i]>='a'&&str[i]<='f')
a+=(str[i]-'a'+10)*(int)pow(n,i);
if(str[i]>='A'&&str[i]<='F')
a+=(str[i]-'A'+10)*(int)pow(n,i);
i++;
}
return a;
}
void main()
{
int a,i,n,m,*p;
char *q,str[20];
printf("請輸入一個十進制數a= ");
scanf("%d",&a);
printf("請輸入一個進制數n= ");
scanf("%d",&n);
if(n==16)q=tentoBOH(a,n);
else p=tentoBOH(a,n);
printf("輸出正整數%d的%d進制為:",a,n);
if(n==16)
for(i=0;i<count;i++)
printf("%c",*(q+i));
else
for(i=0;i<count;i++)
printf("%d",*(p+i));
printf("\n請輸入字元串str= ");
scanf("%s",str);
printf("\n請輸入該字元串的進制m= ");
scanf("%d",&m);
printf("\n該%d進制數%s轉換成十進制數為:%d\n",m,str,BOHtoTen(str,m));
}

2. 單片機程序中十進制轉換成十六進制

display_number((bValue & 0xf0) >> 4

右移四位

其實就是 除以16

所以是的

左移1位 乘以2 右移1位 除以2

3. 51單片機10進制轉16進制

十進制還是十六進制只是一個表述當時,你直接賦值就行。比如十進制K1=11;十六進制的話就是K=20x0b;這樣K1=K2,不用轉換的

4. 關於51單片機字元串轉換成16進制

首先判斷是數字還是字母,如果是數字,那麼減0x30(0的ASCII),如果是字母,那麼減0x41(A的ASCII),減完後,將兩個數組合起來就可以了,第一個數放高四位,第二個數放低四位。

5. 單片機C語言中小數的十六進制數怎麼表示

  1. 浮點數沒有16進制的表達方式,只有整數類型有。

  2. 整型常量有3種表示方式:
    ①十進制整數。例如,123、一456、0。
    ②八進制整數。以0開頭的整數是八進制數。例如,0123表示8進制數123<8),等於十進制數83。
    ③十六進制整數。以ox或0x開頭的整數是十六進制數。例如,0x1.23或0Xl 23表示十六進制數123…),等於十進制數291。
    如果在整型常量後面加上字母u或u,則表示無符號整數(unsigned int)。例如,123U或123u是unsigned int型的。如果在整型常量後面加上一個字母L或l,則表示長整數(10ngint)。例如,123[.或123l是long int型的。

6. 單片機IO口十六進制問題

單片機IO口十六進制 比如
P2=0x01 對應 P2^0=1
P2=0x02 對應 P2^1=1
P2=0x04 對應 P2^2=1
P2=0x08 對應 P2^3=1
P2=0x10 對應 P2^4=1
P2=0x20 對應 P2^5=1
P2=0x40 對應 P2^6=1
P2=0x80 對應 P2^7=1
P2=0x11 對應 P2^4=1 與 P2^0=1
P2=0xff 對應 P2^7=1 與 P2^6=1、P2^5=1、P2^4=1、P2^3=1、P2^2=1、P2^1=1、P2^0=1

7. 怎麼將單片機發來的數據變為16進制

題意不明,不知道您想問的意思。
比如:
何為「發來的」數據?通過什麼途徑「發來」?按照什麼格式「發來」?這里就有千差萬別的不同,您的問題是哪一種?
還有:
「變為16進制」是用來顯示或列印?還是數據存儲?
如果是顯示或列印,則取決於您的程序語言。例如C語言的printf函數中的格式符%X,就是16進制格式顯示或列印的。
如果是數據存儲,那就糊塗了。因為數據存儲歸根結底只能是二進制,所謂「按其它進制存儲」,只不過是一種代表方式而已。例如「按十進制存儲」就有BDC碼形式和ASCII碼的字元串形式等等,但這些形式其實只是用幾個二進制位代表一個十進制位而已,歸根結底仍是以二進制位為基礎的存儲形式。
而16進制和十進制不同。十進制與二進制之間的對應關系並不直接,所以需要規定一定的「代表」方式。而16進制與二進制之間的對應關系非常直接,所以不需要特別規定如何「代表」十六進制的一個位,直接按二進制原封不動存放,在各種內存觀察的工具中就可以直接看到十六進制形式了。例如DOS下的DEBUG,就是如此。所以說「按16進制存放」的概念是毫無意義的概念。

8. 單片機十六進制如何轉成二進制數

單片機十六進制和二進制數,不用轉換,計算機內的數據都是以二進制保存的。幾進制數,只是以不同的方式來顯示。本質上是一樣的。
如果一定要轉換,具體參考如下:
unsigned char num; //定義一個8位數
if(num&(1<<n))
...;//num 的第N位是1
else
...;//num 的第N位是0
當然可以放在一個循環裡面;
for(unsigned char i=0;i<8;i++) {
if(num&(1<<n))
...;//num 的第N位是1
else
...;//num 的第N位是0
}

9. 51單片機16進制編程

如果是ASCII碼表內的符號值,那麼ASCII值本身就可以認為是 16進制的(因為進制只是給人看的,單片機只有2進制,沒有ASCII 和 Hex 之分),但如果是Hex值,經過ASCII發送後,需要接收解出數值,那麼可以用這個函數:
uchar ASCII_ToHex(uchar ascii_data) //ASCII 轉 Hex 函數
{
uchar hex_data=0; //定義 Hex變數存儲轉換結果
if(ascii_data>='0' && ascii_data<='9') hex_data=ascii_data-'0'; //若 轉換內容為 字元'0-9',則轉成對應數字0-9
else if(ascii_data>='a' && ascii_data<='f') hex_data=ascii_data-'a'+10; //若 轉換內容為 字元'a-f',則轉成數字10-15
else if(ascii_data>='A' && ascii_data<='F') hex_data=ascii_data-'A'+10; //若 轉換內容為 字元'A-F',則轉成數字10-15
return hex_data; //返回轉換結果,非以上字元,不在Hex(0-F)范圍內,默認0
}//

閱讀全文

與單片機16進制相關的資料

熱點內容
繼承類如何實例化python 瀏覽:767
逆戰加密武器鑰匙 瀏覽:261
php取小數後兩位 瀏覽:354
單片機編程魔法師 瀏覽:834
帝豪gs怎麼下載影視app軟體 瀏覽:511
程序員去山中泡溫泉 瀏覽:38
安卓手機怎麼恢復出廠系統版本 瀏覽:361
高三倒計時緩解壓力 瀏覽:621
一捏就變形的解壓玩具怎麼折 瀏覽:198
易融貸app借錢怎麼 瀏覽:941
單片機側重點 瀏覽:869
江蘇惠普伺服器虛擬化設計雲主機 瀏覽:649
在歐拉app好貓充電樁怎麼申請 瀏覽:451
反編譯代碼教程 瀏覽:800
linuxio阻塞 瀏覽:973
8腳單片機pic 瀏覽:821
如何看彩色塗鴉遮住的字安卓 瀏覽:688
擺渡機器人編程 瀏覽:654
軟程序員著裝 瀏覽:139
寶雞雲存儲伺服器 瀏覽:668