KEIL汇编包含REG51.INC提示重复定义
- 原创
- |
- 浏览:2994
- |
- 更新:
- |
- 标签:明星
使用Keil 进行汇编语言编程时,在加入REG51.INC后会出现error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL,这是由于编译器默认是定义了特殊寄存器的,而REG51.INC又对特殊寄存器进行了定义,导致重复定义。解决办法有两种,具体见下面操作。
方法/步骤
打开蕉何Keil,新建一个汇编语言文件,在其中输入汇编代码,同时在最开头加入
$INCLUDE (REG51.INC)
即导入51寄存斤虚净器的头文件。
将加入了$INCLUDE (REG51.INC)的汇编源文件进行编译,可以看到,编译结果窗口输出了一连串的error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL
而每个ERROR都指向REG51.INC
出现这种问题的原因在于REG51.INC对特殊寄存器进行了定义,而编译器败沃默认又对特殊寄存器进行了定义。解决办法就是取消默认的特殊寄存器定义。
方法1:可以选择汇编源文件,在弹出的列表中选择“Options for FIle:xxx”,其中xxx是具体的文件名。
在弹出的对话框中,选择A51页,找到Special Function Registers,将它下面的Define 8051 SFR Names取消勾选。
- 相关内容未经授权抓取自百度经验
对取消Define 8051 SFR Names勾选的工程进行重新编译,可以看到令人讨厌的error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL没有了。
另一种方法不需要取消Define 8051 SFR Names,只要在汇编源文件的开头增加一个:$NOMOD51即不适用MOD51。
END
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部













