導航:首頁 > 編程語言 > 單片機二進制怎麼編程

單片機二進制怎麼編程

發布時間:2022-05-10 03:45:41

單片機怎麼用二進制編程

學過匯編沒有?好像是MOVE P1,0FDH ,然後move可以查出代表的二進制命令是什麼,P1可以查到代表的二進制地址,0FDH 也可以寫成二進制格式,然後就上面那句話就變成三個 二進制的代碼了。不知道把這些代碼寫成二進制文件燒進去行不行,沒試過,嘿嘿。

⑵ 請問怎麼用51單片機編程將2進制數轉化為ASCII碼,並且在1602上顯示出來

如果是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
}//

⑶ 51單片機的編程問題

1:C51編譯器如何區分位地址和位元組地址
是靠預定義實現的,比如:sfr P0 = 0x80; sbit P0_0 = 0x80;前者聲明了P0埠地址位於0x80,後者說明了P0埠的bit0,即P0.0位於位地址空間0x80處。這2個0x80具有完全不同的含義,靠關鍵字sfr和sbit來區別。這樣當程序被編譯時,編譯器會依此編譯成相應的匯編語言。例如:

C51語句: P0 = 1;

P0聲明為sfr,因此編譯成:mov 80h,01h,將把0x01數據送入0x80單元,由於0x80單元物理上對應P0埠,因此,P0.0腳將輸出高電平(其實是呈現高阻態,P0口獨有的),其他.1-.7腳輸出低電平。

C51語句: P0_0 = 1;

P0_0聲明為sbit,因此編譯成:setb 80h,這將把位地址空間的0x80地址的bit的值置1。這個位正是P0口的bit0,執行後,P0.0將輸出高阻態。而P0.1-.7不會變化。

2:C51為什麼要嵌套匯編
51單片機一個顯著優點就是指令執行時間固定,因此可以適應時序要求嚴格的場合。例如符合ISO7816協議的cpu卡的讀寫,對時序要求比較嚴格。其實就是用io腳做出來的同步半雙工串口。支持cpu卡的程序一般比較龐大,需要用c51來組織,但是由於c編譯的不確定性,必須把底層程序封裝成匯編語言模塊嵌入到工程中。這就帶來幾個問題:如何聲明函數、參數如何傳遞等。限於篇幅,不能說得很細。下面舉例:

匯編程序單獨保存一個文件,加入到工程中,函數如下:

_proc_a:

mov a, r7

inc a

mov r7, a

ret

用c語言在.h文件中聲明: extern unsigned char proc_a(unsigned char val);

調用時形如: retvalue = proc_a(0x11);

說明:

a:匯編程序如果帶參數,則需要在匯編程序前多加一個下劃線。而聲明它的地方不用加(偉福編譯器這么要求的)。

b:函數的形參中第一參數用R7傳遞,函數返回值用R7返回,這是C51的通用規范。其他參數都有相應規定。函數可以返回一個位,用psw的c位返回。c:上面的語句,執行順序是把0x11給R7,然後跳轉子程序,子程序將它加1後送回。

d:函數跳轉到匯編程序時,本區的R0-R7,A,B,PSW,DPTR等寄存器可以供子程序使用,不必考慮調用後是否要恢復這些常規資源。上例中,A的值被函數使用了,編程者不必恢復調用前的值。

⑷ 怎樣給單片機編程

看你用的是什麼類型的單片機,一般來說51系列的是入門級的也很好用,資料很多。你把編的程序經過編譯後,形成一個最終的二進制文件,然後利用編程器寫入單片機晶元中,然後把寫了程序的晶元安裝或焊接在電路中進行測試,最好的辦法是用一些學習板或開發測試板,因為那樣可以免去焊來焊去之苦。
當然你用STC(宏晶)片子,也可以事先做好電路,然後用STC下載線把你編制的程序寫到晶元中。
另外,對於單片機技術,你不僅會編程,還要會電路設計,因為不同的電路設計有不同的程序與之對應,單片機編程與電路設計是分不開的。

⑸ 單片機中二進制怎麼表示

單片機編程 匯編中 十進制 後面加D ,十六進制後邊加H, 二進制後面加B。 比如 10進制 35D, 16進制 23H, 二進制 0010 0011B.
c語言中 十進制 不加前綴, 十六進制前邊加 0x , 8進制前邊加0 , 二進制不能直接表示(比較麻煩), 如 10進制 15 , 16進制 0x25 , 8進制 025

⑹ 單片機怎麼處理一個多位的二進制數據,怎麼存儲呢。我舉例說明。

你好!
8位的單片機,long型變數也只有32位,你說是一次收到一個bit的數據,共40bit的數據?每8個bit存為一個byte,
共折在五個byte不就存下了么
僅代表個人觀點,不喜勿噴,謝謝。

⑺ 單片機十進制轉二進制的程序

#include<stdio.h>
#define MAX 32
int main(void)
{
int i=0,n,a[MAX];
printf("請輸入一個十進制整數:\n");
scanf("%d",&n);
while (n>0) //循環過程的始終,判斷n是否能被2除盡
{
a[i] = n%2; //用數組存儲每次除以2之後的余數,即斷定奇偶性,對應二進制位上數值
i = i+1;
n = n/2;
}
printf("十進制整數轉換為二進制數是:\n");
for(; i > 0; i--)
printf("%d",a[i-1]);
printf("\n");
return 0;
}

⑻ 8051單片機編程時,怎麼把二進制數變成十進制數

這個就是16進制轉10進制。
看你的數據范圍了。
只有一個位元組的話,最簡單就是 循環減10。
多位元組的話,減起來就太慢了。
可以用位權來加。移位判斷,是1就加,0不加,第0位加1,第1位加2,第3位4,這樣。

⑼ 單片機如何燒錄二進制的機器代碼

一是用編程器,二是有在線編程功能的如STC12系列,AVR單片機等等可以用相應的下載軟體直接在線編程。

⑽ 單片機二進制數怎麼用數組表示

  1. 十六進製表示即可(BM1,BM2,BM3,BM4,BM5,BM6,BM7,BM8),如果BM1是低位,BM8是高位,只用6個位,那麼1100 0000 = 0xC0 等等等等

  2. 把要用的16進制寫到數組裡面 unsigned char arr[]={0xC0, 0xE0};要寫多少隨你自己了

  3. 兩個埠比較麻煩,例如做一個函數,可以輸入數組參數,把參數分別賦值給P4,P2

閱讀全文

與單片機二進制怎麼編程相關的資料

熱點內容
管家婆輝煌2加密狗挪到另一台電腦 瀏覽:760
摩托車在哪裡app看考題 瀏覽:356
蘋果5app在哪裡設置 瀏覽:737
如何查看伺服器的磁碟使用 瀏覽:165
python蒙特卡洛模型投點圖 瀏覽:330
安卓手機屬於什麼介面 瀏覽:742
微信群推廣網站源碼 瀏覽:764
九江離鷹潭源碼 瀏覽:719
python可以當作函數的返回值 瀏覽:422
地鐵逃生體驗服怎麼進入安卓 瀏覽:833
齊魯工惠app的中獎記錄在哪裡 瀏覽:759
linuxkill命令詳解 瀏覽:103
dhcp伺服器動態分配地址 瀏覽:265
門禁卡加密了能破解嗎 瀏覽:215
在哪裡下載百度網盤app 瀏覽:917
伺服器要升級什麼意思 瀏覽:831
銀行還房貸解壓方法 瀏覽:702
伺服器主機辦公如何提速 瀏覽:920
cad列印為pdf 瀏覽:418
賣手錶的app哪裡可以賣 瀏覽:55