📄 sw_int.src
字号:
; .\OBJ\sw_int.SRC generated from: sw_int.c
; COMPILER INVOKED BY:
; C:\Keil3\C51\BIN\C51.EXE sw_int.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND NOPRINT SRC(.\OBJ\sw_int.SRC)
$NOMOD51
NAME SW_INT
P1M0 DATA 091H
P1M1 DATA 092H
P0 DATA 080H
P3M0 DATA 0B1H
P1 DATA 090H
P3M1 DATA 0B2H
P2 DATA 0A0H
P3 DATA 0B0H
T0 BIT 0B0H.4
AC BIT 0D0H.6
T1 BIT 0B0H.5
ISP_TRIG DATA 0E6H
EA BIT 0A8H.7
SPCTL DATA 085H
CF BIT 0D8H.7
CH DATA 0F9H
IE DATA 0A8H
CL DATA 0E9H
CCAP0H DATA 0FAH
CCAP1H DATA 0FBH
CR BIT 0D8H.6
CCAP0L DATA 0EAH
RD BIT 0B0H.7
CCAP1L DATA 0EBH
CCAPM0 DATA 0DAH
CCAPM1 DATA 0DBH
ES BIT 0A8H.4
IP DATA 0B8H
EPCA BIT 0A8H.6
RI BIT 098H.0
INT0 BIT 0B0H.2
CY BIT 0D0H.7
TI BIT 098H.1
INT1 BIT 0B0H.3
ISP_CMD DATA 0E5H
PS BIT 0B8H.4
SP DATA 081H
CMOD DATA 0D9H
CCON DATA 0D8H
OV BIT 0D0H.2
WR BIT 0B0H.6
ADC_CONTR DATA 0C5H
PCON DATA 087H
SBUF DATA 099H
ISP_ADDRH DATA 0E3H
SCON DATA 098H
TCON DATA 088H
TMOD DATA 089H
ISP_ADDRL DATA 0E4H
IE0 BIT 088H.1
IE1 BIT 088H.3
AUXR DATA 08EH
B DATA 0F0H
ADC_DATA DATA 0C6H
ACC DATA 0E0H
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
TF1 BIT 088H.7
RB8 BIT 098H.2
TH0 DATA 08CH
EX0 BIT 0A8H.0
IT0 BIT 088H.0
TH1 DATA 08DH
TB8 BIT 098H.3
EX1 BIT 0A8H.2
IT1 BIT 088H.2
P BIT 0D0H.0
SM0 BIT 098H.7
TL0 DATA 08AH
SM1 BIT 098H.6
TL1 DATA 08BH
SM2 BIT 098H.5
PT0 BIT 0B8H.1
PT1 BIT 0B8H.3
RS0 BIT 0D0H.3
ISP_CONTR DATA 0E7H
TR0 BIT 088H.4
RS1 BIT 0D0H.4
TR1 BIT 088H.6
PX0 BIT 0B8H.0
WDT_CONTR DATA 0E1H
PX1 BIT 0B8H.2
IDLE_CLK DATA 0C7H
DPH DATA 083H
pinLed BIT 090H.4
DPL DATA 082H
SPSTAT DATA 084H
IPH DATA 0B7H
REN BIT 098H.4
ISP_DATA DATA 0E2H
RXD BIT 0B0H.0
TXD BIT 0B0H.1
F0 BIT 0D0H.5
PCAPWM0 DATA 0F2H
PSW DATA 0D0H
PCAPWM1 DATA 0F3H
CCF0 BIT 0D8H.0
CCF1 BIT 0D8H.1
SPDAT DATA 086H
?PR?_?OsTaskSwitch?SW_INT SEGMENT CODE INBLOCK
?PR?_?OsIntExit?SW_INT SEGMENT CODE INBLOCK
?PR?IR_CaptureInt6?SW_INT SEGMENT CODE INBLOCK
?PR?SysTimer0?SW_INT SEGMENT CODE INBLOCK
?PR?UartISR?SW_INT SEGMENT CODE INBLOCK
?PR?_?OSTaskSW?SW_INT SEGMENT CODE INBLOCK
?PR?_?ISRAdrFun?SW_INT SEGMENT CODE INBLOCK
?DT?SW_INT SEGMENT DATA
EXTRN DATA (sysTimeTick)
EXTRN BIT (gOsMsgIntShed)
EXTRN CODE (_?SRL_RevChar)
EXTRN DATA (gOs)
EXTRN BIT (gOsShedLock)
EXTRN CODE (_?OsDealDelay)
EXTRN DATA (gOsIntLevel)
EXTRN CODE (Timer10msProc)
EXTRN CODE (_?IR_Decode)
EXTRN DATA (?C_IBP)
PUBLIC sys10ms
PUBLIC _?ISRAdrFun
PUBLIC _?OSTaskSW
PUBLIC UartISR
PUBLIC SysTimer0
PUBLIC IR_CaptureInt6
PUBLIC _?OsIntExit
PUBLIC _?OsTaskSwitch
RSEG ?DT?SW_INT
sys10ms: DS 1
;
; //////////////////////////////////////////////////////////////////
; //
; // Copyright (c) 2006-2010 walnutcy
; // All Right Reserved.
; //
; // $Author walnutcy
; // $Email walnutcy@163.com
; // $Version v1.0
; // $FileName
; // $Since
; // $Log
; //
; // DESCRIPTION
; //
; // History:
; // <author> <time> <version > <desc>
; // walnutcy 2006-11-22 0.1 建立
; //////////////////////////////////////////////////////////////////
;
; #include "includes.h"
;
; U8 sys10ms;
;
;
; #pragma asm
;/////////////////////////////////////////////////
;////////add by walnutcy 2006-11-22
; PUBLIC PUSHALL
PUSHALL MACRO
;;;;;;;;;;;;;;;;;;;;;;
PUSH ACC
PUSH B
PUSH PSW
MOV PSW,#0x00
PUSH DPL
PUSH DPH
PUSH 0x00
PUSH 0x01
PUSH 0x02
PUSH 0x03
PUSH 0x04
PUSH 0x05
PUSH 0x06
PUSH 0x07
;;;;;;;;;;;;;;;;;;;;;;;;;;
ENDM
POPALL MACRO
;;;;;;;;;;;;;;;;;;;;
POP 0x07
POP 0x06
POP 0x05
POP 0x04
POP 0x03
POP 0x02
POP 0x01
POP 0x00
POP DPH
POP DPL
POP PSW
POP B
POP ACC
;;;;;;;;;;;;;;;;;;;;;;;;
ENDM
;/////////////////////////////////////////////////
; #pragma endasm
;
; void OsTaskSwitch (void) REENTRANT
RSEG ?PR?_?OsTaskSwitch?SW_INT
_?OsTaskSwitch:
USING 0
; SOURCE LINE # 69
DEC ?C_IBP
DEC ?C_IBP
DEC ?C_IBP
; {
; U8 tmp;
; U8 tmpsp1;
; U8 tmpsp2;
; if (gOsShedLock)
; SOURCE LINE # 74
JNB gOsShedLock,$ + 5H
AJMP ?C0002
; { return;
; SOURCE LINE # 75
; }
; SOURCE LINE # 76
?C0001:
; __asm POP DPL
POP DPL
; __asm POP DPH
POP DPH
; if (1==gOsIntLevel)
; SOURCE LINE # 79
MOV A,gOsIntLevel
CJNE A,#01H,?C0003
; {
; SOURCE LINE # 80
; tmpsp1 = DPL;
; SOURCE LINE # 81
MOV R0,?C_IBP
INC R0
MOV @R0,DPL
; tmpsp2 = DPH;
; SOURCE LINE # 82
MOV R0,?C_IBP
INC R0
INC R0
MOV @R0,DPH
; __asm POP DPL
POP DPL
; __asm POP DPH
POP DPH
;
; }
; SOURCE LINE # 86
?C0003:
; tmp = gOs.currTask;
; SOURCE LINE # 87
MOV R0,?C_IBP
MOV @R0,gOs+01FH
; gOs.tcb[tmp].sp = SP;
; SOURCE LINE # 88
MOV A,@R0
MOV R7,A
MOV B,#07H
MUL AB
ADD A,#LOW (gOs+02H)
MOV R0,A
MOV @R0,SP
;
; if (OS_TASK_RUN==gOs.tcb[tmp].state)
; SOURCE LINE # 90
MOV A,R7
MOV B,#07H
MUL AB
ADD A,#LOW (gOs+07H)
MOV R0,A
MOV A,@R0
MOV R4,A
INC R0
MOV A,@R0
MOV R5,A
MOV A,R4
SWAP A
MOV R0,A
ANL A,#0F0H
XCH A,R0
MOV A,R5
SWAP A
ANL A,#0FH
ORL A,R0
ANL A,#0FH
XRL A,#03H
JNZ ?C0004
; {
; SOURCE LINE # 91
; gOs.tcb[tmp].state = OS_TASK_RDY;
; SOURCE LINE # 92
MOV R0,?C_IBP
MOV A,@R0
MOV B,#07H
MUL AB
ADD A,#LOW (gOs+07H)
MOV R0,A
MOV R6,AR4
MOV A,R5
ANL A,#0FH
ORL A,#010H
MOV @R0,AR6
INC R0
MOV @R0,A
; }
; SOURCE LINE # 93
?C0004:
; for(tmp=0;tmp<OS_TASK_MAX_NUM;tmp++)
; SOURCE LINE # 94
MOV R0,?C_IBP
CLR A
MOV @R0,A
?C0005:
MOV R0,?C_IBP
MOV A,@R0
MOV R7,A
CLR C
SUBB A,#04H
JNC ?C0006
; {
; SOURCE LINE # 95
; if (gOs.osPrio&(1<<tmp))
; SOURCE LINE # 96
MOV A,#01H
MOV R6,#00H
MOV R0,AR7
INC R0
SJMP ?C0029
?C0028:
CLR C
RLC A
XCH A,R6
RLC A
XCH A,R6
?C0029:
DJNZ R0,?C0028
MOV R7,A
MOV A,gOs
ANL A,R6
MOV R6,A
MOV A,gOs+01H
ANL A,R7
ORL A,R6
JZ ?C0007
; {
; SOURCE LINE # 97
; if (OS_TASK_RDY==gOs.tcb[tmp].state)
; SOURCE LINE # 98
MOV R0,?C_IBP
MOV A,@R0
MOV R5,A
MOV B,#07H
MUL AB
ADD A,#LOW (gOs+07H)
MOV R0,A
MOV A,@R0
MOV R6,A
INC R0
MOV A,@R0
MOV R7,A
MOV A,R6
SWAP A
MOV R0,A
ANL A,#0F0H
XCH A,R0
MOV A,R7
SWAP A
ANL A,#0FH
ORL A,R0
ANL A,#0FH
XRL A,#01H
JNZ ?C0007
; {
; SOURCE LINE # 99
; gOs.tcb[tmp].state = OS_TASK_RDY;
; SOURCE LINE # 100
MOV A,R5
MOV B,#07H
MUL AB
ADD A,#LOW (gOs+07H)
MOV R0,A
PUSH AR0
MOV A,@R0
MOV R6,A
INC R0
MOV A,@R0
ANL A,#0FH
ORL A,#010H
POP AR0
MOV @R0,AR6
INC R0
MOV @R0,A
; gOs.currTask = tmp;
; SOURCE LINE # 101
MOV gOs+01FH,R5
; SP = gOs.tcb[tmp].sp;
; SOURCE LINE # 102
MOV R0,?C_IBP
MOV A,@R0
MOV B,#07H
MUL AB
ADD A,#LOW (gOs+02H)
MOV R0,A
MOV A,@R0
MOV SP,A
; break;
; SOURCE LINE # 103
SJMP ?C0006
; }
; SOURCE LINE # 104
; }
; SOURCE LINE # 105
; }
; SOURCE LINE # 106
?C0007:
MOV R0,?C_IBP
INC @R0
SJMP ?C0005
?C0006:
; __asm PUSH DPH
PUSH DPH
; __asm PUSH DPL
PUSH DPL
; if (1==gOsIntLevel)
; SOURCE LINE # 109
MOV A,gOsIntLevel
CJNE A,#01H,?C0002
; {
; SOURCE LINE # 110
; DPH = tmpsp2;
; SOURCE LINE # 111
MOV R0,?C_IBP
INC R0
INC R0
MOV A,@R0
MOV DPH,A
; DPL = tmpsp1;
; SOURCE LINE # 112
MOV R0,?C_IBP
INC R0
MOV A,@R0
MOV DPL,A
; __asm PUSH DPH
PUSH DPH
; __asm PUSH DPL
PUSH DPL
; }
; SOURCE LINE # 115
; }
; SOURCE LINE # 116
?C0002:
INC ?C_IBP
INC ?C_IBP
INC ?C_IBP
RET
; END OF _?OsTaskSwitch
;
; void OsIntExit (void) REENTRANT
RSEG ?PR?_?OsIntExit?SW_INT
_?OsIntExit:
USING 0
; SOURCE LINE # 118
; {
; EnterCritical();
; SOURCE LINE # 120
CLR EA
; if (gOs.taskNum>1)
; SOURCE LINE # 121
MOV A,gOs+01EH
SETB C
SUBB A,#01H
JC ?C0011
; {
; SOURCE LINE # 122
; if (0==gOsMsgIntShed)
; SOURCE LINE # 123
JB gOsMsgIntShed,?C0012
; { ExitCritical();
; SOURCE LINE # 124
SETB EA
RET
; return;
; }
; SOURCE LINE # 126
?C0012:
; gOsMsgIntShed = 0;
; SOURCE LINE # 127
CLR gOsMsgIntShed
; if (1==gOsIntLevel)
; SOURCE LINE # 128
MOV A,gOsIntLevel
CJNE A,#01H,?C0011
; {
; SOURCE LINE # 129
; OsTaskSwitch();
; SOURCE LINE # 130
LCALL _?OsTaskSwitch
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -