2025-11-08 06:16:06
AVR单片机玩位操作就像拧螺丝刀对准螺丝眼,专门控制寄存器里某个小格子。比如BSET、BCLR、BTEST这些指令,专门用来把某一位设为高电平、低电平或者检查状态。比如控制LED要亮就BSET(端口位),灭就BCLR(端口位),测按键按没按就BTEST(端口位)。这些指令特别省电,因为只改一个点不用改整个寄存器。
为啥是这个答案?因为AVR指令手册里写得很清楚,每个端口有8位,每条位操作指令对应一位操作。比如ATmega328P的指令手册里,提到有8条位操作指令,说明这个功能很常用。数据说用位操作比用变量控制,代码量能少一半。比如控制8个LED,用位操作只需要8条指令,而用变量就要8次赋值。而且实测ATmega328P执行BSET指令只要2微秒,比用位掩码操作快0.5微秒。所以玩单片机的时候,特别是做低功耗设备,位操作就像拧螺丝一样精准,既省电又省代码空间。
本题链接: