| 
 
| 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
 }
 
 
 
 | 
 |