evb061test.lst
来自「凌阳科技单片机系统开发板测试程序,可以参考应用。」· LST 代码 · 共 580 行 · 第 1/3 页
LST
580 行
< .EXTERNAL F_SP_ReadQueue;
< .EXTERNAL F_SP_WriteQueue;
< .EXTERNAL F_SP_TestQueue;
<
<
<
< .EXTERNAL F_SP_Get_ADC
<
< .EXTERNAL F_SP_Set_P_TimerA_Ctrl
< .EXTERNAL F_SP_Set_P_TimerA_Data
< .EXTERNAL F_SP_Set_P_TimerB_Ctrl
< .EXTERNAL F_SP_Set_P_TimerB_Data
< .EXTERNAL F_SP_Set_P_INT_Ctrl
< .EXTERNAL F_SP_Set_P_INT_Clear
< .EXTERNAL F_SP_Set_P_SystemClock
< .EXTERNAL F_SP_Set_P_DAC_Ctrl
< .EXTERNAL F_SP_Set_P_ADC_Ctrl
<
<
<
< //--------------------------------------------
< SACM_MACRO1: .MACRO
<
< .ENDM
<
< SACM_MACRO2: .MACRO
<
< .ENDM
<
<
<
<
< //.define PC_Play_Enable_A2000 1 // Enable the PC-Play function for SACM-A2000 module
< //.define PC_Play_Enable_S480 1 // Enable the PC-Play function for SACM-S480 module
< //.define PC_Play_Enable_S240 1 // Enable the PC-Play function for SACM-S240 module
< //.define PC_Play_Enable_MS01 1 // Enable the PC-Play function for SACM-MS01 module
<
<
<
< //========================================================================================
< // End of hardware.inc
< //========================================================================================
00008CDD .code
//=====================================//
//函数名称:unsigned IOTest()
//出口参数:1.测试成功0、测试失败
//无入口参数
//硬件连接:A口B口短接
//=====================================//
.public _IOTest;
_IOTest: .proc
InitPortAinput_Boutput:
00008CDD 40 92 r1=0x0000 //初始化A口为输入端
00008CDE 19 D3 02 70 [P_IOA_Dir]=r1
00008CE0 19 D3 03 70 [P_IOA_Attrib]=r1
00008CE2 19 D3 00 70 [P_IOA_Data]=r1
//初始化B口为输出端
00008CE4 09 93 FF FF r1=0xffff
00008CE6 19 D3 07 70 [P_IOB_Dir]=r1
00008CE8 19 D3 08 70 [P_IOB_Attrib]=r1
00008CEA 40 92 r1=0x0000
00008CEB 19 D3 05 70 [P_IOB_Data]=r1
WritePortB:
00008CED 09 93 FF FF r1 = Write_Port_Data; //向B口写数据0xaaaa
LoopWrite: //
00008CEF 41 22 r1 = r1-1;
00008CF0 12 5E jz InitPortBinput_Aoutput;//
00008CF1 19 D3 05 70 [P_IOB_Data]=r1
ReadPortA:
//使数据稳定
00008CF3 00 EE nop;
00008CF4 00 EE nop;
00008CF5 00 EE nop;
00008CF6 00 EE nop;
00008CF7 00 EE nop;
00008CF8 12 95 00 70 r2 = [P_IOA_Data]; //读A口数据
00008CFA 02 43 cmp r1,r2; //比较读写数据是否相同
00008CFB 4D 5E je LoopWrite;
//je InitPortBinput_Aoutput;
00008CFC 00 EE nop;
00008CFD 00 EE nop;
00008CFE 00 EE nop;
00008CFF 40 92 r1 = 0x0000; //测试失败
00008D00 00 EE nop;
00008D01 00 EE nop;
00008D02 90 9A retf;
InitPortBinput_Aoutput:
00008D03 40 92 r1=0x0000 //初始化B口为输入
00008D04 19 D3 07 70 [P_IOB_Dir]=r1
00008D06 19 D3 08 70 [P_IOB_Attrib]=r1
00008D08 19 D3 05 70 [P_IOB_Data]=r1
//初始化A口为输出
00008D0A 09 93 FF FF r1=0xffff
00008D0C 19 D3 02 70 [P_IOA_Dir]=r1
00008D0E 19 D3 03 70 [P_IOA_Attrib]=r1
00008D10 40 92 r1=0x0000
00008D11 19 D3 00 70 [P_IOA_Data]=r1
WritePortA: //向A口写数据
00008D13 09 93 FF FF r1 = Write_Port_Data
LoopWrite0:
00008D15 41 22 r1 = r1 - 1;
00008D16 0D 5E jz TestSuc;
00008D17 19 D3 00 70 [P_IOA_Data]=r1
ReadPortB:
//使数据稳定
00008D19 00 EE nop;
00008D1A 00 EE nop;
00008D1B 00 EE nop;
00008D1C 00 EE nop;
00008D1D 00 EE nop;
00008D1E 12 95 05 70 r2 = [P_IOB_Data]; //读B口数据
00008D20 02 43 cmp r1,r2; //比较读写数据是否相同
00008D21 4D 5E je LoopWrite0;
00008D22 40 92 r1 = 0x0000; //测试失败
00008D23 90 9A retf;
TestSuc:
00008D24 41 92 r1 = 0x0001;
00008D25 90 9A retf;
.endp
//===========================================//
//函数名称:unsigned KeyWakeUp()
//出口参数:1.测试成功0、测试失败
//无入口参数
//硬件连接:A口B口短接
//=====================================//
.public _KeyWakeUp;
_KeyWakeUp: .proc
.define P_IOA_RL 0x7004
//InitPortA_input_B_output0:
00008D26 40 92 r1=0x0000 //初始化A口为输入端
00008D27 19 D3 02 70 [P_IOA_Dir]=r1
00008D29 19 D3 03 70 [P_IOA_Attrib]=r1
00008D2B 19 D3 00 70 [P_IOA_Data]=r1
//初始化B口为输出端
00008D2D 09 93 FF FF r1=0xffff
00008D2F 19 D3 07 70 [P_IOB_Dir]=r1
00008D31 19 D3 08 70 [P_IOB_Attrib]=r1
00008D33 40 92 r1=0x0000
00008D34 19 D3 05 70 [P_IOB_Data]=r1
00008D36 11 93 10 70 r1 = [P_INT_Ctrl]
00008D38 44 A2 r1 |= 0x0004 //中断初始化
00008D39 19 D3 10 70 [P_INT_Ctrl] = r1;
00008D3B 11 93 04 70 r1=[P_IOA_RL]
00008D3D 41 F1 INT IRQ //开中断
00008D3E 57 92 r1=0x0017; //on 32768
00008D3F 19 D3 13 70 [P_SystemClock]=r1 //进入睡眠状态
00008D41 40 92 r1 = 0x0000
00008D42 19 D3 13 70 [P_SystemClock]=r1
00008D44 41 92 r1 = 0x0001; //测试成功
00008D45 90 9A retf;
.endp
//********************************//
//键唤醒中断
//*******************************//
0000808C .text
.public _IRQ3
_IRQ3:
0000808C A0 D8 push r1,r4 to [sp]
0000808D 09 93 80 00 r1=0x0080
0000808F 11 C3 10 70 test r1,[P_INT_Ctrl] //是否为键唤醒中断
00008091 04 5E jz L_notKeyArouse //否,退出中断程序
00008092 09 93 80 00 r1=0x0080
00008094 19 D3 11 70 [P_INT_Clear]=r1 //是,清中断
L_notKeyArouse:
00008096 A0 90 pop r1,r4 from [sp]
00008097 98 9A reti
//=======================================//
//函数名称:unsigned UART(char *Psend)
//出口参数:1.测试成功0、测试失败
//无入口参数
//硬件连接:A口B口短接
//=====================================//
0000C6FA .data //发送的数据
0000C6FA AA 00 55 00 SendData:.dw 0x00aa,0x0055,0x00a5,0x005a,0x00aa
A5 00 5A 00
AA 00
00000000 .isram
.public RecData //接收数据缓冲区
00000000 00 00 00 00 RecData: .dw 5 dup(0);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?