页次: 1
乐趣在于折腾,sdcc编译问题已解决。
原因是sdcc编译|=运算的时候会编译出3条指令,而对于某些受写保护SFR,打开TA保护后只有4个时钟周期是可以写的。
解决方法是通过peep-file来做指令替换,测试pwm例子已正常。集成sdcc&makefilekeil c51编译结果
mov TA, #0xAA ; TA = 0xAA mov TA, #0x55 ; TA = 0x55 {'U'} orl SFRS, #0x01 ; SFRS |= 0x01
未修正前SDCC编译结果
mov TA, #0xAA ; TA = 0xAA mov TA, #0x55 ; TA = 0x55 {'U'} mov R6, SFRS ; R6 = SFRS orl 0x06, #0x01 ; 0x06 |= 0x01 mov SFRS, R6 ; SFRS = R6
在Github上看到了大佬的解决方案被引用了!上面的另一个解决方案感觉也不错。P.s:关闭POR有种MSP430关闭看门狗的既视感wkaster/N76E003: Nuvoton N76E003 with SDCC
页次: 1