1. gcc编译器和嵌入式keil的C51编译器有什么不
前者是通用的C语言编译器,后者相当于是个定制版。C51中定义了一些原先C语言中没有的类型以及寄存器定义、同时鉴于单片机通常只有几KB的内存空间进行了代码生成量优化,专门用于单片机的开发,这些都是在GCC这样标准的ANSI C编译器中所没有的。
2. 主流c51单片机编译器比对
keilc当然是比较好的了.
3. keilc51有代码补全功能吗
不可以实现代码补全功能
4. C51将C代码汇编有ADD A , ACC 怎么回事
A与ACC都代表累加器,同一地址,但是在汇编里,写法A与ACC拥有不同的含义
A是包含在指令里的,指令码不同;而ACC却是作为操作数出现,代表地址
就相当于汇编指令有,MOV A,Rn同时也有MOV direct,Rn等不同的指令
MOV A,R0 与 MOV ACC,R0就会生成上述两种不同的机器码,但是结果一样
那么就好理解了ADD A,ACC就使用指令ADD A,direct,direct就是ACC符号所表示的地址,也就是累加器自己相加,相当于X2,也就是左移
5. 主流C51单片机编译器比对
int short 的大小是因机器而异嘛(准确点应该是编译器)。你都说了人家规定的是“最小”为16位,又不是只能是16位,也没有说两者应该相等(事实上是short不超过int就OK啦)。所以当然可以short类型为半个机器字长,而int类型则为一个机器字长的啦。
“C++标准规定了每个算术类型的最小存储空间,但他并不自知编译器使用更大的存储空间 ”
说简单点就是C++规定了个最小的值,但是将你的代码编译成机器码的编译器则确定了你这个长度值为多少。因为C++是一种语言,一个规范,或者说只是一种规定,然后要将你按这种规范写的代码编译成能在机器上运行的代码的是编译器。而在不同的机器上运行的程序的实际结构是不一样的,比如单片机与PC相差就很大。要将按相同规范写的程序在各种各样乱七八糟的机器上运行,就需要相应的编译器了。所以实际的大小是由你编译代码的编译器确定的。
PS:当然当前一般的PC上int都是32位,short16位的。因为现在32位的机子是主流嘛。如果你不写什么单片机的程序可以不用太在意这个问题。但是写单片机程序时就要注意了,因为一般一个单片机的编译器可以编译很多种型号芯片的代码,而这些型号有可能从8位到32位都有……
6. keil c51优化等级介绍
一般用优化等级8,其它的别用,容易出事。
编译完之后多留意data,xdata,看有没超出芯片的最大值,
特别是data,不能超过128,甚至太接近128有时也会出问题。
如果data 需要使用到256,则另外的128用idata定义
7. C51编译时提示出错,但我怎么也找不出错在哪里了
你前面加了头文件(*.h)没有?
我加了个main函数,编译之后 是没有错误的啊
error C141: syntax error near 'void'可能是函数前后少了"{"或者"}",你应该仔细检查一下的
还有,error C202: 'TempCyc': undefined identifier这一句错误可能是在main函数中也使用了TempCyc,而没有在主函数中定义,这个变量在void Delay5Ms(void)中只是局部变量
#include "reg52.h"
void Delay5Ms(void)
{
unsigned int TempCyc;
TempCyc=5552;
while(TempCyc--);
}
//******400ms延时******
void Delay400Ms(void)
{
unsigned char TempCycA=5;
unsigned int TempCycB;
while(TempCycA--)
{
TempCycB=7269;
while(TempCycB--);
}
}
void main()
{
while(1)
{
Delay5Ms();
Delay400Ms();
}
}
8. Keil-MDK5.11设置了代码自动补全,怎么还是不能补全
不知道解决了没有,我也遇见一样的情况。现在可以了。设置界面后有个设置几个字母提示,换个数字,然后在换回来。确定就可以了。
9. 单片机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语言是一种通用的程序设计语言,其代码率高,数据类型及运算符丰富,并具有良好的程序结构,适用于各种应用的程序设计,是使用较广的单片机编程语言。