奇妙的不知道算不算BUG现象 @stc8h1k08
我有个程序原先是stc8G1k08_tssop16/tssop20的,使用了PCA以及eep,然后,转芯片转到stc8h1k08_tssop20,然后当然编译不通过,
捣鼓了几天动起来了,
终于发现是eep操作的时候,把 EAXFR 关掉了,(因为不熟悉XFR,以为打开EAXFR会导致正常movx失效)
修正之,pwm部分正确运行了.
然后,既然都重读代码了,做完全套,看了一下eep操作相关,
就发现例程中IAP操作之后有2个nop(第二个是我手痒加上去的).
在例程中是只有一个nop的:
stc8H1k08 eep基本操作_C
IAP_TRIG = 0x5a; //写触发命令(0x5a)
IAP_TRIG = 0xa5; //写触发命令(0xa5)
_nop_();
dat = IAP_DATA; //读IAP数据
程序必须要严谨,去掉一个nop,
原本的main.d52
mov adch,#0a5h ; 07a8 75 c6 a5 uF%
nop ; 07ab 00 .
;
org 7adh
;
inc r0 ; 07ad 08 .
djnz r1,X0794 ; 07ae d9 e4 Yd
去掉一个nop,变成:
mov adch,#0a5h ; 07a8 75 c6 a5 uF%
nop ; 07ab 00 .
inc r0 ; 07ac 08 .
djnz r1,X0794 ; 07ad d9 e5 Ye
好了,真好看,除了不动之外并没有什么大问题,啊哈哈哈.
然后排错三天,甚至上论坛提问,最后想起还原场景,又把nop加上,eep系统马上又动了,我艹.........
我记得pdf(stc8G)里面有说IAP操作后需要nop一下,以保证系统正常还是什么副作用什么的,
8H也有这现象么?而且现在是1nop都不行,要2nop, $#@#%^$&^$%&^%*(%
系统是跑内部24M, IAP_TPS=24;这些不会错的.
有大佬知道这是啥回事么?说一下,省的下次中招. 这部分用汇编改写的吧?
明显有错。
去掉 org 7adh
即可
页:
[1]