keil中can't open reg51.h是啥原因

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keil中can't open reg51.h是啥原因相关的知识,希望对你有一定的参考价值。

参考技术A 当当安装的目录下没有该文件,或者头文件名有错时,编译时,会有can't open fine 'xxx.h' 提示。请更正头文件名即可。
具体的头文件可在你安装的目录下查看,比如C:\Program Files\Keil\C51\INC\Atmel
或者用最常用的<reg52.h>或<at89x51.h>试试。本回答被提问者和网友采纳
参考技术B 确认相关路径下是否包含此文件。

使用keil编程常遇到c语言问题;main被重复定义了,如何破?

#include<reg52.h>
extern main;
void dlay(float k)

unsigned int h,j;
h =k*100;
while(h--)

for(j=8505;j>0;j--) ;

void main()

int T,i; T=0xfe;
while(1)
for(i=8;i>0;i--)
P1=T,T<<=1,T=T+1,dlay(0.1) ;

删除掉extern main;就好了

main这个关键字不能随便定义的
只能存在一个
程序都是从main开始所以也不能被调用,所以根本没必要声明main函数。追问

删掉还不行:
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL: MAIN
MODULE: 流水灯(位移).obj (流水灯(位移))
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?MAIN?流水灯(位移)

追答

追问

追答

果然有多个文件


只留下text2.c其他全部删除

remove file删除其他的


只留下text2.c

如果要其他功能一般是.H .C成对出现

多个C里面还有多个main函数当然不行


最后再吧extern main;注释掉


编译器是keil4的

参考技术A 亲,main关键字不能变成再定义变量的,extern main是不对的,定义的外部变量main用其他变量表示吧追问

求大神,详细些

参考技术B P1=T,T<<=1,T=T+1,dlay(0.1)//这里的逗号都应该变成分号追问

不行

追答

void dlay(float k)

  

unsigned int h,j;

        h =k*100;

while(h--)

for(j=8505;j>0;j--)  ;

     上面的float变成int型的变量就可以了,你的编译器不支持浮点运算,记得把extern main;删掉哦,把我上面发的文件按说明拷进keil中就能支持浮点运算了

追问

还不行:

追答

#include
void dlay(float k)

unsigned int h,j;
h =k*100;
while(h--)

for(j=8505;j>0;j--) ;

void main()

int T,i; T=0xfe;
while(1)
for(i=8;i>0;i--)
P1=T,T<<=1,T=T+1,dlay(0.1) ;

这是你的程序在我电脑上运行正常,看你还有一个c文件,另一个c里面不能再有main函数了

以上是关于keil中can't open reg51.h是啥原因的主要内容,如果未能解决你的问题,请参考以下文章

keil c51 printf 问题

keil4 打开工程时出现 can't read project file 怎么办呢 单片机

关于keil51单片机头文件的详细解释-51单片机头文件reg51.h详解

怎么使用keil51库函数∼请举例说明

Error: Can\'t open display

Error: Can't open display