📄 system.asm
字号:
.include hardware.inc
.code
//void memset(void* addr,int value,unsigned int size);
.PUBLIC _System_Initial
.CODE
_System_Initial: .PROC
// R1 = 0x0000 ;
R1 = 0x0098
[P_SystemClock] = R1; // Initial System Clock, 24MHz, Fcpu=Fosc
R1 = 0x0000
[P_TimeBase_Setup] = R1; //
R1 = 0xFFFF
[P_IOA_Dir] = R1; // Port IOA input
[P_IOA_Attrib] = R1; //
R1 = 0x0000;
[P_IOA_Data] = R1; //
// R1 = 0xFFFF;
R1 = 0xc7ff;
[P_IOB_Dir] = R1; // Port IOB output
[P_IOB_Attrib] = R1; //
R1 = 0x0000;
[P_IOB_Data] = R1; //
[P_TimerA_Ctrl] = R1; //
[P_TimerB_Ctrl] = R1; //
[P_TimerA_Data] = R1; //
[P_TimerB_Data] = R1; //
// [P_Watchdog_Clear] = R1; //
[P_UART_Command1] = R1; //added by hs,2002.4.2
[P_UART_Command2] = R1; //added by hs,2002.4.2
[P_INT_Ctrl] = R1; // set interrupt control
R1 = 0xFFFF ;
[P_INT_Clear] = R1 ; // clear interrupt register
R1 = 0x0 ;
BP = SP
R1 = 0x2ff
R2 = 0xAAAA
loop:
[BP--] = R2
R1 = R1 -1
JNZ loop
_SpF_Init_HW_End:
Int irq
RETF;
.ENDP;
.ram
.public _hours,_mins,_secs,_hsec
.var _hours,_mins,_secs,_hsec;
//.external R_InterruptStatus
.code
.public _F_InitRTC
_F_InitRTC: .proc
r1 = 0;
[_hours] = r1;
[_mins] = r1;
[_secs] = r1;
[_hsec] = r1;
// r1 = [R_InterruptStatus];
r1 |= C_IRQ5_2Hz;
[P_INT_Ctrl] = r1;
// [R_InterruptStatus] = r1;
retf;
.endp
.external _nowt
.public _F_InitTcpTmr
_F_InitTcpTmr: .proc
r1 = 0
[_nowt] = r1
// r1 = [R_InterruptStatus]
r1 |= C_IRQ6_TMB1
[P_INT_Ctrl] = r1
// [R_InterruptStatus] = r1
retf
.endp
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -