我正在使用一些程序集,我想知道以下代码的含义,特别是双carot(<<<<<<<<
.EQU LED0 , 0
.EQU LED1 , 1
.EQU LED2 , 2
.EQU LED3 , 3
ldi R16, (1<<LED0 | 1<<LED1 | 1<<LED2 | 1<<LED3)
这种变化值是否有所改变?我有点困惑。 注意......这适用于8位Atmel指令集。
答案 0 :(得分:0)
看起来它正在创建4个常量(LED0
到LED3
),其数值对应于0
到3
。
然后使用这些值(可能是C预处理器)在编译时构建另一个常量:1<<0 | 1<<1 | 1<<2 | 1<<3
结果值为二进制1111
或十进制15
。
您可以使用常量小数表达式15
替换整个括号表达式。