使用Keil 将汇编嵌入C语言中进行编译 出现: file has been changed outside the editor, reload?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Keil 将汇编嵌入C语言中进行编译 出现: file has been changed outside the editor, reload?相关的知识,希望对你有一定的参考价值。
请问要如何才能编译?
#pragma asm
MOV P0,#0FFH
#pragma endasm
我已在 Project 窗口中包含汇编代码的 C 文件上右键,选择“Options for ...”,点击右边的“Generate Assembler SRC File”和“Assemble SRC File”,使检查框由灰色变成黑色(有效)状态;
根据选择的编译模式,把相应的库文件(如 Small 模式时,是 Keil\C51\Lib\C51S.Lib)加入工程中, 该文件必须作为工程的最后文件
内容是:是否重新载入有外部编辑器编辑过的文件?
这个是你当前打开的文件,在关闭keil后,通过其他访问形式(记事本等打开方式)修改后,,第2次用keil打开后,就会有这样的提示(这个是keil对文件的一种保护性提示选择操作),,,你选择“是”的话,就载入你已经有外部编辑器修改过的文件,选择“否”的话,就会载入上一个在关闭keil前的文件。
这个提示与你的程序编译无关。 参考技术A file has been changed outside the editor, reload?
这句话的意思是你的代码在keil之外的程序里改了,(比如你用记事本同时打开代码并修改,就会出现这种情况)。点确定就好了本回答被提问者和网友采纳
使用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) ;
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的
求大神,详细些
参考技术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 将汇编嵌入C语言中进行编译 出现: file has been changed outside the editor, reload?的主要内容,如果未能解决你的问题,请参考以下文章
用keil软体如何将汇编与C语言结合起来一起编写微控制器的程式
汇编与C51语言如何在Keil混合起来使用?只要教会我调用一个延时函数就可以了。