📄 evb061test.lst
字号:
<
< .EXTERNAL F_SP_SACM_A2000_Init_
< .EXTERNAL F_SP_SACM_S480_Init_
< .EXTERNAL F_SP_SACM_S240_Init_
<
< .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
< //========================================================================================
00008E23 .code
//=====================================//
//函数名称:unsigned IOTest()
//出口参数:1.测试成功0、测试失败
//无入口参数
//硬件连接:A口B口短接
//=====================================//
.public _IOTest;
_IOTest: .proc
InitPortAinput_Boutput:
00008E23 40 92 r1=0x0000 //初始化A口为输入端
00008E24 19 D3 02 70 [P_IOA_Dir]=r1
00008E26 19 D3 03 70 [P_IOA_Attrib]=r1
00008E28 19 D3 00 70 [P_IOA_Data]=r1
//初始化B口为输出端
00008E2A 09 93 FF FF r1=0xffff
00008E2C 19 D3 07 70 [P_IOB_Dir]=r1
00008E2E 19 D3 08 70 [P_IOB_Attrib]=r1
00008E30 40 92 r1=0x0000
00008E31 19 D3 05 70 [P_IOB_Data]=r1
WritePortB:
00008E33 09 93 FF FF r1 = Write_Port_Data; //向B口写数据0xaaaa
LoopWrite:
00008E35 41 22 r1 = r1-1;
00008E36 0D 5E jz InitPortBinput_Aoutput;//
00008E37 19 D3 05 70 [P_IOB_Data]=r1
ReadPortA:
//使数据稳定
00008E39 00 EE nop;
00008E3A 00 EE nop;
00008E3B 12 95 00 70 r2 = [P_IOA_Data]; //读A口数据
00008E3D 02 43 cmp r1,r2; //比较读写数据是否相同
00008E3E 4A 5E je LoopWrite;
//je InitPortBinput_Aoutput;
00008E3F 00 EE nop;
00008E40 40 92 r1 = 0x0000; //测试失败
00008E41 00 EE nop;
00008E42 00 EE nop;
00008E43 90 9A retf;
InitPortBinput_Aoutput:
00008E44 40 92 r1=0x0000 //初始化B口为输入
00008E45 19 D3 07 70 [P_IOB_Dir]=r1
00008E47 19 D3 08 70 [P_IOB_Attrib]=r1
00008E49 19 D3 05 70 [P_IOB_Data]=r1
//初始化A口为输出
00008E4B 09 93 FF FF r1=0xffff
00008E4D 19 D3 02 70 [P_IOA_Dir]=r1
00008E4F 19 D3 03 70 [P_IOA_Attrib]=r1
00008E51 40 92 r1=0x0000
00008E52 19 D3 00 70 [P_IOA_Data]=r1
WritePortA: //向A口写数据
00008E54 09 93 FF FF r1 = Write_Port_Data
LoopWrite0:
00008E56 41 22 r1 = r1 - 1;
00008E57 0A 5E jz TestSuc;
00008E58 19 D3 00 70 [P_IOA_Data]=r1
ReadPortB:
//使数据稳定
00008E5A 00 EE nop;
00008E5B 00 EE nop;
00008E5C 12 95 05 70 r2 = [P_IOB_Data]; //读B口数据
00008E5E 02 43 cmp r1,r2; //比较读写数据是否相同
00008E5F 4A 5E je LoopWrite0;
00008E60 40 92 r1 = 0x0000; //测试失败
00008E61 90 9A retf;
TestSuc:
00008E62 41 92 r1 = 0x0001;
00008E63 90 9A retf;
.endp
//===========================================//
//函数名称:unsigned KeyWakeUp()
//出口参数:1.测试成功0、测试失败
//无入口参数
//硬件连接:A口B口短接
//=====================================//
.public _KeyWakeUp;
_KeyWakeUp: .proc
.define P_IOA_RL 0x7004
//InitPortA_input_B_output0:
00008E64 40 92 r1=0x0000 //初始化A口为输入端
00008E65 19 D3 02 70 [P_IOA_Dir]=r1
00008E67 19 D3 03 70 [P_IOA_Attrib]=r1
00008E69 19 D3 00 70 [P_IOA_Data]=r1
//初始化B口为输出端
00008E6B 09 93 FF FF r1=0xffff
00008E6D 19 D3 07 70 [P_IOB_Dir]=r1
00008E6F 19 D3 08 70 [P_IOB_Attrib]=r1
00008E71 40 92 r1=0x0000
00008E72 19 D3 05 70 [P_IOB_Data]=r1
00008E74 11 93 2D 70 r1 = [P_INT_Ctrl_New]
00008E76 44 A2 r1 |= 0x0004 //中断初始化
00008E77 19 D3 10 70 [P_INT_Ctrl] = r1;
00008E79 11 93 04 70 r1=[P_IOA_RL]
00008E7B 41 F1 INT IRQ //开中断
00008E7C 57 92 r1=0x0017; //on 32768
00008E7D 19 D3 13 70 [P_SystemClock]=r1 //进入睡眠状态
// R1 = 0x0001; // Clear Watch Dog
//[P_Watchdog_Clear] = R1;
00008E7F 40 92 r1 = 0x0000
00008E80 19 D3 13 70 [P_SystemClock]=r1
00008E82 41 92 r1 = 0x0001; //测试成功
00008E83 90 9A retf;
.endp
//********************************//
//键唤醒中断
//*******************************//
00008094 .text
.public _IRQ3
_IRQ3:
00008094 A0 D8 push r1,r4 to [sp]
00008095 09 93 80 00 r1=0x0080
00008097 11 C3 10 70 test r1,[P_INT_Ctrl] //是否为键唤醒中断
00008099 04 5E jz L_notKeyArouse //否,退出中断程序
0000809A 09 93 80 00 r1=0x0080
0000809C 19 D3 11 70 [P_INT_Clear]=r1 //是,清中断
L_notKeyArouse:
0000809E A0 90 pop r1,r4 from [sp]
0000809F 98 9A reti
//==============================//
// MIC测试部分
//==============================//
00008E84 .CODE
_InitAD_DA:
00008E84 40 F1 INT OFF;
00008E85 70 92 R1 = 0x0030; // 时钟频率为CLKA的Fosc/2
00008E86 19 D3 0B 70 [P_TimerA_Ctrl] = R1; //
00008E88 09 93 23 FA R1 = TIMER_DATA_FOR_8KHZ; // 采样率为 8kHz
00008E8A 19 D3 0A 70 [P_TimerA_Data] = R1; //
00008E8C 55 92 R1 = 0x0015; // 设置AGC
//R1 = 0x0011 // 取消AGC
00008E8D 19 D3 15 70 [P_ADC_Ctrl] = R1; // 采用自动方式、且通过MIC_IN通道输入,
00008E8F 09 93 A8 00 R1 = 0x00A8; //通过定时器A的溢出锁存数据,ADC为自动方式
00008E91 19 D3 2A 70 [P_DAC_Ctrl] = R1;
00008E93 09 93 00 10 R1 = 0x1000; //
00008E95 19 D3 10 70 [P_INT_Ctrl] = R1; // 开中断IRQ1_TM
00008E97 41 F1 INT IRQ;
00008E98 90 9A retf;
//主程序
.PUBLIC _MICTEST
_MICTEST: .PROC
00008E99 40 F0 84 8E call _InitAD_DA // 调用AD 初始化子程序
.ENDP
loop:
00008E9B 41 92 R1 = 0x0001; // Clear Watch Dog
00008E9C 19 D3 12 70 [P_Watchdog_Clear] = R1;
00008E9E 44 EE jmp loop
000080A0 .text
.PUBLIC _IRQ1
_IRQ1:
000080A0 88 D2 push R1 to [SP]
000080A1 11 93 14 70 R1 = [P_ADC]
000080A3 19 D3 17 70 [P_DAC1] = R1
000080A5 19 D3 16 70 [P_DAC2] = R1
000080A7 09 93 00 10 R1 = 0x1000
000080A9 19 D3 11 70 [P_INT_Clear] = R1
000080AB 88 90 pop R1 from [SP]
000080AC 98 9A reti
0 error(s), 0 warning(s).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -