使用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应放到汇编源文件的开头
上一篇:梦幻西游好友推荐系统攻略技巧?