打印
[PIC®/AVR®/dsPIC®产品]

将一个汇编文件 分成 几个汇编文件 编译提示变量没定义

[复制链接]
568|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhenykun|  楼主 | 2023-1-7 22:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
将一个汇编文件 分成 几个汇编文件 编译提示变量没定义

使用特权

评论回复
沙发
zhenykun|  楼主 | 2023-1-7 22:51 | 只看该作者
用的是PIC16F684,因为之前用C,发现FLASH太小,2K的容量,C语言折腾不起,改用汇编语言,之前全部代码写在一个文件里面,编译通过,测试功能正常。为了管理方便,就把里面的中断部分的代码单独放在一个文件(没作任何改动,单纯的剪切过去),编译时就提示中断里面的变量没定义。

使用特权

评论回复
板凳
zhenykun|  楼主 | 2023-1-7 22:54 | 只看该作者
以前用的是AVR的汇编,都是这样操作,没任何问题,不知这个与AVR有什么区别,麻烦各位告知一下,是不是我漏了什么?

使用特权

评论回复
地板
zhenykun|  楼主 | 2023-1-7 22:55 | 只看该作者
如果能提供一个汇编的例程(包含几个汇编文件)参考一下就更好了,先谢了

使用特权

评论回复
5
xxrs| | 2023-1-7 22:57 | 只看该作者
汇编和C语言其实很相近,变量在不同文件共享,肯定是在一个文件定义,在另一个文件声明外部变量。

使用特权

评论回复
6
spark周| | 2023-1-7 22:59 | 只看该作者
至于具体细节如何,就要自己查阅编译器手册了,这个手册通常在开发环境的帮助里就有。

使用特权

评论回复
7
zhenykun|  楼主 | 2023-1-7 23:01 | 只看该作者
让别人给你提供可用的工程,这个最好,但是用pic的相对很少,可能性不大。

使用特权

评论回复
8
llljh| | 2023-1-7 23:03 | 只看该作者
我平常的做法,是把相关的变量定义在  ***.inc头文件,在主汇编文件里的开头 #include  " XXX.inc  "  文件,然后在主汇编文件未尾  ,把其它的功能模块汇编文件包含进来

使用特权

评论回复
9
dingy| | 2023-1-7 23:03 | 只看该作者
#include  " 01.asm  "#include  " 0X.asm  "

使用特权

评论回复
10
heweibig| | 2023-1-7 23:05 | 只看该作者
除了主文件,是不是需要对其它的模块文件声明什么的?

使用特权

评论回复
11
tpgf| | 2023-2-5 09:59 | 只看该作者
这样做的话 就需要一个头文件来作为中间的纽带

使用特权

评论回复
12
八层楼| | 2023-2-5 10:09 | 只看该作者
如果仅仅是简单的拆分肯定是不行的啊 因为这几个文件之间有互相的调用  那就有变量是不能互相识别的

使用特权

评论回复
13
观海| | 2023-2-5 10:18 | 只看该作者
要把这些文件共用的变量定义到头文件中进行调用

使用特权

评论回复
14
guanjiaer| | 2023-2-5 11:08 | 只看该作者
不是很了解汇编文件 是不是也和c那样需要有定义全局变量的文件啊

使用特权

评论回复
15
heimaojingzhang| | 2023-2-5 11:16 | 只看该作者
汇编语言文件的文件结构和c语言文件的文件结构是一样的吗

使用特权

评论回复
16
keaibukelian| | 2023-2-5 11:23 | 只看该作者
楼主需要把这些报错的变量定义为全局变量

使用特权

评论回复
17
lcczg| | 2023-2-8 10:25 | 只看该作者
本帖最后由 lcczg 于 2023-2-8 10:38 编辑

主程序中定义成全局变量,例如
        GLOBAL  xxx
中断程序中外部访问用
        EXTERN XXX

或者如楼上所说定义到头文件里操作。

供参考

https://ww1.microchip.com/downloads/en/DeviceDoc/asm21500.zip

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

868

主题

11535

帖子

3

粉丝