本帖最后由 冷漠 于 2009-8-9 22:13 编辑
明白了。这是分2步实现的,你才做了第一步:
1、编译main.c,和 e.c 。是各自编译,编译后只能产生汇编文件,如果不经A51汇编不会产生OBJ文件,所以连接通不过。
#pragema SRC不会产生.obj文件,它只能产生汇编文件。
这样你的main.c编译后产生main.src文件,e.c编译后产生comm.a51文件。
2、第二部你没做。把前2个C文件从项目中remove,项目中加入2个汇编文件main.src和comm.a51,还有SATARTUP.a51,共同汇编、链接,才是最终结果。
因为汇编后会得到3个OBJ文件:main.obj,comm.obj,startup.obj,连接器将其连接,这时PUBLI ,EXTRN,才起作用。
还有可以通过设定,使得上面2步化为 1 步,C编译后自动汇编**.src, ** .a51文件,然后自动连接。并不好玩。因为你的汇编文件中途还要添加东西,不能全自动。所以还是一步一步来好。概念清楚。
可以看一下C51 编译器,A51宏汇编器,和BL51链接定位器教材。推荐电子工业出版社《Keil Cx51 V7.0单片机高级语言编程与uVision2应用实践》徐爱钧,彭秀华编著 |