📄 main.asm
字号:
//main.asm
.include spce061a.inc
.include Resource.inc
.TEXT
.public _main
_main:
//erase 0xfc00 ~ 0xffff
r1 = 0xfc00
call F_Flash_Erase
r1 = 0xfd00
call F_Flash_Erase
r1 = 0xfe00
call F_Flash_Erase
r1 = 0xff00
call F_Flash_Erase
//write ISP code to flash
r1 = 0xfc00
r3 = [_RES_CODE_BIN_SA]
?L0:
r2 = [r3++]
call F_Flash_WriteWord
r1 += 1
cmp r1, 0x0
jnz ?L0
// Beep to tell user that finished
r1 = 0xff
r2 = 0x7f
call F_Beep
?L1:
//write over! you can reset the cpu now
r1 = 0x0001
[P_Watchdog_Clear] = r1
jmp ?L1
retf
// r1: Freqency, r2: Length
F_Beep:
r3 = 0
[P_DAC_Ctrl] = r3
?BL:
r3 = 0xffff
[P_DAC1] = r3
[P_DAC2] = r3
call F_Delay
r3 = 0x0000
[P_DAC1] = r3
[P_DAC2] = r3
call F_Delay
r2 -= 1
cmp r2, 0
jne ?BL
retf
// r1: delay count
F_Delay:
push r1 to [sp]
?DL:
nop
r1 -= 1
cmp r1, 0
jne ?DL
pop r1 from [sp]
retf
// r1:Addr, r2:Data
F_Flash_WriteWord:
push r1, r3 to [sp]
r3 = 0xaaaa
[P_Flash_Ctrl] = r3
r3 = 0x5533
[P_Flash_Ctrl] = r3
[r1] = r2
pop r1, r3 from [sp]
retf
// r1:Addr
F_Flash_Erase:
push r1, r2 to [sp]
r2 = 0xaaaa
[P_Flash_Ctrl] = r2
r2 = 0x5511
[P_Flash_Ctrl] = r2
[r1] = r1
pop r1, r2 from [sp]
retf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -