📄 fiq.lst
字号:
<
< .EXTERNAL F_SP_SACM_MS01_Init_
< .EXTERNAL F_SP_PlayMode0_
< .EXTERNAL F_SP_PlayMode1_
< .EXTERNAL F_SP_PlayMode2_
< .EXTERNAL F_SP_PlayMode3_
<
< .EXTERNAL F_SP_SACM_DVR_Init_
< .EXTERNAL F_SP_SACM_DVR_Rec_Init_
< .EXTERNAL F_SP_SACM_DVR_Play_Init_
<
< .EXTERNAL F_SP_GetResource
<
< //////////////////////////////////////////////////////////////////
< // Reserve old defintion
< // Note: Some user who use old library may use the old name
< //////////////////////////////////////////////////////////////////
< .EXTERNAL F_SP_Send_PWM // Get RAW data
< .EXTERNAL F_SP_Send_DAC1 //
< .EXTERNAL F_SP_Send_DAC2 //
<
< .EXTERNAL F_STD_Send_DAC1 // reserved old
< .EXTERNAL F_STD_Send_DAC2 // reserved old
<
< .EXTERNAL F_RampUpDAC1 // reserved old
< .EXTERNAL F_RampDnDAC1 // reserved old
< .EXTERNAL F_RampUpDAC2 // reserved old
< .EXTERNAL F_RampDnDAC2 // reserved old
< ///////////////////////////////////////////////////////////////////
<
<
<
< //========================================================================================
< // End of hardware.inc
< //========================================================================================
.DEFINE P_INT_CTRL 0x7010;
.DEFINE P_INT_CLEAR 0x7011;
00000000 .ram
00000000 00 00 00 00 .var line=0,long=0,i,flag=0,led=0
00 00 00 00
00 00
.PUBLIC _F_Speed
_F_Speed:
00000005 40 F1 INT OFF
00000006 11 93 00 00 R1 = [R_InterruptStatus] //
00000008 09 A3 10 03 R1 |= 0x0310 // Enable Timer A FIQ
0000000A 19 D3 00 00 [R_InterruptStatus] = R1
0000000C 19 D3 10 70 [P_INT_CTRL] = R1;
0000000E 41 F1 INT IRQ;
00000007 .TEXT
_FIQ:
00000007 A0 D8 push R1,R4 to [SP]
00000008 11 93 10 70 R1 = [P_INT_Ctrl]
0000000A 09 B3 00 20 R1 &= 0x2000
0000000C 14 5E jz ?notTimerA //当不为TIQ_TMA,则转
0000000D 11 93 00 00 R1 = [__gIsStopRecog]
0000000F 03 4E jnz ?BSR_NotBusy //[__gIsStopRecog]为1则转至放音处理
00000010 40 F0 00 00 call _BSR_FIQ_Routine //为0,调用辨识子程序
00000012 08 EE jmp ?BSR_Busy //返回中断
?BSR_NotBusy: //放音处理
00000013 12 95 00 00 R2 = [_PlayFlag]
00000015 03 4E jnz ?Play2000 //[_PlayFlag]为1则是播放2000
00000016 40 F0 00 00 call F_FIQ_Service_SACM_S480; //为0,播放480
00000018 02 EE jmp ?BSR_Busy //返回中断
?Play2000: //2000播放子程序
00000019 40 F0 00 00 call F_FIQ_Service_SACM_A2000;
?BSR_Busy: //返回中断
0000001B 09 93 00 20 R1 = 0x2000
0000001D 19 D3 11 70 [P_INT_Clear] = R1
0000001F A0 90 pop R1,R4 from [SP];
00000020 98 9A reti;
?notTimerA:
00000021 09 93 00 88 R1 = 0x8800;
00000023 19 D3 11 70 [P_INT_Clear] = R1;
00000025 A0 90 pop R1,R4 from [SP];
00000026 98 9A reti;
_BREAK:
_IRQ0:
_IRQ1:
_IRQ2:
_IRQ3:
00000027 A8 DA PUSH R1,R5 TO [SP] //压栈保护
00000028 09 93 00 01 R1 = 0x0100
0000002A 11 C3 10 70 TEST R1,[P_INT_CTRL] //比较是否为IRQ3_EXT1
0000002C 18 4E JNZ L_IRQ3_Ext1 //是,则转至对应程序段;
0000002D 09 93 00 02 R1 = 0x0200
0000002F 11 C3 10 70 TEST R1,[P_INT_CTRL] //否,则比较是否为IRQ3_EXT2
00000031 08 4E JNZ L_IRQ3_Ext2 //是,则转至对应程序段;
00000032 09 93 00 02 R1 = 0x0200
L_IRQ3_Key: //否,则进入键唤醒中断
00000034 09 93 80 00 R1 = 0x0080
00000036 19 D3 11 70 [P_INT_CLEAR] = R1
00000038 A8 90 POP R1,R5 FROM [SP]
00000039 98 9A RETI
L_IRQ3_Ext2:
0000003A 11 93 00 00 r1=[_uiSpeed];
0000003C 41 02 r1=r1+1;
0000003D 19 D3 00 00 [_uiSpeed]=r1;
0000003F 09 93 00 02 R1 = 0x0200
00000041 19 D3 11 70 [P_INT_CLEAR] = R1
00000043 A8 90 POP R1,R5 FROM [SP]
00000044 98 9A RETI
L_IRQ3_Ext1:
00000045 09 93 00 01 R1 = 0x0100
00000047 19 D3 11 70 [P_INT_CLEAR] = R1
00000049 A8 90 POP R1,R5 FROM [SP]
0000004A 98 9A RETI
_IRQ4:
0000004B A8 DA push r1,r5 to [sp];
0000004C 50 92 r1=0x0010;
0000004D 11 C3 10 70 test r1,[P_INT_Ctrl];
0000004F 0A 4E jnz l_irq4_1k;
00000050 60 92 r1=0x0020
00000051 11 C3 10 70 test r1,[P_INT_Ctrl];
00000053 04 4E jnz l_irq4_2k
l_irq4_4k:
00000054 09 93 40 00 R1=0x0040;
00000056 80 FE 77 00 goto exit_int;
l_irq4_2k:
00000058 80 FE 77 00 goto exit_int
l_irq4_1k:
0000005A 11 93 03 00 r1=[flag]
0000005C 41 02 r1+=1
0000005D 19 D3 03 00 [flag]=r1
0000005F 0A 95 00 04 r2=1024
00000061 11 93 03 00 r1=[flag]
00000063 02 43 cmp r1,r2
00000064 04 5E je good
00000065 50 92 r1=0x0010
00000066 80 FE 77 00 goto exit_int
00000068 50 92 r1=0x0010
good:
00000069 11 93 04 00 r1=[led]
0000006B 41 02 r1+=1
0000006C 19 D3 04 00 [led]=r1
0000006E 11 93 03 00 r1=[flag]
00000070 40 92 r1=0
00000071 19 D3 03 00 [flag]=r1
00000073 50 92 r1=0x0010
00000074 80 FE 77 00 goto exit_int
00000076 50 92 r1=0x0010
exit_int:
00000077 19 D3 11 70 [P_INT_Clear]=r1;
00000079 A8 90 pop r1,r5 from [sp];
0000007A 98 9A RETI;
_IRQ5:
_IRQ6:
_IRQ7:
.public _car_long
_car_long: .proc
0000007B 11 93 01 00 r1=[long];
0000007D 90 9A retf;
.endp
.public _car_time
_car_time: .proc
0000007E 11 93 04 00 r1=[led]
00000080 90 9A retf
.endp
.END
0 error(s), 0 warning(s).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -