- 打卡等级:以坛为家II
- 打卡总天数:513
- 最近打卡:2025-05-01 04:31:49
荣誉版主
- 积分
- 986
|
发表于 2024-7-11 13:16:46
|
显示全部楼层
是C251编译器的bug, 与器件无关!!!!!
y += fontsize / 8 ;
286:
0xFF3E96 7E240008 MOV WR4,#Setup(0x0008)
0xFF3E9A 120000 LCALL C?STARTUP(C:0x0000) --->直接重启
0xFF3E9D 2CF7 ADD R15,R7
改为:
y += fontsize >> 3 ;
286:
0xFF3E96 7CBC MOV R11,R12
0xFF3E98 C4 SWAP A
0xFF3E99 23 RL A
0xFF3E9A 541F ANL A,#0x1F
0xFF3E9C 2CFB ADD R15,R11
一切正常!!!
去除REMOVEUNUSED:
y += fontsize / 8 ;
286:
0xFF47F6 7E240008 MOV WR4,#Setup(0x0008)
0xFF47FA 123FBD LCALL C?SIDIV(C:0x3FBD) --->直接调用除法函数
0xFF47FD 2CF7 ADD R15,R7
C?SIDIV:
0xFF3FBD C2D5 CLR F0(0xD0.5)
0xFF3FBF 7CB4 MOV R11,R4
0xFF3FC1 30E708 JNB 0xE0.7,C:0x3FCC
0xFF3FC4 B2D5 CPL F0(0xD0.5)
0xFF3FC6 6E24FFFF XRL WR4,#0xFFFF
0xFF3FCA 0B24 INC WR4,#0x01
0xFF3FCC 7CB6 MOV R11,R6
0xFF3FCE 30E712 JNB 0xE0.7,C:0x3FE3
0xFF3FD1 B2D5 CPL F0(0xD0.5)
0xFF3FD3 6E34FFFF XRL WR6,#0xFFFF
0xFF3FD7 0B34 INC WR6,#0x01
0xFF3FD9 8D32 DIV WR6,WR4
0xFF3FDB 6E24FFFF XRL WR4,#0xFFFF
0xFF3FDF 0B24 INC WR4,#0x01
0xFF3FE1 8002 SJMP C:0x3FE5
0xFF3FE3 8D32 DIV WR6,WR4
0xFF3FE5 30D506 JNB F0(0xD0.5),C:0x3FEE
0xFF3FE8 6E34FFFF XRL WR6,#0xFFFF
0xFF3FEC 0B34 INC WR6,#0x01
0xFF3FEE 22 RET
去除REMOVEUNUSED后,代码量增加,运行效率低。
还是要使用 REMOVEUNUSED,在代码中少用除法:
y += fontsize >> 3 ;
|
1
喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
-
+10
楼主威武~
|