您尚未登录。

#1 Re: 8051/STC8/AT89C51/N76E003 » 新唐 N76E003 8051 1T 单片机入坑记录 » 2020-01-18 21:15:16

skcks 说:

乐趣在于折腾,sdcc编译问题已解决。
原因是sdcc编译|=运算的时候会编译出3条指令,而对于某些受写保护SFR,打开TA保护后只有4个时钟周期是可以写的。
解决方法是通过peep-file来做指令替换,测试pwm例子已正常。集成sdcc&makefile

keil 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

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn