zealot 发表于 2023-9-11 16:29:33

奇妙的不知道算不算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;这些不会错的.

有大佬知道这是啥回事么?说一下,省的下次中招.

LAOXU 发表于 2023-9-26 04:01:51

这部分用汇编改写的吧?

明显有错。

LAOXU 发表于 2023-9-26 04:02:45

去掉       org      7adh

即可
页: [1]
查看完整版本: 奇妙的不知道算不算BUG现象 @stc8h1k08