📄 main.asm
字号:
.define tmb1clk_8hz 0x0000
.define tmb1clk_16hz 0x0001
.define tmb1clk_32hz 0x0002
.define tmb1clk_64hz 0x0003
.define tmb2clk_128hz 0x0000
.define tmb2clk_256hz 0x0004
.define tmb2clk_512hz 0x0008
.define tmb2clk_1024hz 0x000c
.define tmb1_clk tmb1clk_64hz
.define tmb2_clk tmb2clk_128hz
.define P_IOA_DATA 0X7000;
.define P_IOA_DIR 0X7002;
.define P_IOA_ATTRI 0X7003;
.define P_IOB_DATA 0X7005;
.define P_IOB_DIR 0X7007;
.define P_IOB_ATTRI 0X7008;
.define P_INT_CTRL 0X7010;
.define P_INT_CLEAR 0X7011;
.define P_Timebase_setup 0x700e
.define P_Timebase_clear 0x700f
.RAM
.VAR TIME1
.VAR TIME2
.code
.public _main
_main:
int off
r1=0xffff
[P_IOA_ATTRI]=r1
[P_IOA_DIR]=r1
r1=0x0000
[P_IOA_DATA]=r1
r1=0xffff
[P_IOB_ATTRI]=r1
[P_IOB_DIR]=r1
r1=0x0000
[P_IOB_DATA]=r1
r1=tmb1_clk
r1|=tmb2_clk
[P_Timebase_setup]=r1
r1=0x0003
[P_INT_CTRL]=r1
r1=0
[TIME1]=r1
[TIME2]=r1
int irq;
loop:
nop
nop
nop
nop
jmp loop
.text
.public _IRQ6
_IRQ6:
push r1,r5 to [sp]
r1=0x0001
test r1,[P_INT_CTRL]
jnz I_irq6_tmb2
I_irq6_tmb1:
r2=[TIME1]
r2+=0x0001
[TIME1]=r2
cmp r2,64
jbe LED1_OFF
r1=0x00ff
[P_IOA_DATA]=r1
cmp r2,128
jbe LED1_RET
r2=0x000
[TIME1]=r2
jmp LED1_RET
LED1_OFF:
r1=0x0000
[P_IOA_DATA]=r1
LED1_RET:
r1=0x0002
[P_INT_CLEAR]=r1
pop r1,r5 from [sp]
RETI
I_irq6_tmb2:
r2=[TIME2]
r2+=0x0001
[TIME2]=r2
cmp r2,64
jbe LED2_OFF
r1=0x00ff
[P_IOB_DATA]=r1
cmp r2,128
jbe LED2_RET
r2=0x0000
[TIME2]=r2
jmp LED2_RET
LED2_OFF:
r1=0x0000
[P_IOB_DATA]=r1
LED2_RET:
r1=0x0001
[P_INT_CLEAR]=r1
pop r1,r5 from [sp]
RETI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -