📄 os_cpu.lis
字号:
00A8 BF93 PUSH R27
00AA AF93 PUSH R26
00AC 0F92 PUSH R0
00AE 1F92 PUSH R1
00B0 2F92 PUSH R2
00B2 3F92 PUSH R3
00B4 4F92 PUSH R4
00B6 5F92 PUSH R5
00B8 FDB7 IN R31,0x3d
00BA F0930000 STS _SaveSP,R31
00BE FEB7 IN R31,0x3e
00C0 F0930100 STS _SaveSP+1,R31
00C4 .dbline 70
; "PUSH R30\n"
; "PUSH R29\n"
; "PUSH R28\n"
; "PUSH R27\n"
; "PUSH R26\n"
;
; "PUSH R0\n"
; "PUSH R1\n"
; "PUSH R2\n"
; "PUSH R3\n"
; "PUSH R4\n"
; "PUSH R5\n"
;
; "IN R31,0x3d\n" //Save SPL
; "STS %SaveSP,R31\n"
; "IN R31,0x3e\n" //Save SPH
; "STS %SaveSP+1,R31\n"
;
; );
;
; OSTCB[OS_TASK_CrtPrio].OSStkTop = SaveSP; //Save the current task top.
00C4 20910000 lds R18,_OS_TASK_CrtPrio
00C8 3327 clr R19
00CA 05E0 ldi R16,5
00CC 10E0 ldi R17,0
00CE 00D0 rcall mpy16s
00D0 E02F mov R30,R16
00D2 F12F mov R31,R17
00D4 80E0 ldi R24,<_OSTCB
00D6 90E0 ldi R25,>_OSTCB
00D8 E80F add R30,R24
00DA F91F adc R31,R25
00DC 30900100 lds R3,_SaveSP+1
00E0 20900000 lds R2,_SaveSP
00E4 2082 std z+0,R2
00E6 3182 std z+1,R3
00E8 .dbline 72
;
; OS_TASK_CrtPrio=OS_TASK_HighPri;
00E8 20900000 lds R2,_OS_TASK_HighPri
00EC 20920000 sts _OS_TASK_CrtPrio,R2
00F0 .dbline 75
;
; // Load context from the stack
; SaveSP = OSTCB[OS_TASK_CrtPrio].OSStkTop; //load the high priority task task top.
00F0 222D mov R18,R2
00F2 3327 clr R19
00F4 05E0 ldi R16,5
00F6 10E0 ldi R17,0
00F8 00D0 rcall mpy16s
00FA E02F mov R30,R16
00FC F12F mov R31,R17
00FE 80E0 ldi R24,<_OSTCB
0100 90E0 ldi R25,>_OSTCB
0102 E80F add R30,R24
0104 F91F adc R31,R25
0106 2080 ldd R2,z+0
0108 3180 ldd R3,z+1
010A 30920100 sts _SaveSP+1,R3
010E 20920000 sts _SaveSP,R2
0112 .dbline 77
;
; asm("CLI\n"
0112 F894 CLI
0114 F0910000 LDS R31,_SaveSP
0118 FDBF OUT 0x3d,R31
011A F0910100 LDS R31,_SaveSP+1
011E FEBF OUT 0x3e,R31
0120 7894 SEI
0122 5F90 POP R5
0124 4F90 POP R4
0126 3F90 POP R3
0128 2F90 POP R2
012A 1F90 POP R1
012C 0F90 POP R0
012E AF91 POP R26
0130 BF91 POP R27
0132 CF91 POP R28
0134 DF91 POP R29
0136 EF91 POP R30
0138 FF91 POP R31
013A .dbline -2
013A .dbline 98
; "LDS R31,%SaveSP\n"
; "OUT 0x3d,R31\n"
; "LDS R31,%SaveSP+1\n"
; "OUT 0x3e,R31\n"
; "SEI\n"
;
; "POP R5\n"
; "POP R4\n"
; "POP R3\n"
; "POP R2\n"
; "POP R1\n"
; "POP R0\n"
;
; "POP R26\n"
; "POP R27\n"
; "POP R28\n"
; "POP R29\n"
; "POP R30\n"
; "POP R31\n"
; );
; }
013A L5:
013A .dbline 0 ; func end
013A 0895 ret
013C .dbfunc s OSInitSP _OSInitSP fI
.even
013C _OSInitSP::
013C .dbline -1
013C .dbline 101
; //Initial CPU SP for main() function stack.
; void OSInitSP(void)
; {
013C .dbline 102
; SaveSP = (INT16U)&TASK_main_PrioStk[MAX_STK_SIZE-1]; //load the high priority task task top.
013C 80E0 ldi R24,<_TASK_main_PrioStk+47
013E 90E0 ldi R25,>_TASK_main_PrioStk+47
0140 90930100 sts _SaveSP+1,R25
0144 80930000 sts _SaveSP,R24
0148 .dbline 103
; asm("POP R0\n"
0148 0F90 POP R0
014A 1F90 POP R1
014C F0910000 LDS R31,_SaveSP
0150 FDBF OUT 0x3d,R31
0152 F0910100 LDS R31,_SaveSP+1
0156 FEBF OUT 0x3e,R31
0158 1F92 PUSH R1
015A 0F92 PUSH R0
015C .dbline -2
015C .dbline 112
; "POP R1\n"
; "LDS R31,%SaveSP\n"
; "OUT 0x3d,R31\n"
; "LDS R31,%SaveSP+1\n"
; "OUT 0x3e,R31\n"
; "PUSH R1\n"
; "PUSH R0\n"
; );
; }
015C L6:
015C .dbline 0 ; func end
015C 0895 ret
015E .dbfunc s OSTickISR _OSTickISR fI
.even
015E _OSTickISR::
015E 00D0 rcall push_lset
0160 .dbline -1
0160 .dbline 116
;
; //OS Time Tick Interrupt,OS 时钟节拍中断.
; void OSTickISR(void)
; {
0160 .dbline 117
; TCNT0 = T0_TCNT0; // (256 - (T0_RELOAD & 0xff))
0160 8AE7 ldi R24,122
0162 82BF out 0x32,R24
0164 .dbline 118
; AppTickHook(); //Hook file for a time tick --- 用户每个时间节拍的钩子函数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -