Ⅰ Keil C51编译的问题!
你主程序里没有别的程序代码了?
单片机在编译时,首先是进行编译预处理(头文件包括指令,宏定义处理,条件编译,各种伪指令等),然后再进入优化编译阶段,再进行汇编过程,接着是程序链接。
你在主程序中定义,unsigned char a[2]={1,2};数组,并分配两个存储单元。虽然在语法上是没有错,程序也能正确被编译。但程序在真正进行实质链接时,由于你并没有真正进行功能性的程序指定,编译时它会生成很多冗余的汇编代码,按照你定义的单元。上面生成的汇编,你如果仔细看,很多的条件跳转语句都是转到不同的内存单元。如:
DJNZ R7,C:001F //R7寄存器相减为0则转到001F,否则顺序执行。
DJNZ R7,C:004B
DJNZ R7,C:003F
INC DPTR
F2 MOVX @R0,A
INC R0
DJNZ R7,C:004B
而实际,编写程序,也没有你以上的那种做法,不可能只分配内存单元,而不做任何其它事情。我想,你这样做,无非就是想做个实验罢了。
Ⅱ KEIL C51 V8.02可以编译汇编吗 急!!
可以的,你自己试一试就知道了。
Ⅲ 在keil环境中遍了一段C51的程序后怎么编译
楼主如果经常写c51的话,可以建一个自己的头文件,每次包涵一个就可以了
比如建一个自己的,取名
my.h
里面可以写些
#include
#include
#define
uchar
unsigned
char
//这几句是简写语句,很方便
#define
uint
unsigned
int
#define
ulong
unsigned
long
当然还可以写些常用延时子程序在内,
只要在主程序中加句#include"my.h"就搞定
但不要再在主程序中重复定义了
这个就是最简单的了
Ⅳ keil c51 能汇编吗
可以啊,你就直接在创建初始的时候,将那个“xxx.c”改成 “xxx.asm”那就可以了,这样的话你就可以直接写汇编的程序了,只不过不能加上C语言的程序。
Ⅳ 关于c51单片机使用keil编译器的一些问题
1.如果没有被调用,就不会被编译,自然不占用空间。
2.只要结构体有元素被使用,就要占据整个结构体的空间。
3.多出来的0.2是位变量,表示你用了两个bit的变量。
Ⅵ 为什么用keil写的这个C51不能编译
路径内不要有中文的…
Ⅶ keil C51程序编译的问题
如果你的H头文件包含在每个.C文件中,那就是说你的每个.C文件都定义了sbuf[20],KEIL就会提示你说你的sbuff[20]重复定义。我理解的应该是这个问题吧?
解决办法,要么用条件编译区分sbuff的作用域,就是在哪些.c文件中使用。
要么在一个.c文件中定义sbuff,在H文件中用外部声明包含进去,比如:
extern unsigned char data char sbuf[20];这样在其他的.C文件中,sbuff是引用而不是定义了。
一般都是采用第二种方式,H文件只存放外部声明。
Ⅷ 关于Keil C51编译的问题
COMMON.C(1): warning C500: LICENSE ERROR (R208: RENEW LICENSE ID CODE (LIC))
好像是说注册错误,要装破解版;
MAIN.C(9): error C202: 'TRO': undefined identifier第九行错误,应是TR0, O与0应区分