BLHeli_S 代码分析---BLHeli.asm头部声明文件分析

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 做等价替换使用、类似 typedef
  • IF 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的意义

你可能感兴趣的:(BLHeli,MCU,汇编,ESC)