关于32G12K128和51老程序兼容的问题?
昨天测试了STC32G12K128芯片,把老的STC8C2K60S2芯片的程序灌进去会出现莫名其妙的死机,查到最后发现是一系列的延时程序出现了死机,查询下载工具上给出的延时程序,和51的的确不同,但因为老程序是用汇编写的,要全部改成是C251程序工作量太大,项目跟进没有时间,请问是否有办法简单处理。给出出错的几段程序。RX8025_WAIT: PUSH 0
MOV 0,#12
DJNZ 0,$
POP 0
RET
;实际时间为199.155MS
Wait_200MS: PUSH 07
PUSH 06
PUSH 05
MOV R7,#12
MOV R6,#57
MOV R5,#120
WAIT_200MS_AGAIN:
DJNZ R5,$
DJNZ R6,WAIT_200MS_AGAIN
DJNZ R7,WAIT_200MS_AGAIN
POP 05
POP 06
POP 07
RET
WAIT_1US: PUSH 07
MOV R7,#1
LJMP WAIT_US
WAIT_4US: PUSH 07
MOV R7,#4
LJMP WAIT_US
WAIT_8US: PUSH 07
MOV R7,#8
LJMP WAIT_US
WAIT_14US: PUSH 07
MOV R7,#14
LJMP WAIT_US
WAIT_16US: PUSH 07
MOV R7,#16
LJMP WAIT_US
WAIT_30US: PUSH 07
MOV R7,#30
LJMP WAIT_US
WAIT_40US: PUSH 07
MOV R7,#40
LJMP WAIT_US
WAIT_60US: PUSH 07
MOV R7,#60
LJMP WAIT_US
WAIT_100US: PUSH 07
MOV R7,#100
LJMP WAIT_US
WAIT_240US: PUSH 07
MOV R7,#240
LJMP WAIT_US
WAIT_480US: LCALL WAIT_240US
LCALL WAIT_240US
RET
;1US等待
WAIT_US: NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R7,WAIT_US
POP 07
RET
DIS_WAIT: LCALL WAIT_1MS
RET
;实际时间为1151US
WAIT_1MS: PUSH 07
PUSH 06
MOV R7,#20H
D0_1MS: MOV R6,#0FH
DJNZ R6,$
DJNZ R7,D0_1MS
POP 06
POP 07
RET
;实际时间为
WAIT_20MS: PUSH 07
PUSH 06
MOV R7,#20
D0_20MS: MOV R6,#248
DJNZ R6,$
DJNZ R7,D0_20MS
POP 06
POP 07
;实际时间为76US
WAIT_76US: PUSH 07
MOV R7,#0
DJNZ R7,$
POP 07
RET
;实际时间为1151US
WAIT_1600US: PUSH 07
PUSH 06
MOV R7,#20
D0_1600US: MOV R6,#0
DJNZ R6,$
DJNZ R7,D0_1600US
POP 06
POP 07
RET
WAIT: PUSH 7
MOV R7,#40
WAIT_AGAIN:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R7,WAIT_AGAIN
POP 7
RET
使用ISP软件可生成软件延时的ASM代码
最新版ISP软件:
https://www.stcaimcu.com/data/download/Tools/AiCube-ISP-v6.96A.zip
这些延时程序不会死机,估计是其他方面的原因
页:
[1]