使用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)加入工程中, 该文件必须作为工程的最后文件

file has been changed outside the editor, reload?
内容是:是否重新载入有外部编辑器编辑过的文件?
这个是你当前打开的文件,在关闭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) ;

删除掉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 将汇编嵌入C语言中进行编译 出现: file has been changed outside the editor, reload?的主要内容,如果未能解决你的问题,请参考以下文章

KEIL C51程序中如何嵌入汇编

用keil软体如何将汇编与C语言结合起来一起编写微控制器的程式

汇编与C51语言如何在Keil混合起来使用?只要教会我调用一个延时函数就可以了。

keil4 下 c语言和汇编语言。混合编程的方法。

如何在keil调试中黄色箭头不出现汇编窗口而是停在main主函数上

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