多语言展示
当前在线:1168今日阅读:61今日分享:18

KEIL汇编包含REG51.INC提示重复定义

使用Keil 进行汇编语言编程时,在加入REG51.INC后会出现error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL,这是由于编译器默认是定义了特殊寄存器的,而REG51.INC又对特殊寄存器进行了定义,导致重复定义。解决办法有两种,具体见下面操作。
工具/原料

Keil 4

方法/步骤
1

打开Keil,新建一个汇编语言文件,在其中输入汇编代码,同时在最开头加入$INCLUDE (REG51.INC)即导入51寄存器的头文件。

2

将加入了$INCLUDE (REG51.INC)的汇编源文件进行编译,可以看到,编译结果窗口输出了一连串的error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL而每个ERROR都指向REG51.INC

3

出现这种问题的原因在于REG51.INC对特殊寄存器进行了定义,而编译器默认又对特殊寄存器进行了定义。解决办法就是取消默认的特殊寄存器定义。方法1:可以选择汇编源文件,在弹出的列表中选择“Options for FIle:xxx”,其中xxx是具体的文件名。

5

对取消Define 8051 SFR Names勾选的工程进行重新编译,可以看到令人讨厌的error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL没有了。

6

另一种方法不需要取消Define 8051 SFR Names,只要在汇编源文件的开头增加一个:$NOMOD51即不适用MOD51。

注意事项

$NOMOD51应放到汇编源文件的开头

推荐信息