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();
}
}
}