📄 system.lst
字号:
<
< .EXTERNAL R_InterruptStatus;
<
<
< .EXTERNAL F_SP_RampUpDAC1;
< .EXTERNAL F_SP_RampDnDAC1;
< .EXTERNAL F_SP_RampUpDAC2;
< .EXTERNAL F_SP_RampDnDAC2;
<
< .EXTERNAL F_SP_InitQueue;
< .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
<
< //========================================================================================
< // add by abin for easy programming
< //========================================================================================
<
< .define FoscCLK_20 0x00; //Fosc=20.480MHz
< .define FoscCLK_24 0x20; //Fosc=24.576MHz
< .define FoscCLK_32 0x40; //Fosc=32.768MHz
< .define FoscCLK_40 0x60; //Fosc=40.960MHz
< .define FoscCLK_49 0x80; //Fosc=49.152MHz
<
< .define CPUCLK_Fosc 0x00; //CPUClk选Fosc
< .define CPUCLK_Fosc2 0x01; //CPUClk选Fosc/2
< .define CPUCLK_Fosc4 0x02; //CPUClk选Fosc/4
< .define CPUCLK_Fosc8 0x03; //CPUClk选Fosc/8
< .define CPUCLK_Fosc16 0x04; //CPUClk选Fosc/16
< .define CPUCLK_Fosc32 0x05; //CPUClk选Fosc/32
< .define CPUCLK_Fosc64 0x06; //CPUClk选Fosc/64
<
<
< //========================================================================================
< // End of hardware.inc
< //========================================================================================
//for led
.public _F_TurnOnFirstLed
.public _F_TurnOffFirstLed
.public _F_TurnOnSecondLed
.public _F_TurnOffSecondLed
//for d12
.public _F_InitWriteD12
.public _F_InitReadD12
.public _F_ReadD12
.public _F_WriteCmdOrDataToD12
//for system
.public _F_System_Initial
.public _F_Interrupt_On
.public _F_Delay
.public _F_Interrupt_Off
.define Fosc_CLK_RATE FoscCLK_49 //选择不同Fosc信号频率
.define CPU_CLK_RATE CPUCLK_Fosc //改变CPUClk频率
00008ADA .code
//====================================================================
// 函 数: F_System_Initial()
// 语 法: void F_System_Initial(void) (for c)
// 描 述: 该函数用于初始化SPCE061A的中断、时钟、I/0、复位PDIUSBD12
// 初始化:
// IOB0,IOB1为同相高电平输出
// IOB2=INT_N=1为带上拉电阻的输入
// IOB3=RESET_N=1为同相高电平输出
// IOB4=CS_N=1同相高电平输出
// IOB5=ALE=0同相低电平输出
// IOB6=WR_N=1为同相高电平输出
// IOB7=RD_N=1为同相高电平输出
// 参 数: 无
// 返回值: 无
//=====================================================================
_F_System_Initial: .PROC
00008ADA 88 D2 push R1,R1 to [sp];
00008ADB 40 F1 int off;
00008ADC 09 93 00 01 R1=0x0100; //开中断IRQ3_EXT1
00008ADE 19 D3 2D 70 [P_INT_Ctrl_New]=R1;
00008AE0 09 93 80 00 R1=Fosc_CLK_RATE; //
00008AE2 40 A2 R1|=CPU_CLK_RATE; //设置系统时钟
00008AE3 19 D3 13 70 [P_SystemClock]=R1;
00008AE5 09 93 FF 00 R1=0x00ff; //设置IOA8-IOA15为带上拉电阻地输入
00008AE7 19 D3 02 70 [P_IOA_Dir]=R1; //设置IOA0-IOA7为同相低电平输出
00008AE9 19 D3 03 70 [P_IOA_Attrib]=R1;
00008AEB 09 93 00 FF R1=0xff00;
00008AED 19 D3 00 70 [P_IOA_Data]=R1;
00008AEF 09 93 FB FF R1=0xFFFB; //CS_N=IOB4=1,ALE=IOB5=0,WR_N=IOB6=1,RD_N=IOB7=1;
00008AF1 19 D3 07 70 [P_IOB_Dir]=R1; //IOB3=RESET_N=1,IOB2=INT_N=1,IOB0、IOB1输出
00008AF3 19 D3 08 70 [P_IOB_Attrib]=R1; //不选中D12
00008AF5 09 93 DF FF R1=0xFFDF ;
00008AF7 19 D3 05 70 [P_IOB_Data]=R1;
00008AF9 09 93 C7 FF R1=0xFFC7;
00008AFB 19 D3 05 70 [P_IOB_Data]=R1; //CS_N=0,ALE=0,WR_N=1,RD_N=1,RESET_N=0,INT_N=1
00008AFD 40 F0 09 8B call F_Delay; //系统复位延时。
00008AFF 09 93 CF FF R1=0xFFCF;
00008B01 19 D3 05 70 [P_IOB_Data]=R1; //CS_N=0,ALE=0,WR_N=1,RD_N=1,RESET_N=1,INT_N=1
00008B03 88 90 pop R1,R1 from [sp];
00008B04 90 9A retf;
.endp;
//====================================================================
// 函 数: F_Interrupt_On()
// 语 法: void F_Interrupt_On(void) (for c)
// 描 述: 开中断函数
// 参 数: 无
// 返回值: 无
// 使用寄存器: 无
//=====================================================================
_F_Interrupt_On: .PROC
F_Interrupt_On:
00008B05 41 F1 int irq;
00008B06 90 9A retf;
.endp;
//====================================================================
// 函 数: F_Interrupt_Off()
// 语 法: void F_Interrupt_Off(void) (for c)
// 描 述: 开中断函数
// 参 数: 无
// 返回值: 无
// 使用寄存器: 无
//=====================================================================
_F_Interrupt_Off: .PROC
F_Interrupt_Off:
00008B07 40 F1 int off;
00008B08 90 9A retf;
.endp;
//====================================================================
// 函 数: F_Delay()
// 语 法: void F_Delay(void) (for c)
// 描 述: 延时函数
// 参 数: 无
// 返回值: 无
//=====================================================================
_F_Delay: .proc
F_Delay:
00008B09 90 D4 push R1,R2 to [sp];
00008B0A 4F 94 R2=0x000f;
Loop1:
00008B0B 09 93 FF FF R1=0xffff;
Loop2:
00008B0D 41 22 R1-=1;
00008B0E 42 4E jnz Loop2;
00008B0F 41 24 R2-=1;
00008B10 46 4E jnz Loop1;
00008B11 00 EE nop;
00008B12 90 90 pop R1,R2 from [sp];
00008B13 90 9A retf;
.endp
//====================================================================
// 函 数: F_TurnOffFirstLed()
// 语 法: void F_TurnOffFirstLed(void) (for c)
// 描 述: 熄灭与IOA0相连的LED
// 参 数: 无
// 返回值: 无
//=====================================================================
_F_TurnOffFirstLed: .proc
00008B14 88 D2 push R1 to [sp];
00008B15 11 93 01 70 R1=[P_IOA_Buffer];
00008B17 09 B3 FE FF R1&=0xFFFE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -