针对函数可能出错我一般是这样处理的
在程序中用一个文件如“SAVE_ROM”,在里面存放你还剩的空间,“SAVE_ROM”是个主函数里的子函数,系统每跑一圈都去调用它
;预留空间
SAVE_ROM:
//......................................;
ret
dw 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff
这里的“0xffff”是一字节,你可以用任何语句去代换它,你可以在里面写个函数,它好比是个保险丝,还完好无缺,如果你在烧录程序后发现那条语句不对,你可以屏蔽它,用一个NOP来代替,而NOP
好比是完全烧断的, 比如一条语句的烧录后是 0xfffe,而你就可以用0x0000去代替它,而不能够用oxffff去代替,只能够用0代替1,而不能够反之
我的主函数一般是调用子函数,烧录后如果感觉那个不正确,就用nop去代替它,在SAVE_ROM里用一个nop去代替ret,重新写你所不要的那个函数。
////////////////////////////////////////////////////////////////////////////////
针对子函数可能出错你可以这样
//******************************************************;AD大
ad_check_charge_30:
jmp @F
dw 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff
@@:
这是我的一个子函数,如果在@@后出现问题,我这样
// jmp @F
nop
CALL ad_check_charge_30_10
jmp ad_check_charge_90:
dw 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff; 0xffff 0xffff
@@:
“@@”后面的我就不执行了,只执行“ad_check_charge_30_10 ”而“ad_check_charge_30_10 这个函数就可以在SAVE_ROM:写了,只要屏蔽0xffff就可以了(不过要根据的语句条数去
屏蔽项运应的0xffff的条数)
////////////////////////////////////////////////////////////////////////////////
针对一些关键数据可能会更改的,如采样AD,我一般都是先定义变量,如:
比如b_ad_buf1后面客户需要更改,那我就在code_ROM里直接赋值就可以了(不过要把jmp code_ROM_90屏蔽掉)
//**************************************;数据初始化
init_data:
mov_ b_ad_buf1,#236 ;时间到充满 2.770v--#236
mov_ b_ad_buf2,#241 ;IO到充满 2.820v--#241
mov_ b_ad_buf3,#187 ;低压 2.195v--#187
mov_ b_ad_buf4,#19 ;过流 0.220v--#19
mov_ b_ad_buf5,#56 ;NTC低温 0.614v--56
mov_ b_ad_buf6,#52 ;NTC高温 0.652v--52
//**************************************;初始化预留空间
init_ROM:
call code_ROM
//**************************************;
ret
////////////////////////////////////////;
code_ROM:
jmp code_ROM_90
//**************************************
dw 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff
dw 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff
dw 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff
dw 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff
dw 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff
dw 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff
dw 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff
dw 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff
dw 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff
dw 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff
;
//**************************************
code_ROM_90:
ret
////////////////////////////////////////////////////////////////////////////////
由于时间有限,只能够编辑到这里,如需讨论,请联系:mzh524@126.com |