📄 xu.asm
字号:
.EXTERNAL _shuo
.INCLUDE hardware.inc
.CODE
.PUBLIC _main
_main:
R1=0x0000
[0x070b]=R1
R1=0x0710
[0x070e]=R1
R1=0x00C0
[P_IOB_Dir]=R1
[P_IOB_Attrib]=R1
R1=0x0004
[P_IOB_Data]=R1
R1=0x00ff
[P_IOA_Dir]=R1
[P_IOA_Attrib]=R1
R1=0x0050
[P_IOA_Data]=R1
R1=0x0001
[P_Watchdog_Clear]=R1
R1=0x002d //写CRA
[P_IOA_Data]=R1
R1=0x00ad
[P_IOA_Data]=R1
[P_IOA_Data]=R1
R1=0x002d
[P_IOA_Data]=R1
R1=0x005b
[P_IOA_Data]=R1
R1=0x002b //写CRB
[P_IOA_Data]=R1
R1=0x00ab
[P_IOA_Data]=R1
[P_IOA_Data]=R1
R1=0x002b
[P_IOA_Data]=R1
R1=0x005b
[P_IOA_Data]=R1
R1=0x0001
[P_Watchdog_Clear]=R1
R1=0x0700
R2=0x000a
[R1++]=R2
R2=0x0003
[R1++]=R2
R2=0x0002
[R1++]=R2
R2=0x0001
[R1]=R2
//INT IRQ
R1=0x0100
[P_INT_Ctrl]=R1
// R1=0x012d
//[P_TimerA_Ctrl]=R1
//R1=0xffe0
//[P_TimerA_Data]=R1
R1=0x0000
[0x070e]=R1
INT IRQ
loop:
nop
nop
nop
nop
R1=0x0001
R2=[0x070b]
TEST R1,r2
JNZ lp0
R1=0x0001
[P_Watchdog_Clear]=R1
GOTO loop
lp0:
R1=0x0000
[0x070b]=R1
R1=0x0040 //摘机
[P_IOB_Data]=R1
CALL _shuo
//播放语音提示
R1=0x00f0
[P_IOA_Dir]=R1
[P_IOA_Attrib]=R1
R1=0x004f
[P_IOA_Data]=R1
lp1:
R1=0x003f //读状态寄存器
[P_IOA_Data]=R1
R1=0x00bf
[P_IOA_Data]=R1
R1=[P_IOA_Data]
R3=0x003f
[P_IOA_Data]=R3
R3=0x004f
[P_IOA_Data]=R3
TEST R1,0x0004
R4=0x0001
[P_Watchdog_Clear]=R4
JZ lp1
R1=0x006f
[P_IOA_Data]=R1
R1=0x001f //读数据
[P_IOA_Data]=R1
R1=0x009f
[P_IOA_Data]=R1
R1=[P_IOA_Data]
R3=0x001f
[P_IOA_Data]=R3
R3=0x006f
[P_IOA_Data]=R3
// R1&=0x000f
R2=[0x070e]
[R2++]=R1
[0x070e]=R2
R4=0x0001
[P_Watchdog_Clear]=R4
CMP R1,0x000c //判断是否为#号
JNZ lp1
R1=0x0700
R2=0x0710
R4=0x0005
lp2: R4-=1
JZ lp4
R5=0x0001
[P_Watchdog_Clear]=R5
R3=[R1++]
CMP R3,[R2++]
JZ lp2
//lp3: R1=0x0000 //挂机
// [P_IOB_Data]=R1
//L_EXIT_INT:
//pop R1,R5 from [sp]
// R1=0x0100
//[P_INT_Clear]=R1
//INT IRQ
// RETI
lp4: R1=0x0080 //点灯
[P_IOB_Data]=R1
[P_IOB_Data]=R1
[P_IOB_Data]=R1
R4=0x0001
[P_Watchdog_Clear]=R4
R1=0x0000
[0x0710]=R1
[0x0711]=R1
[0x0712]=R1
[0x0713]=R1
[0x0714]=R1
nop
nop
nop
nop
GOTO loop
//.TEXT //清计数
//.PUBLIC _IRQ1
//_IRQ1:
// INT OFF
//push R1,R5 to [sp]
//R1=0x0000
//[0x070e]=R1
//pop R1,R5 from [sp]
//INT IRQ
// RETI
.TEXT //振铃检测
.PUBLIC _IRQ3
_IRQ3:
INT OFF
PUSH R1,R5 TO [SP]
R1=[0x070b]
R1+=1
[0x070b]=R1
R1=0x0001
[P_Watchdog_Clear]=R1
R1=0x0100
[P_INT_Ctrl]=R1
pop R1,R5 from [sp]
INT IRQ
RETI
//R1=0x1000
// TEST R1,[P_INT_Ctrl]
// JNZ L_IRQ3_EXT1
// R1=0x0200
// TEST R1,[P_INT_Ctrl]
// JNZ L_IRQ3_EXT2
//GOTO L_EXIT_INT
//L_IRQ3_EXT2:
// GOTO L_EXIT_INT
//L_IRQ3_EXT1:
// INT OFF
//R1=0x0080 /////////////////////////////////////////////////////////
// [P_IOB_Data]=R1
//R1=[0x070e]
//R1+=1
//[0x070e]=R1
//CMP R1,0x0006
//JZ lp0
//INT IRQ
//pop R1,R5 from [sp]
//RETI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -