⑴ 什麼叫c51十六進制
C51 是單片機型號的一種,C51是51系列單片機編程中的數據格式為十六進制
相關資料:
就51系列而言,由於Intel公司將其內核使用權以專利互換或出售的形式轉給世界許多著名IC製造商,如PHILIPS、SIEMENS、AMD、ATMEL、SST、STC等,這樣51系列就變成有眾多製造廠商支持的、發展出上百個品種的大家族。到目前為止,其它任何一種單片機系列均未發展到如此規模。
這類單片機具有集成度高、性能價格比優越、貨源充足等優點,在工業測量領域內獲得了極為廣泛的應用。51系列單片機是我國的主流機種,它的開發工具(模擬器、編程器、編譯系統等)也很容易購買到,而且價格較底。我們學習單片機也選擇從51系列開始。
在51系列單片機中,按ROM(程序存儲器)的類型來分,可大致分為三種:1、片內帶內部掩膜ROM的(8051)它是由生產廠家用最後一道工序掩膜工藝來寫入程序的,用戶不能修改。用於大批量的產品。2、片外掛接ROM的(8031),這類單片機本身不含ROM,需要用戶自己外接,主要用在早期的51系列單片機開發中。3、片內帶EPROM的(8751),這類單片機目前常用的有OTP型和FLASH型。
Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟體開發系統,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。用過匯編語言後再使用C來開發,體會更加深刻。
⑵ 單片機十六進制如何轉成二進制數
單片機十六進制和二進制數,不用轉換,計算機內的數據都是以二進制保存的。幾進制數,只是以不同的方式來顯示。本質上是一樣的。
如果一定要轉換,具體參考如下:
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
}
⑶ 單片機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
⑷ 單片機的十六進制怎麼表示
十六進制 是計算機中數據的一種表示方法.同我們日常中的十進製表示法不一樣.它由0-9,A-F,組成.與10進制的對應關系是:0-9對應0-9;A-F對應10-15;N進制的數可以用0---(N-1)的數表示超過9的用字母A-F。 例如: 10進制的32表示成16進制就是:20 16進制的32表示成10進制就是:3×16^1+2×16^0=50 6.1 為什麼需要八進制和十六進制? 編程中,我們常用的還是10進制……畢竟C/C++是高級語言。 比如: int a = 100,b = 99; 不過,由於數據在計算機中的表示,最終以二進制的形式存在,所以有時候使用二進制,可以更直觀地解決問題。 但,二進制數太長了。比如int 類型佔用4個位元組,32位。比如100,用int類型的二進制數表達將是: 0000 0000 0000 0000 0110 0100 面對這么長的數進行思考或操作,沒有人會喜歡。因此,C,C++ 沒有提供在代碼直接寫二進制數的方法。 用16進制或8進制可以解決這個問題。因為,進制越大,數的表達長度也就越短。不過,為什麼偏偏是16或8進制,而不其它的,諸如9或20進制呢? 2、8、16,分別是2的1次方,3次方,4次方。這一點使得三種進制之間可以非常直接地互相轉換。8進制或16進制縮短了二進制數,但保持了二進制數的表達特點。在下面的關於進制轉換的課程中,你可以發現這一點。 6.2 二、八、十六進制數轉換到十進制數 6.2.1 二進制數轉換為十進制數 二進制數第0位的權值是2的0次方,第1位的權值是2的1次方…… 所以,設有一個二進制數:101100100,轉換為10進制為:356
⑸ 單片機c語言十進制轉十六進制
轉來做什麼的問題,十進制的13 存到單片機的內存里就是0X0D....
⑹ 單片機十六進制共陽極代碼
51單片機和開發板是什麼關系?怎麼用?
⑺ 單片機中將十六進制轉化成十進制並顯示
給你一個比較好理解的十六進制轉換為BCD碼的程序。
BCDT:
MOV R5,#16 ;設置計數值
CLR A
MOV R2,A ;存放結果寄存器清零
MOV R3,A
MOV R4,A
MOV R6,TH1
MOV R7,TL1
LOOP:
CLR C
MOV A,R7 ;取被轉換二進制數乘二
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R4 ;乘2加c後經十進制調整轉
ADDC A,R4 ;換成BCD碼存入R2R3R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
DA A
MOV R3,A
MOV A,R2
ADDC A,R2
DA A
MOV R2,A
DJNZ R5,LOOP
RET
⑻ 單片機C語言中小數的十六進制數怎麼表示
浮點數沒有16進制的表達方式,只有整數類型有。
整型常量有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型的。
⑼ 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
}//