📄 watchdog.asm
字号:
#include <defBF532.h>
.section L1_code;
.global _BF533_WDOG_WRITE_CNT;
.global _BF533_WDOG_WRITE_CTL;
.global _BF533_WDOG_WRITE_STAT;
.global _BF533_WDOG_INTERRUPT_enable;
.global _BF533_WDOG_RESTART;
_BF533_WDOG_WRITE_CNT:
p0.h = hi(WDOG_CNT);
p0.l = lo(WDOG_CNT);
r0.l = 0xffff;
r0.h = 0xffff;
[p0] = r0;
SSYNC;
_BF533_WDOG_WRITE_CNT.END:
RTS;
_BF533_WDOG_WRITE_CTL:
p0.h = hi(WDOG_CTL);
p0.l = lo(WDOG_CTL);
r0.l = 0x0000;//0x04//0x0AD0;//generate reset event
w[p0] = r0.l;
SSYNC;
_BF533_WDOG_WRITE_CTL.END:
RTS;
_BF533_WDOG_RESTART:
p0.h = hi(WDOG_CTL);
p0.l = lo(WDOG_CTL);
r0.l = 0x0AD0;//stop watchdog count
w[p0] = r0.l;
r0.l = 0x8004;//clear watchdog timer expired bit
w[p0] = r0.l;
SSYNC;
_BF533_WDOG_RESTART.END:
RTS;
_BF533_WDOG_WRITE_STAT:
p0.h = hi(WDOG_STAT);
p0.l = lo(WDOG_STAT);
r0 = 0x0000(z);//generate reset event
[p0] = r0;
SSYNC;
_BF533_WDOG_WRITE_STAT.END:
RTS;
_BF533_WDOG_INTERRUPT_enable:
p0.h = hi(SIC_IAR2);
p0.l = lo(SIC_IAR2);
r0 =[p0];
r1.h= 0x6000;//IVG13
r1.l= 0x0000;//IVG13
r0=r0|r1;
[p0] = r0;
p0.h = hi(SIC_IMASK);
p0.l = lo(SIC_IMASK);
r0 =[p0];
r1.l= 0x0000;
r1.h= 0x0080;
r0=r0|r1;
[p0] = r0;
SSYNC;
_BF533_WDOG_INTERRUPT_enable.END:
RTS;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -