打印
[MCU]

宏定义

[复制链接]
543|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
spark周|  楼主 | 2019-9-24 21:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AD, ADC, CD, dc, TE
汇编手册的宏定义很简单,而且后面的参数 P1 P2 啊这些都有用到,
add3 .macro P1, P2, P3, ADDRP
MOV ACC, P1
ADD ACC, P2
ADD ACC, P3
ADD ACC, ADDRP
.endm
为什么下面的宏定义里面就没有任何关于m,n这些参数的应用。
ADCDRV_8ch_INIT    .macro m,n,p,q,r,s,t,u
;=============================
_ADCDRV_8ch_RltPtrA    .usect "ADCDRV_8ch_Section",2,1,1    ; output terminal 1
_ADCDRV_8ch_RltPtrB    .usect "ADCDRV_8ch_Section",2,1,1    ; output terminal 2
_ADCDRV_8ch_RltPtrC    .usect "ADCDRV_8ch_Section",2,1,1    ; output terminal 3
_ADCDRV_8ch_RltPtrD    .usect "ADCDRV_8ch_Section",2,1,1    ; output terminal 4
_ADCDRV_8ch_RltPtrE    .usect "ADCDRV_8ch_Section",2,1,1    ; output terminal 5
_ADCDRV_8ch_RltPtrF    .usect "ADCDRV_8ch_Section",2,1,1    ; output terminal 6
_ADCDRV_8ch_RltPtrG    .usect "ADCDRV_8ch_Section",2,1,1    ; output terminal 7
_ADCDRV_8ch_RltPtrH    .usect "ADCDRV_8ch_Section",2,1,1    ; output terminal 8

; publish Terminal Pointers for access from the C environment
        .def     _ADCDRV_8ch_RltPtrA
        .def    _ADCDRV_8ch_RltPtrB
        .def    _ADCDRV_8ch_RltPtrC
        .def    _ADCDRV_8ch_RltPtrD
        .def     _ADCDRV_8ch_RltPtrE
        .def    _ADCDRV_8ch_RltPtrF
        .def    _ADCDRV_8ch_RltPtrG
        .def    _ADCDRV_8ch_RltPtrH

        MOVL    XAR2, #ZeroNet                        ; "ZeroNet" is address to a location initialised to 0
        MOVW    DP, #_ADCDRV_8ch_RltPtrA
        MOVL    @_ADCDRV_8ch_RltPtrA, XAR2            ; zero output terminal pointer
        MOVL    @_ADCDRV_8ch_RltPtrB, XAR2            ; zero output terminal pointer
        MOVL    @_ADCDRV_8ch_RltPtrC, XAR2            ; zero output terminal pointer
        MOVL    @_ADCDRV_8ch_RltPtrD, XAR2            ; zero output terminal pointer
        MOVL    @_ADCDRV_8ch_RltPtrE, XAR2            ; zero output terminal pointer
        MOVL    @_ADCDRV_8ch_RltPtrF, XAR2            ; zero output terminal pointer
        MOVL    @_ADCDRV_8ch_RltPtrG, XAR2            ; zero output terminal pointer
        MOVL    @_ADCDRV_8ch_RltPtrH, XAR2            ; zero output terminal pointer        
        .endm

使用特权

评论回复

相关帖子

沙发
jiaxw| | 2019-9-24 21:39 | 只看该作者

_ADCDRV_8ch_RltPtrA,这些是定义地址的,它可以在CMD文件中找到,或者用#pragma 转向
上面是定义指令的,

使用特权

评论回复
板凳
liliang9554| | 2019-9-24 21:42 | 只看该作者
有没有可能这些变量在其它地方使用过,又或者这个程序经过许多人改过,原来使用了,现在没有这些变量。

使用特权

评论回复
地板
spark周|  楼主 | 2019-9-24 21:48 | 只看该作者
呵呵,想法很多啊大家

使用特权

评论回复
5
kkzz| | 2019-10-2 16:00 | 只看该作者
使用简单宏定义可用宏代替一个在程序中经常使用的常量  

使用特权

评论回复
6
hudi008| | 2019-10-2 16:01 | 只看该作者
宏定义是高级语言编译器提供的常用语法  

使用特权

评论回复
7
lzmm| | 2019-10-2 16:01 | 只看该作者
主要目的是为程序员在编程时提供一定的方便  

使用特权

评论回复
8
minzisc| | 2019-10-2 16:01 | 只看该作者
宏定义是比较常用的预处理指令  

使用特权

评论回复
9
selongli| | 2019-10-2 16:02 | 只看该作者
#define 是预处理期处理的单元实体  

使用特权

评论回复
10
fentianyou| | 2019-10-2 16:02 | 只看该作者
宏定义是利用#define命令,用一个指定的标识代替一个字符串。  

使用特权

评论回复
11
xiaoyaodz| | 2019-10-2 16:02 | 只看该作者
宏定义在函数内部和定义在函数外部的效果是一样的。  

使用特权

评论回复
12
febgxu| | 2019-10-2 16:03 | 只看该作者
宏定义在编译期间即会使用并替换  

使用特权

评论回复
13
sdlls| | 2019-10-2 16:03 | 只看该作者
宏定义的只是一段字符   

使用特权

评论回复
14
pixhw| | 2019-10-2 16:04 | 只看该作者
在运行中是没有宏定义的概念的。  

使用特权

评论回复
15
febgxu| | 2019-10-2 16:04 | 只看该作者
全局变量要到运行时才可以。   

使用特权

评论回复
16
kkzz| | 2019-10-2 16:04 | 只看该作者
在将该常量改变时,不用对整个程序进行修改,只修改宏定义的字符串即可  

使用特权

评论回复
17
xiaoyaodz| | 2019-10-2 16:04 | 只看该作者
在C中,常用预处理语句#define来代替一个函数定义。  

使用特权

评论回复
18
hudi008| | 2019-10-2 16:04 | 只看该作者
#define是C语言中提供的宏定义命令  

使用特权

评论回复
19
fentianyou| | 2019-10-2 16:04 | 只看该作者
宏定义是在预编译时是就决定的,在程序运行时是不能改的  

使用特权

评论回复
20
lzmm| | 2019-10-2 16:04 | 只看该作者
能在一定程度上提高程序的运行效率  

使用特权

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

本版积分规则

821

主题

10121

帖子

4

粉丝