||
///////////////////////////////////////////////////////////
?PR?reset?RESET_ASM SEGMENT CODE
PUBLIC reset
RSEG ?PR?reset?RESET_ASM
reset:
NOP ;可以在这里加上对“软启动”标志的修改等
MOV 0x81, #0xFD ;对于只有128字节RAM的51、2051等,改为0x7D
MOV DPTR, #RST_NEST
PUSH 0x82 ;PUSH DPL
PUSH 0x83 ;PUSH DPH
RETI ;清第一级中断嵌套
RST_NEST:
CLR A
PUSH 0xE0 ;PUSH ACC
PUSH 0xE0 ;PUSH ACC
RETI ;清第二级中断嵌套
END
======================================================================
将以上代码保存为“reset.asm”,创建一个工程(工程名soft_reset),器件就选AT89C51/AT89C52,将reset.asm文件加入,在工程属性对话框的“output”标签中设置为生成.lib文件,build,得到一个名为soft_reset.lib的库文件。
在需要“软件复位”的工程中包含上述的soft_reset.lib文件并作如下声明:
extern void reset(void);
即可以在在需要的地方写“reset();”来使CPU“软件复位”。