📄 serve.asm
字号:
.define P_IOA_Data 0x7001;
.define P_IOA_Dir 0x7002;
.define P_IOA_Attr 0x7003;
.define P_IOB_Data 0x7005;
.define P_IOB_Dir 0x7007;
.define P_IOB_Attr 0x7008;
.define P_INT_Ctrl 0x7010;
.define P_INT_Clear 0x7011;
.iram
address: .dw 0x3ebf,0x36ef,0x36ff,0x3687,0x36fd,0x36ed,0x36e6,0x36cf,0x36db,0x3686;
.dw 0x36bf,0x336f,0x337f,0x3307,0x337d,0x336d,0x3366,0x334f,0x335b,0x3306;
.dw 0x333f,0x27ef,0x27ff,0x2787,0x27fd,0x27ed,0x27e6,0x27cf,0x27db,0x2786;
.dw 0x27bf,0x2def,0x2dff,0x2d87,0x2dfd,0x2ded,0x2de6,0x2dcf,0x2ddb,0x2d86;
.dw 0x2dbf,0x036f,0x037f,0x0307,0x037d,0x036d,0x0366,0x034f,0x035b,0x0306;
.dw 0x033f,0x1fef,0x1fff,0x1f87,0x1ffd,0x1fed,0x1fe6,0x1fcf,0x1fdb,0x1f86;
.code
.public _B_State;
_B_State: .proc
r1=0xfc03;
[P_IOB_Dir]=r1;
//r1=0xfff3;
[P_IOB_Attr]=r1;
r1=0x0000;
[P_IOB_Data]=r1;
r1=[P_IOB_Data];
retf;
.endp;
.public _time_short;
_time_short: .proc
INT OFF;
r1=0xfc03;
[P_IOB_Dir]=r1;
[P_IOB_Attr]=r1;
r1=0x001e;
r4=r1;
retf;
.endp;
.public _time_medium;
_time_medium: .proc
INT OFF;
r1=0xfc03;
[P_IOB_Dir]=r1;
[P_IOB_Attr]=r1;
r1=0x0014;
r4=r1;
retf;
.endp;
.public _time_long;
_time_long: .proc
INT OFF;
r1=0xfc03;
[P_IOB_Dir]=r1;
[P_IOB_Attr]=r1;
r1=0x000a;
r4=r1
retf;
.endp;
.public _time;
_time: .proc
push bp,bp to [sp];
r2=0x003c;
r2=r2-r1;
bp=r2+address;
r1=bp;
pop bp,bp from [sp];
retf;
.endp;
.public _show;
_show: .proc
r1=0xffff;
[P_IOA_Dir]=r1;
[P_IOA_Attr]=r1;
push bp,bp to [sp];
bp=sp+1;
r3=[bp+3];
[P_IOA_Data]=r3;
pop bp,bp from [sp];
retf;
.endp;
.public _red_green;
_red_green: .proc
r1=0xd401;
[P_IOB_Data]=r1;
retf;
.endp;
.public _red_yellow;
_red_yellow: .proc
r1=0xcc01;
[P_IOB_Data]=r1;
retf;
.endp;
.public _green_red;
_green_red: .proc
r1=0xb802;
[P_IOB_Data]=r1;
retf;
.endp;
.public _yellow_red;
_yellow_red: .proc //south:yellow north:red
r1=0xac02;
[P_IOB_Data]=r1;
retf;
.endp
.public _EXT1_INT_ON;
_EXT1_INT_ON:
IRQ OFF;
r1=0x0100;
[P_INT_Ctrl]=r1;
test r1,[P_INT_Ctrl];
jz backf; //如果没有中断返回值为0
r1=0x0100;
[P_INT_Clear]=r1;
r1=0x0001; //如果有中断返回值为1
retf;
backf:
r1=0x0000;
retf;
.public _EXT2_INT_ON;
_EXT2_INT_ON:
IRQ OFF;
r1=0x0200;
[P_INT_Ctrl]=r1;
test r1,[P_INT_Ctrl];
jz backf; //如果没有中断返回值为0
r1=0x0200;
[P_INT_Clear]=r1
r1=0x0001;
retf;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -