當前位置:首頁 » 編程語言 » 單片機換c語言
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

單片機換c語言

發布時間: 2022-09-20 08:57:37

1. 單片機中,怎樣把c語言轉化為匯編語言

單片機是沒這個能力將C語言轉換為匯編語言的,它只知道執行1或0。
匯編語言和C語言都是我們用來跟單片機溝通的語言
只有用軟體來編譯為單片機可執行的1,0文件
單片機才能運行。
所以要c語言編譯為匯編語言是我們所用到的編譯器做的事情,比如說
keil
iar
gcc
等的編譯器他們都支持C語言編譯為匯編語言
並可生成單片機可執行文件。不同的單片機所用的編譯器或許不同

2. 51單片機匯編語言轉c語言 急!!!

如下即可:

已經測試成功。

別忘了採納。

3. 單片機C語言編程,要使用C語言自帶的庫函數,使用哪個宏包含命令

使用#include調用庫函數。
C51語言的編譯器中包含有豐富的庫函數,使用庫函數可以大大簡化用戶程序設計的工作量,提高編程效率。每個庫函數都在相應的頭文件中給出了函數原型聲明,在使用時,必須在源程序的開始處使用預處理命令#include將有關的頭文件包含進來。
C51庫函數中類型的選擇考慮到了8051單片機的結構特性,用戶在自己的應用程序中應盡可能地使用最小的數據類型,以最大限度地發揮8051單片機的性能,同時可減少應用程序的代碼長度。
單片機c語言編程是基於C語言的單片機編程。單片機的C語言採用C51編譯器(簡稱C51)。由C51產生的目標代碼短,運行速度高,存儲空間小,符合C語言的ANSI標准,生成的代碼遵循Intel目標文件格式,而且可與A51匯編語言PL/M51語言目標代碼混合使用。51單片機支持三種高級語言,即PL/M,C和BASIC。C語言是一種通用的程序設計語言,其代碼率高,數據類型及運算符豐富,並具有良好的程序結構,適用於各種應用的程序設計,是使用較廣的單片機編程語言。

4. 誰能幫我把下面那段51單片機程序改寫成C51單片機,就是改成C語言。

這個其實很簡單,我告訴你幾個方法你自已去轉吧,這樣你也可以學習一下。
P0 DATA 80H,P1 DATA 90H 這兩條是系統內部固定好的,在C51裡面,直接用#include <reg51.h>將51單片機介面信息包含進來。
K1 EQU P0.0像這樣的指令是定義用,表示K1這個名字定義為單機的P0.0這樣在程序中就可以用K1來代用了,在C51裡面,用 #define k1 P0.0
MOV SP, #50H這在C里,用等於號,SP=50(二進制數)
JNB K2, MFZ2 這是如果不等於0跳轉指令,在C語言里,可用IF(K2!=0)MFZ22;
ACALL DELAY 這是調用DELAY程序,在C語言里直接用DELAY();
JMP是跳轉指令,在C里用go to指令代替
INC是加1指令,在C里用,R0=R0+1
DJNZ R5, DEL1可用IF((R5-1)!=0)go to DEL1;
像這樣的程序用C就方便多了
MOV R0, #05
MFZ1: MOV A,R0
MOV DPTR, #TABLE
MOVC A, @A+DPTR
用C是:
R=5;A=DPTR[R];就行了則A就等於:0F7H了,對應下面的數據表第六個。
像下面的數據表:
TABLE: DB 0FCH,0F9H,0F3H,0F6H
DB 00H
DB 0F7H,0F3H,0FBH,09H
DB 0FDH,0FCH,0FEH,0F6H
DB 00H
寫成C是:TABLE[14]{0FCH,0F9H,0F3H,0F6H,00H,0F7H,0F3H,0FBH,09H,0FDH,0FCH,0FEH,0F6H,00H
}
像下面這個子程序:
DELAY: MOV R5, #40
DEL1: MOV R6, #248
DJNZ R6, $
DJNZ R5, DEL1
RET
寫成C的話是:
DELAY()
{將程序內容寫在這里}
還有一些指令自已去理解了,要執行判斷,就用IF(條件){要執行的內容};
記住C是分大小寫的,標點符號漏了,程序就大不一樣。。

5. 單片機C51,將圖中匯編語言轉換為C語言

