📄 os_cpu_c.src
字号:
CLR A
MOV B,#01H
LCALL ?C?ILDIX
MOV R1,B
MOV R2,A
MOV A,#01H
LCALL ?C?CSTPTR
; *stk++ = 0x02; //R2
; SOURCE LINE # 88
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
CLR A
MOV B,#01H
LCALL ?C?ILDIX
MOV R1,B
MOV R2,A
MOV A,#02H
LCALL ?C?CSTPTR
; *stk++ = 0x03; //R3
; SOURCE LINE # 89
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
CLR A
MOV B,#01H
LCALL ?C?ILDIX
MOV R1,B
MOV R2,A
MOV A,#03H
LCALL ?C?CSTPTR
; *stk++ = 0x04; //R4
; SOURCE LINE # 90
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
CLR A
MOV B,#01H
LCALL ?C?ILDIX
MOV R1,B
MOV R2,A
MOV A,#04H
LCALL ?C?CSTPTR
; *stk++ = 0x05; //R5
; SOURCE LINE # 91
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
CLR A
MOV B,#01H
LCALL ?C?ILDIX
MOV R1,B
MOV R2,A
MOV A,#05H
LCALL ?C?CSTPTR
; *stk++ = 0x06; //R6
; SOURCE LINE # 92
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
CLR A
MOV B,#01H
LCALL ?C?ILDIX
MOV R1,B
MOV R2,A
MOV A,#06H
LCALL ?C?CSTPTR
; *stk++ = 0x07; //R7
; SOURCE LINE # 93
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
CLR A
MOV B,#01H
LCALL ?C?ILDIX
MOV R1,B
MOV R2,A
MOV A,#07H
LCALL ?C?CSTPTR
; //不用保存SP,任务切换时根据用户堆栈长度计算得出。
; *stk++ = (INT16U) (ptos+MaxStkSize) >> 8; //?C_XBP 仿真堆栈指针高8位
; SOURCE LINE # 95
MOV DPTR,#09H
LCALL ?C?XBPOFF
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
ADD A,#064H
CLR A
ADDC A,R2
MOV R7,A
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
CLR A
MOV B,#01H
LCALL ?C?ILDIX
MOV R1,B
MOV R2,A
MOV A,R7
LCALL ?C?CSTPTR
; *stk++ = (INT16U) (ptos+MaxStkSize) & 0xFF; //?C_XBP 仿真堆栈指针低8位
; SOURCE LINE # 96
MOV DPTR,#09H
LCALL ?C?XBPOFF
INC DPTR
INC DPTR
MOVX A,@DPTR
ADD A,#064H
MOV R1,A
MOV R7,AR1
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R3,A
INC DPTR
CLR A
MOV B,#01H
LCALL ?C?ILDIX
MOV R1,B
MOV R2,A
MOV A,R7
LCALL ?C?CSTPTR
;
; return ((void *)ptos);
; SOURCE LINE # 98
MOV DPTR,#09H
LCALL ?C?XBPOFF
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
; }
; SOURCE LINE # 99
?C0001:
MOV DPTR,#0EH
LJMP ?C?ADDXBP
; END OF _?OSTaskStkInit
;
; #if OS_CPU_HOOKS_EN
; /*
; *********************************************************************************************************
; * 任务创建钩挂函数
; *
; * 描述 : 任务创建时调用
; *
; * 参数 : ptcb是指向将被创建任务的任务控制块的指针。
; *
; * 注意 : 1) 调用期间中断被禁止
; *********************************************************************************************************
; */
; void OSTaskCreateHook (OS_TCB *ptcb) reentrant
RSEG ?PR?_?OSTaskCreateHook?OS_CPU_C
_?OSTaskCreateHook:
USING 0
; SOURCE LINE # 113
MOV DPTR,#0FFFDH
LCALL ?C?ADDXBP
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
; {
; ptcb = ptcb; /* Prevent compiler warning */
; SOURCE LINE # 115
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R1,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
XCH A,R1
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
; }
; SOURCE LINE # 116
MOV DPTR,#03H
LJMP ?C?ADDXBP
; END OF _?OSTaskCreateHook
;
;
; /*
; *********************************************************************************************************
; * 任务删除钩挂函数
; *
; * 描述 : 任务删除时调用
; *
; * 参数 : ptcb是指向将被删除任务的任务控制块的指针。
; *
; * 注意 : 1) 调用期间中断被禁止
; *********************************************************************************************************
; */
; void OSTaskDelHook (OS_TCB *ptcb) reentrant
RSEG ?PR?_?OSTaskDelHook?OS_CPU_C
_?OSTaskDelHook:
USING 0
; SOURCE LINE # 130
MOV DPTR,#0FFFDH
LCALL ?C?ADDXBP
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
; {
; ptcb = ptcb; /* Prevent compiler warning */
; SOURCE LINE # 132
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R1,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
XCH A,R1
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
; }
; SOURCE LINE # 133
MOV DPTR,#03H
LJMP ?C?ADDXBP
; END OF _?OSTaskDelHook
;
; /*
; *********************************************************************************************************
; * 任务切换钩挂函数
; *
; * 描述 : 执行任务切换时调用。这允许你在上下文切换期间执行其它操作。
; *
; * 参数 : 无
; *
; * 注意 : 1) 调用期间中断被禁止
; * 2) 假定全局指针'OSTCBHighRdy'已经指向了将要被换入的任务控制块(即:最高优先级任务),并且
; * 'OSTCBCur'指向了将被换出的任务(即:当前任务)。
; *********************************************************************************************************
; */
; void OSTaskSwHook (void) reentrant
RSEG ?PR?_?OSTaskSwHook?OS_CPU_C
_?OSTaskSwHook:
; SOURCE LINE # 148
; {
; }
; SOURCE LINE # 150
RET
; END OF _?OSTaskSwHook
;
; /*
; *********************************************************************************************************
; * 统计任务钩挂函数
; *
; * 描述 : 这个函数每秒钟被uC/OS-II统计任务调用。这么做使你的应用程序可以增加统计任务的功能。
; *
; * 注意 : 无
; *********************************************************************************************************
; */
; void OSTaskStatHook (void) reentrant
RSEG ?PR?_?OSTaskStatHook?OS_CPU_C
_?OSTaskStatHook:
; SOURCE LINE # 161
; {
; }
; SOURCE LINE # 163
RET
; END OF _?OSTaskStatHook
;
; /*
; *********************************************************************************************************
; * 定时钩挂函数
; *
; * 描述 : 本函数每一滴答被调用一次。
; *
; * 参数 : 无
; *
; * 注意 : 1) 在本调用期间中断可以或不可以使能。
; *********************************************************************************************************
; */
; void OSTimeTickHook (void) reentrant
RSEG ?PR?_?OSTimeTickHook?OS_CPU_C
_?OSTimeTickHook:
; SOURCE LINE # 176
; {
; }
; SOURCE LINE # 178
RET
; END OF _?OSTimeTickHook
; #endif
;
; //初始化定时器2
;
; void InitTimer(void) reentrant //SYS CK
RSEG ?PR?_?InitTimer?OS_CPU_C
_?InitTimer:
; SOURCE LINE # 183
; {
; TMR3RLL = 0xDC;
; SOURCE LINE # 185
MOV TMR3RLL,#0DCH
; TMR3RLH = 0x00;
; SOURCE LINE # 186
CLR A
MOV TMR3RLH,A
; TMR3H = TMR3RLH;
; SOURCE LINE # 187
MOV TMR3H,TMR3RLH
; TMR3L = TMR3RLL;
; SOURCE LINE # 188
MOV TMR3L,TMR3RLL
; TMR3CN = 0x06;
; SOURCE LINE # 189
MOV TMR3CN,#06H
; }
; SOURCE LINE # 190
RET
; END OF _?InitTimer
; void config (void)
RSEG ?PR?config?OS_CPU_C
config:
USING 0
; SOURCE LINE # 191
; {
; SOURCE LINE # 192
;
; int n = 0;
; SOURCE LINE # 194
;---- Variable 'n?740' assigned to Register 'R6/R7' ----
CLR A
MOV R7,A
MOV R6,A
;
; WDTCN = 0x07;
; SOURCE LINE # 196
MOV WDTCN,#07H
; WDTCN = 0xA5;
; SOURCE LINE # 197
MOV WDTCN,#0A5H
; // WDTCN = 0xde; //STOP WDT
; // WDTCN = 0xad; //false WDT
;
;
; XBR0 = 0x05;
; SOURCE LINE # 202
MOV XBR0,#05H
; XBR1 = 0x00;
; SOURCE LINE # 203
MOV XBR1,A
; XBR2 = 0x46;
; SOURCE LINE # 204
MOV XBR2,#046H
; // Select Pin I/0
;
; P0MDOUT = 0x11;
; SOURCE LINE # 207
MOV P0MDOUT,#011H
; P1MDOUT = 0x00;
; SOURCE LINE # 208
MOV P1MDOUT,A
; P2MDOUT = 0x00;
; SOURCE LINE # 209
MOV P2MDOUT,A
; P3MDOUT = 0x00;
; SOURCE LINE # 210
MOV P3MDOUT,A
; P74OUT = 0x00;
; SOURCE LINE # 211
MOV P74OUT,A
;
; P1MDIN = 0xFF;
; SOURCE LINE # 213
MOV P1MDIN,#0FFH
;
;
; // Port 0
; // P0.0 = UART TX0
; // P0.1 = UART RX0
; // P0.2 = SMBus SDA
; // P0.3 = SMBus SCL
; // P0.4 = UART TX1
; // P0.5 = UART RX1
; // P0.6 = BEEP
; // P0.7 = LED
;
;
; // Port 2 key
;
;
; // Port 3 key
; EMI0TC=0xff;
; SOURCE LINE # 231
MOV EMI0TC,#0FFH
;
; EMI0CF = 0x30;
; SOURCE LINE # 233
MOV EMI0CF,#030H
;
; OSCXCN = 0x67;
; SOURCE LINE # 235
MOV OSCXCN,#067H
; for (;n < 255; n++) ;
; SOURCE LINE # 236
?C0008:
INC R7
CJNE R7,#00H,?C0014
INC R6
?C0014:
MOV A,R7
CPL A
ORL A,R6
JNZ ?C0008
?C0011:
; while ( (OSCXCN & 0x80) == 0 );
; SOURCE LINE # 237
MOV A,OSCXCN
JNB ACC.7,?C0011
?C0012:
;
; OSCICN = 0x08;
; SOURCE LINE # 239
MOV OSCICN,#08H
; PCON = 0x00;
; SOURCE LINE # 240
CLR A
MOV PCON,A
;
; SMB0CN = 0x44;
; SOURCE LINE # 242
MOV SMB0CN,#044H
; SMB0ADR = 0XFE;
; SOURCE LINE # 243
MOV SMB0ADR,#0FEH
; SMB0CR = -19; //500k syclk/(256-SMB0CR+2.5)/2
; SOURCE LINE # 244
MOV SMB0CR,#0EDH
;
;
;
; /*
; SCON1 = 0x50; //com1
; SADEN1 = 0x00;
; SADDR1 = 0x00;
;
; RCAP4H = RCAP2H;
; RCAP4L = RCAP2L;
; TH4 = RCAP4H;
; TL4 = RCAP4L;
; T4CON = 0x34;
; */
;
; RCAP2H = 0XFF;
; SOURCE LINE # 260
MOV RCAP2H,#0FFH
; RCAP2L = 0XF4 ; //57600
; SOURCE LINE # 261
MOV RCAP2L,#0F4H
; TH2 = RCAP2H;
; SOURCE LINE # 262
MOV TH2,RCAP2H
; TL2 = RCAP2L;
; SOURCE LINE # 263
MOV TL2,RCAP2L
; T2CON = 0x34;
; SOURCE LINE # 264
MOV T2CON,#034H
; ES0 =1;
; SOURCE LINE # 265
SETB ES0
; SCON0=0x50;
; SOURCE LINE # 266
MOV SCON0,#050H
;
; IP = 0x00;
; SOURCE LINE # 268
MOV IP,A
;
; EIE1 = 0x02; //smb int
; SOURCE LINE # 270
MOV EIE1,#02H
; EIP1 = 0x02;
; SOURCE LINE # 271
MOV EIP1,#02H
;
; EIE2 = 0x01; //timer3 int
; SOURCE LINE # 273
MOV EIE2,#01H
; EIP2 = 0x00;
; SOURCE LINE # 274
MOV EIP2,A
;
; }
; SOURCE LINE # 276
RET
; END OF config
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -