热点:

    KEIL汇编重复定义问题解析

      [   原创  ]   作者:
    收藏文章 暂无评论

    Keil中进行汇编编程时,若包含REG51.INC文件,常会遇到error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL的错误。这是因为Keil编译器默认已内置了特殊功能寄存器的定义,而REG51.INC文件再次对这些寄存器进行声明,造成符号重复定义。为解决该问题,可采取两种方法:一是移除程序中对REG51.INC的引用,直接使用编译器自带的寄存器定义;二是通过编译器设置禁用默认的头文件包含,确保仅使用外部引入的定义,从而避免冲突。

    1、 启动Keil软件,创建新的汇编文件,输入相应代码,并在文件起始位置添加必要内容。

    2、 引入51寄存器头文件。

    3、 在汇编源文件中加入\$INCLUDE (REG51.INC)后进行编译,编译结果显示大量错误信息,提示error A10: 尝试定义已存在的符号。这通常是因为寄存器符号已被先前的包含文件或代码段定义,重复包含导致符号重定义,从而引发编译失败。

    4、 每个错误均与REG51.INC文件相关联。

    5、 该问题源于REG51.INC文件已定义特殊寄存器,而编译器默认也进行了相同定义,导致重复。解决方法是关闭编译器对特殊寄存器的默认定义,避免冲突,确保程序正常编译与运行。

    6、 方法一:右键点击汇编源文件,在弹出菜单中选择Options for File: xxx,其中xxx为实际文件名称,进行相应设置。

    7、 在弹出的对话框里,选择A51页,进入特殊功能寄存器选项,取消勾选其下方的定义8051特殊功能寄存器名称项即可完成设置。

    8、 取消勾选Define 8051 SFR Names后,对工程重新编译,原先令人困扰的A10: 尝试定义已存在的符号错误便不再出现,编译过程更加顺利,有效避免了符号重复定义的问题,提升了开发效率,使项目构建更为稳定可靠。

    9、 只需在汇编源文件开头添加 \$NOMOD51,即可避免使用 MOD51,无需取消定义 8051 特殊功能寄存器名称,实现更简便的配置方式。

    soft.zol.com.cn true https://soft.zol.com.cn/1119/11194613.html report 1475 在Keil中进行汇编编程时,若包含REG51.INC文件,常会遇到error A10: ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL的错误。这是因为Keil编译器默认已内置了特殊功能寄存器的定义,而REG51.INC文件再次对这些寄存器进行声明,造成符号重复定义。为解决该问题,可采取两种...
    不喜欢(0) 点个赞(0)
    随时随地资讯查报价 就上ZOL手机客户端,点击或扫描二维码下载
    立即下载

    轻松汇编 2.5

    更新时间:2011年12月27日

    用户评分:0 | 0人点评

    软件类型:试用软件

    软件语言:简体中文

    轻松汇编 2.5
    • 更新时间:2011年12月27日
    • 软件大小:1MB
    • 软件分类:编程工具
    • 语言种类:简体中文
    • 软件评级:0 人点评