你好懶,直接照個相將圖片貼上來了, 輸入匯編源碼可以找我給你翻譯成C

6. 單片機匯編語言轉換C語言

大致如此:
TMOD = 0x02;
while(1) {
P10 = 0;
TH0 = 0x6A;
TL0 = 0x6A;
TR0 = 1;
while(TF0==0);
P10 = 1;
TR0 = 0;
TH0 = 0xE7;
TL0 = 0xE7;
TR0 = 1;
while(TF0==0);
}

7. 如何將單片機HEX文件轉換成C語言或匯編

1、.hex是二進文件。.asm是匯編文件。是C編譯器產生的。
如果誰把匯編語言還原成C,幾乎不太可能,
如有這時間功夫,C程序自已都可早早重新編好了。
2、可以用反向工程hex2c:
開始—>運行—>輸入CMD
找到hex2c.exe所在文件夾路徑
輸入 hex2c <hex文件名稱.hex> <生成c文件名稱.c>

8. 如何把單片機機器語言轉化為c語言

機器語言可以反匯編為匯編語言,但是這種反匯編得到的匯編語言指令,與原來的指令已經完全不同,根本沒法看懂,所以,目前為止,還無法實現這個功能。
這也是對的,如果用軟體就可以將目標代碼還原回原來的指令,那程序員的就沒有知識產權可言了,別人的辛勤勞動這么容易轉換,那就太不公平了。

9. c51單片機匯編ASM轉化成C語言

首先說下功能:這是一個計數器,每秒計數一次,從0開始,計數到99後復位0,然後再反復執行。。
數碼管是共陰型的,由P20,P21作為片選信號控制亮滅。P20、P21為0時,選中數碼管,送入相應的段碼,即可顯示。程序如下:

#include <reg51.h>

unsigned char shiwei,gewei,count,times;
uusigned char code table[]=
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

void dly10ms(void);

void main()
{
shiwei=0; //十位數
gewei =0; //個位數
count=0; //計數器
times=0; //50次循環為1s

while(1) //死循環,反復執行
{
shiwei = count/10; //獲取計數器的個位數,十位數
gewei = count%10;

if(count<100)
{
for(times=50;times>0;times--)
{
P2^0 = 1;
P2^1 = 1; //關閉所有顯示

P0 = table[gewei]; //顯示各位
P2^0 = 0;
dly10ms();
P2^0 = 1; //關閉顯示

P0= table[shiwei]; //顯示十位
P2^1 = 0;
dly10ms();
P2^1 = 1; //關閉顯示
}
count = count + 1;
}
else { count=0; }
}
}

void dly10ms()
{
unsigned char i,j;
for(i=10;i>0;i--)
for(j=248;j>0;j--); //大概1ms,具體取決於晶振頻率
}

呵呵,確實如哪位仁兄所說, 漏了些東西,現在補上了、、不過仁兄也出了些小毛病,似乎沒有delay20ms()這個函數吧,應該改為delay10ms()、、而且,一般先判斷再循環,能有效提高CPU效率,while每趟循環100次,這個小程序還好,大程序的話,CPU豈不累死?!

10. 請教把下面的單片機匯編語言轉換成C語言

#include<reg51.h>
#define uchar unsigned char
uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar led0,led1,led2,led3,led4;
sbit p30=P3^0;
void disp1()
{
}
void disp2()
{
}
void disp3()
{
}
main()
{
uchar ew,ns;
uchar i;
SP=0x40;
ew=80;
ns=60;
p30=0;
TMOD=0x66;
TL0=0xff;
TH0=0;
TL1=0xff;
TH1=0;
IT0=1;
IT1=1;
while(1)
{
p30=0;
TR1=1;
for(i=ew;i>0;i--)
{
P2=0x33;
led0=i;
led1=i+3;
disp3();
disp3();
}
for(i=0;i<3;i++)
{
led2=i;
P2=0x2b;
disp2();
P2=0x3b;
disp2();
}
p30=0;
for(i=ns;i>0;i--)
{
P2=0x1e;
led3=i;
led4=i+3;
disp1();
disp1();
}
for(i=0;i<3;i++)
{
led2=i;
P2=0x1d;
disp2();
P2=0x1f;
disp2();
}
}
}