📄 system.asm
字号:
//============================================================
// 文件名称: system.asm
// 功能描述: 端口操作函数
// 维护记录: 2005-10-14 v1.0
//============================================================
.INCLUDE SPCE061A.inc
.PUBLIC _SP_Export;
.PUBLIC _SP_Import;
.PUBLIC _SP_Init_IOB;
.PUBLIC _SP_Init_IOA;
.CODE
//============================================================================================
//函数: SP_INT_128Hz()
//语法:void SP_INT_128Hz()
//描述:128Hz时基信号中断的初始化函数
//参数:无
//返回:无
//=============================================================================================
.PUBLIC _SP_INT_128Hz;
_SP_INT_128Hz:
r1 = 0x0000;
[P_TimeBase_Setup]=r1 // TMB2选择128Hz //TMB1选择8Hz,但不起作用
r1 = 0x0001 //开中断IRQ6_TMB2
[P_INT_Ctrl]= r1
INT IRQ
RETF;
//============================================================================================
//函数: Int_IRQ()
//语法:void Int_IRQ()
//描述:开中断
//参数:无
//返回:无
//=============================================================================================
.PUBLIC _Int_IRQ
_Int_IRQ:
INT IRQ
RETF
//============================================================================================
//函数: Off_IRQ()
//语法:void Off_IRQ()
//描述:关中断
//参数:无
//返回:无
//============================================================================================
.PUBLIC _Off_IRQ
_Off_IRQ:
IRQ OFF ;
RETF;
//============================================================================================
//函数: ClearWatchdog()
//描述:清看门狗
//参数:无
//返回:无
//============================================================================================
.PUBLIC _F_ClearWatchdog ;
_F_ClearWatchdog: .PROC
r1 = 0x0001;
[P_Watchdog_Clear] = r1;
RETF
.ENDP
//////////////////////////////////////////////////////////////////
//
//////////////////////////////////////////////////////////////////
_SP_Init_IOA: .PROC
PUSH BP,BP TO [SP];
BP = SP + 1;
PUSH R1,R1 TO [SP];
R1 = [BP+3]; // Port direction
[P_IOA_Dir] = R1;
R1 = [BP+4];
[P_IOA_Data] = R1;
R1 = [BP+5];
[P_IOA_Attrib] = R1;
POP R1,R1 FROM [SP];
POP BP,BP FROM [SP];
RETF;
.ENDP
//////////////////////////////////////////////////////////////////
// SP_Inti_IOB
//////////////////////////////////////////////////////////////////
_SP_Init_IOB: .PROC
PUSH BP,BP TO [SP];
BP = SP + 1;
PUSH R1,R1 TO [SP];
R1 = [BP+3]; // Port direction
[P_IOB_Dir] = R1;
R1 = [BP+4];
[P_IOB_Data] = R1;
R1 = [BP+5];
[P_IOB_Attrib] = R1;
POP R1,R1 FROM [SP];
POP BP,BP FROM [SP];
RETF;
.ENDP
_SP_Import: .PROC
PUSH BP,BP TO [SP];
BP = SP + 1;
PUSH R1,R2 TO [SP];
R1 = [BP+3]; // Port Number
R2 = [BP+4]; // Data Buffer Pointer
R1 = [R1] ;
[R2] = R1 ;
POP R1,R2 FROM [SP];
POP BP,BP FROM [SP];
RETF;
.ENDP
_SP_Export: .PROC
PUSH BP,BP TO [SP];
BP = SP + 1;
PUSH R1,R2 TO [SP];
R1 = [BP+3]; // Port Number
R2 = [BP+4]; // Value
[R1] = R2 ;
POP R1,R2 FROM [SP];
POP BP,BP FROM [SP];
RETF;
.ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -