KEIL的默认优化等级8级,我要缩小size,改为9级。代码size缩小了,但时软件复位无效了。
解决方法如下:
1,使用汇编替代C。
2,把出问题的C文件的优化等级改回以前的优化等级。
void SW_Reset(void)
{
/*
there will be a problem the reset function have no effect
if KEIL use 9 level optimization.
solution 1:use asm
solution 2:set common.c 8 level(default) optimization.
*/
#if 0
TA = 0xAA;
TA = 0x55;
AUXR1 &= 0x7F;
clr_EA;
set_SWRST;
#else
#pragma asm
ANL AUXR1,#01111111b ;software reset flag clear
CLR EA
MOV TA,#0Aah
MOV TA,#55h
ORL CHPCON,#10000000b ;software reset
#pragma endasm
#endif
}
|