keilc51的编译
⑴ KEIL C51的编译连接问题
字面意思是未解析的外部符号,你没把包含外部变量的c文件放在同一文件夹下,或者说你没把那个文件添加到工程。我刚测试完,就是这个问题
啊对了,如果还有问题可以网络hi我,我每天都会看。很喜欢单片机设计,愿意一起研究
⑵ KEIL C51多文件编译
首先主函数只能存在于一个文件中,这个文件可以直接取名mian.c这样比较方便管理。然后按功能分其它文件,分别编写XX.h和XX.c文件,在XX.h中写入函数的声明和全局变量的定义,在XX.c中写函数的具体内容,并且在XX.c中要include“XX.h”,在mian.c中include所有的.h文件。这样就可以正常编译和烧写了。最终生成的还是一个hex文件
⑶ 关于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应区分
⑷ Keil编写C51程序,编译问题请教
应该是这个函数uart0_init有函数原型,也就是说能被其他文件中的函数调用,但却不存在实际的函数体,所以链接时链接器找不到这个函数对应的代码段,就报警告了,而你试图右键看这个函数的定义时,就会跳出这个框。
⑸ keil c51编译时出错error c202,求教~~
咨询记录 · 回答于2021-11-14
⑹ keil c51 问题:程序无法编译
你那程序也不长啊,直接把程序发上来,发什么图片哪?
第二个图片显示的,没有错误了,只有一个警告,是因为调用那个延时子程序delay( ) 时,打错了一个字母,打成dalay 了。
另外提示:保存C程序的文件夹,最好不 要用汉字,而且文件夹的层数不要太多了,你这一共是五层文件夹,有两层还是汉字,编译时容易出错的。
⑺ 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的编译指令#pragma noiv什么意思
这样的问题直接查软件的帮助就可以找到啊。
编译指令NOIV
默认值:INTVECTOR(0)
描述:NOIV(NOINTVECTOR)编译指令会抑制生成中断向量。借助这个编译指令,用户可以采用其它的编程工具产生中断向量,从而与本软件联合使用。
⑼ 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问题
你注意以下几个关键点:
uint ad_covert() //
{
uint temp1,temp2;
temp1=258;
return (temp1); //返回AD转换数据 取八位结果
}
这些,都没有问题,如果正常的话,函数永远返回的是 常数258,.
但是,如果你的 result 定义成 uchar类型的,那么,result的结果就永远都是2.
因为uchar类型的数据,是8位数据,最大的数是 255,所以,对于大于 255的数字,就相当于对256取余数,因为你的函数永远返回 258,大于 255,所以对256取余数的结果是 2。
这就是为什么总是 2的原因,如果你的result定义成 uint类型,那么,结果就永远是 258.