子函数重复定义。
同一个子函数有两个函数体{}。
Functionalreadyhasabody指的是函数已经被定义过了。
出现这种错误的原因主要是你定义了相同函数名字的函数,比方说在MAIN.C里面定义了delay()函数,然后在APP.C里面又定义一个delay()函数,则会出现这种警告或错误,将同名函数修改名字即可。
_delay这个函数重定义了,说明这个函数名定义了两遍。检查一下,如果没有的不要把函数体(函数定义)放在头文件里,头文件里只放声明,定义放.c文件。
Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。
如果使用C语言编程,那么Keil几乎就是不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。
与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。
有时候我们打开别人的KEIL程序时,会经常碰到can'texecute'c:\keil\c51\bin\c51.exe'的错误
解决对策:
出错原因:被打开的KEIL程序的编译器安装在C盘,即c:\keil的路径下。而使用者的KEIL装在不同路径。
针对这样的原因,就有两种解决方法:
1、自己重建工程,把要打开的程序的文件拷贝过去,编译即可以通过,但这样做比较费事。
2、打开出错的程序,选择菜单:Project-Compoonents,EnvironmentandBooks
选择Folders/Extensions,并把“UsesettingsfromTOOLS.INI”前面的勾打上即可.