📄 isr.lst
字号:
< .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
< //========================================================================================
.INCLUDE S480.inc
< //////////////////////////////////////////////////////////////////////////////////////////
< // Progarm: SACM-S480 API external definition for sacmV26e.lib
< // Writen by: Andy
< // Date: 2000/06/20
< // 2001/02/10
< // 2001/10/11: Add manual mode definition
< //////////////////////////////////////////////////////////////////////////////////////////
<
< .EXTERNAL F_SACM_S480_Initial
< .EXTERNAL F_SACM_S480_ServiceLoop // For Auto Mode only
< .EXTERNAL F_SACM_S480_Play // For Auto Mode only
< .EXTERNAL F_SACM_S480_Stop
< .EXTERNAL F_SACM_S480_Stop_EX // Keep Int. enable
< .EXTERNAL F_SACM_S480_Pause
< .EXTERNAL F_SACM_S480_Resume
< .EXTERNAL F_SACM_S480_Volume
< .EXTERNAL F_SACM_S480_Status
<
< .EXTERNAL F_SACM_S480_InitDecoder // For Manual Mode only
< .EXTERNAL F_SACM_S480_Decoder // For Manual Mode only
< .EXTERNAL F_SACM_S480_InitQueue // For Manual Mode only
< .EXTERNAL F_SACM_S480_FillQueue // For Manual Mode only
< .EXTERNAL F_SACM_S480_TestQueue // For Manual Mode only
<
< .EXTERNAL F_FIQ_Service_SACM_S480 // Interrupt service Routine(Play)
<
< //========================================================================================
< // End of S480.inc
< //========================================================================================
.INCLUDE Key.inc
< .external F_Key_Init
< .external F_Key_Scan
< .external F_Key_Get
<
< .define KEY_0 0x88
< .define KEY_1 0x84
< .define KEY_2 0x82
< .define KEY_3 0x81
< .define KEY_4 0x48
< .define KEY_5 0x44
< .define KEY_6 0x42
< .define KEY_7 0x41
< .define KEY_8 0x28
< .define KEY_9 0x24
< .define KEY_A 0x22
< .define KEY_B 0x21
< .define KEY_C 0x18
< .define KEY_D 0x14
< .define KEY_E 0x12
< .define KEY_F 0x11
<
< .define PAD_1 KEY_0
< .define PAD_2 KEY_1
< .define PAD_3 KEY_2
< .define PAD_4 KEY_4
< .define PAD_5 KEY_5
< .define PAD_6 KEY_6
< .define PAD_7 KEY_8
< .define PAD_8 KEY_9
< .define PAD_9 KEY_A
< .define PAD_0 KEY_D
< .define PAD_STAR KEY_C
< .define PAD_POUND KEY_E
< .define PAD_PGUP KEY_3
< .define PAD_PGDN KEY_7
< .define PAD_ENTER KEY_B
< .define PAD_ESC KEY_F
//============================================================================================
//汇编格式: _FIQ
//实现功能: 中断服务子程序,在FIQ_TMA中断中调用F_FIQ_Service_SACM_S480函数解码并播放
//参数: 无
//返回值: 无
//破坏寄存器: 无
//=============================================================================================
.PUBLIC _FIQ;
_FIQ:
000081B9 A0 D8 PUSH r1,r4 to [sp];
000081BA 09 93 00 20 r1=0x2000;
000081BC 11 C3 10 70 test r1,[P_INT_Ctrl];
000081BE 0B 4E jnz L_FIQ_TimerA;
000081BF 09 93 00 08 r1=0x0800;
000081C1 11 C3 10 70 test r1,[P_INT_Ctrl];
000081C3 0C 4E jnz L_FIQ_TimerB;
L_FIQ_PWM:
000081C4 09 93 00 80 r1=C_FIQ_PWM;
000081C6 19 D3 11 70 [P_INT_Clear]=r1;
000081C8 A0 90 POP R1,R4 from[sp];
000081C9 98 9A reti;
L_FIQ_TimerA:
000081CA 19 D3 11 70 [P_INT_Clear]=r1;
000081CC 40 F0 8B 94 call F_FIQ_Service_SACM_S480; //调用F_FIQ_Service_SACM_S480解码
000081CE A0 90 pop r1,r4 from [sp];
000081CF 98 9A reti;
L_FIQ_TimerB:
000081D0 19 D3 11 70 [P_INT_Clear]=r1;
000081D2 A0 90 pop r1,r4 from [sp];
000081D3 98 9A reti;
//============================================================================================
//汇编格式: _IRQ6
//实现功能: 中断服务子程序,在IRQ6的TMB2 128Hz中断当中调用扫键程序
//参数: 无
//返回值: 无
//破坏寄存器: 无
//=============================================================================================
.PUBLIC _IRQ6
_IRQ6:
000081D4 A0 D8 PUSH r1,r4 to [sp];
000081D5 41 92 r1=0x0001;
000081D6 11 C3 10 70 TEST r1,[P_INT_Ctrl];
000081D8 05 4E JNZ _IRQ6_TMB2;
000081D9 42 92 r1=0x0002;
000081DA 19 D3 11 70 [P_INT_Clear]=r1;
000081DC A0 90 POP r1,r4 FROM [sp];
000081DD 98 9A RETI;
_IRQ6_TMB2:
000081DE 19 D3 11 70 [P_INT_Clear]=r1;
000081E0 40 F0 DC 99 CALL F_Key_Scan; //扫描键盘
000081E2 A0 90 POP r1,r4 FROM [sp];
000081E3 98 9A RETI;
//============================================================================================
//汇编格式: _Initial_INT
//C语言格式: void Initial_INT(void)
//实现功能: 初始化中断状态,以通知音频程序,目前已打开的中断情况
//参数: 无
//返回值: 无
//破坏寄存器: 无
//=============================================================================================
00009A7B .CODE
.DEFINE P_INT_Ctrl_New 0x702D // Same as P_INT_Mask
.PUBLIC _Initial_INT
_Initial_INT:
00009A7B 11 93 89 05 r1 = [R_InterruptStatus] //在hardware.asm当中定义
00009A7D 12 95 2D 70 r2 = [P_INT_Ctrl_New]
00009A7F 02 A3 r1 = r1|r2
00009A80 19 D3 89 05 [R_InterruptStatus] = r1
00009A82 90 9A retf
0 error(s), 0 warning(s).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -