『壹』 如何把單片機機器語言轉化為c語言
機器語言可以反匯編為匯編語言,但是這種反匯編得到的匯編語言指令,與原來的指令已經完全不同,根本沒法看懂,所以,目前為止,還無法實現這個功能。
這也是對的,如果用軟體就可以將目標代碼還原回原來的指令,那程序員的就沒有知識產權可言了,別人的辛勤勞動這么容易轉換,那就太不公平了。
『貳』 單片機C51,將匯編語言轉換為C語言
#include<reg52.h>
#defineu8unsignedchar
#defineu16unsignedint
#defineBufSize0x10
u8buf[BufSize];
u8js=0;
voidmain(){
SCON=0x80;
PCON=0x80;
EA=1;
ES=1;
ACC=buf[0];
TB8=P;
SBUF=ACC;
while(1);
}
voidTRANI()interrupt4
{
TI=0;
js++;
if(js==BufSize){
ES=0;
}
else{
ACC=buf[js];
TB8=P;
SBUF=ACC;
}
}
順便優化匯編代碼
BUF EQU 0X50
ORG 0000H
JMP MAIN
ORG 0023H
JMP TRANI
MAIN:
MOV SCON,#0X80;
MOV PCON,#0X80
SETB EA
SETB ES
MOV R0,#BUF
MOV A,@R0
MOV C,P
MOV TB8,C
MOV SBUF,A
JMP $
TRANI:
PUSH PSW
PUSH ACC
INC R0
CJNE R0,#BUF+0x10,NEXT
JMP TEND
NEXT: MOV A,@R0
MOV C,P
MOV TB8,C
MOV SBUF,A
TEND:
POP ACC
POP PSW
RETI
『叄』 單片機匯編語言轉換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);
}
『肆』 at89c51單片機 如何用c語言編程啊
隨著單片機硬體性能的提高,編寫應用程序更著重於程序本身的效率。
Franklin或KEII.C51交叉編譯器是專為51系列單片機設計的一種高效的C語言編譯器,用其開發的應用程序易於維護,可移植性好,是目前較流行的51系列單片機的開發工具。
一、C51語言程序設計的基本技巧
首先,C51語言程序設計要盡可能採用結構化的設計方法。可將整個程序按功能分成若干個模塊,不同的模塊完成不同的功能。對於不同的功能模塊,分別指定相應的入口參數和出口參數,而經常使用的一些程序最好編成函數,這樣既不會引起整個程序管理的混亂,還可使程序的可讀性、移植性增強。
C51語言的主程序結構:
#include
main0{while(1);}
這是最小的C程序,包括頭部文件和程序主體。頭部文件為引用的外部資源文件,包括硬體信息和外部模塊提供的可使用的函數和變數的說明。
語句定義後,就可以在C語言程序中像匯編一樣使用這些硬體設備。
在C5l中常用項目來管理,項目一般分為C文件塊和頭部文件塊,常把不同的功能寫在不同的C文件中,依靠項目的管理,最後把所有文件連接起來,這樣就可以得到燒錄的HEX文件或BIN文件。沒有在頭部文件中列出的文件,可以算是該C文件的內部函數和變數,外部C不能使用。另外,在程序設計過程中要充分利用C51語言的預處理命令。
對於一些常用的常數,如TRUE、FAlSE、PI,以及各種特殊功能寄存器,或程序中一些重要的依據外界條件可變的常量,可採用宏定義(#de-fine)或集中起來放在一個頭文件中進行定義,再採用文件包含命令(#in-elude)將其加入到程序中,這樣當需要修改某個參量時,只需修改相應的包含文件或宏定義,而不必對使用它們的每個程序文件都進行修改,有利於文件的維護和更新。
舉例:利用宏定義和條件編譯,源程序不作任何修改就可適用於不同時鍾頻率的單片機系統,並可根據情況的不同取不同的delay值,完成不同的目的。程序如下:
#define flag 1#ifdef flag==l#define fose 6Mdelay=10;#elif flag==0#define fose 8Mdelay=12;#else#define fosc 12Mdelay=20;#endiFMain0{ for(I=O;l
『伍』 單片機編程可以用c語言嗎
當然可以,去問老師,都會的,在學校里用匯編編單片機的程序只是為了讓你練習匯編語言而已,單片機編程本來就是用c語言編的。
『陸』 這個單片機匯編換成C語言應怎麼寫
#include<reg52.h>//52系列單片機頭文件
#define
P1
ledall
//此處沒用到
sbit
led1=P1^0;
void
delay(unsigned
int
t)
{
while(t--);
}
void
main()
{
led1=0;
while(1)
{
led1=~led1//取反
delay(1000);//括弧中數加大則閃爍變慢
}
/*若要控制所有的
把上面6行去掉用下面的*/
/*
P1=0xaa;//隔一個亮
while(1)
{
P1=~P1;//~按位取反,間隔閃爍
delay(1000);
}
*/
}
若要做流水燈,加個#include<intrins.h>關於循環等
的頭文件
_crol_(P1,1);//P1左循環1位,配合延時和for循環語句循環8次可實現流水燈
_cror_(P1,1);//此句是右循環1位的
『柒』 如何把單片機機器語言轉化為c語言
機器語言可以反匯編為匯編語言,但是這種反匯編得到的匯編語言指令,與原來的指令已經完全不同,根本沒法看懂,所以,目前為止,還無法實現這個功能。
這也是對的,如果用軟體就可以將目標代碼還原回原來的指令,那程序員的就沒有知識產權可言了,別人的辛勤勞動這么容易轉換,那就太不公平了。
『捌』 如何將單片機HEX文件轉換成C語言或匯編
1、.hex是二進文件。.asm是匯編文件。是C編譯器產生的。
如果誰把匯編語言還原成C,幾乎不太可能,
如有這時間功夫,C程序自已都可早早重新編好了。
2、可以用反向工程hex2c:
開始—>運行—>輸入CMD
找到hex2c.exe所在文件夾路徑
輸入 hex2c <hex文件名稱.hex> <生成c文件名稱.c>