BLHeli_S 代码之 A.inc 分析
指令含义及作用
$NOMOD51
使编译器不使能预定义的8051符号,避免产生重复定义的错误
示例代码1
IF BESCNO == XP_3A_Main
MODE EQU 0 ; Choose mode. Set to 0 for main motor
$include (XP_3A.inc) ; Select XP 3A pinout
ENDIF
EQU
做等价替换使用、类似 typedefIF ENDIF
类似于C语言的预编译$include (XP_3A.inc)
类似于#include "XP_3A.h"
示例代码2
DSEG AT 20h
ISEG AT 080h
CSEG AT 1A00h
Bit_Access: DS 1 ; 肯定是在这个地址。位可访问地址的变量(用于非中断例程)
Bit_Access_Int: DS 1 ; 位可访问地址的变量(用于中断); Table definitions 表定义
GOV_GAIN_TABLE: DB 02h, 03h, 04h, 06h, 08h, 0Ch, 10h, 18h, 20h, 30h, 40h, 60h, 80h
STARTUP_POWER_TABLE: DB 04h, 06h, 08h, 0Ch, 10h, 18h, 20h, 30h, 40h, 60h, 80h, 0A0h, 0C0h
PWM_DITHER_TABLE: DB 00h, 03h, 07h, 0Fh, 1Fh
DSEG
内部绝对数据段ISEG
内部间接寻址数据段CSEG
绝对代码段DS
用于在存储器中保留一定数量的字节单元。保留存储单元空间是为了以后存放数据使用。保留的字节单元数由表达式的值决定。DB
用于定义字节数据,可以定义一个字节也可以定义多个字节。定义多个字节时,两两之间用逗号隔开,定义时多个字节是在存储器中连续存放的。
绝对段选择指令
- DSEG - - - - - - 内部绝对数据段
- ISEG - - - - - - 内部间接寻址数据段
- CSEG - - - - - - 绝对代码段
- XSEG - - - - - - 外部绝对数据段
- BSEG - - - - - 绝对位寻址数据段
格式:
CSEG [AT 绝对地址表达式]
DSEG [AT 绝对地址表达式]
XSEG [AT 绝对地址表达式]
ISEG [AT 绝对地址表达式]
BSEG [AT 绝对地址表达式]
括号内是可选项,用来指定当前绝对段的基地址。
CSEG AT 0000H
AJMP MAIN
涉及汇编指令
参考链接
汇编使用
CSEG AT
MACRO ENDM
伪指令-ORG、DB、DW、DS、EQU、DATA、XDATA、bit、END
伪指令-ORG、END、EQU、DB、DW、DS、BIT
汇编语言(伪指令)
汇编语言—伪指令详解
代码理解
$+4的意义