- 打卡等级:以坛为家II
- 打卡总天数:513
- 最近打卡:2025-05-01 04:31:49
荣誉版主
- 积分
- 986
|
虽然C251编译器推出的时间有20多年了,因为8xC251核的mcu在2019年之前并没有大批量生产和使用,也造成C251编译器不如C51编译器那么完善。而且C251编译器在2018年后停止更新。
虽然C251编译器有诸多缺点,但是在没有第二种选择的情况下,C251编译器在相当长的时间内是STC32的唯一的选择。
为了避免在使用C251编译器出现BUG,还要让编译结果在STC32芯片上高效运行,所以优化C代码,是必做的功课。
之一:bit篇
1,对端口取反:
P54 = ~P54; //编译结果----->
0xFF09B5 B2CC CPL P54(0xC8.4)
如果: P54 = !P54; //编译结果---->
1653:
0xFF09B5 20CC03 JB P54(0xC8.4),C:0x09BB
0xFF09B8 D3 SETB C
0xFF09B9 8001 SJMP C:0x09BC
0xFF09BB C3 CLR C
0xFF09BC 92CC MOV P54(0xC8.4),C
2, if(b_busy) //编译结果----->
0xFF0A5C 300199 JNB b_busy(0x20.1),C:0x09F8
如果:if(b_busy == 1) //编译结果----->
0xFF0911 A200 MOV C,b_busy(0x20.1)
0xFF0913 E4 CLR A
0xFF0914 33 RLC A
0xFF0915 B40128 CJNE A,#0x01,C:0x0940
3, if(!b_busy) //编译结果---->
1701: {
0xFF0A02 200028 JB b_busy(0x20.1),C:0x0A2D
如果: if(b_busy == 0) //编译结果---->
1701: {
0xFF0911 A200 MOV C,b_busy(0x20.1)
0xFF0913 E4 CLR A
0xFF0914 33 RLC A
0xFF0915 7828 JNE C:0x093F
4,使用_testbit_():
if (!_testbit_(RI)) //编译结果---->
0xFF0A2D 10989D JBC RI(0x98.0),C:0x09CD
|
|