📄 os_tickisr.asm
字号:
.page
.text
_OSTickISR:
.ref _OSTimeTick
.ref _OSIntEnter
.ref _OSTCBCur
.ref _OSIntExit
.ref _OSIntCtxFlag
.ref _OSIntCtxSwExe
.ref _PieCtrlRegs
.global _OSTickISR
PUSH RPC
; PUSH XAR7
; PUSH XAR6
; PUSH XAR5
; PUSH XAR4
; PUSH XAR3
; PUSH XAR2
; PUSH AR1H:AR0H
; PUSH XT
CLRC PAGE0,OVM
;MOV AL, #0X01
;MOV *(0:0xce1), @AL ;手动清除中断应答寄存器中标志位
MOVW DP,#_PieCtrlRegs+1
MOV @_PieCtrlRegs+1,#1;PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
;MOVW DP,#_OSIntNesting ;提示uc/OS-II 进入中断
;INC @_OSIntNesting ;
LCR _OSIntEnter
LCR _OSTimeTick
LCR _OSIntExit
;判断是否有抢占发生,有则进行任务切换
CMP @_OSIntCtxFlag, #1 ;并保存本次任务的现场
SB BACK, NEQ
MOVW DP,#_OSTCBCur ; OSTCBCur->OSTCBStkPtr = SP
MOVL XAR4,@_OSTCBCur ;
MOV AL,SP
MOV *+XAR4[0],AL ; SAVE the context
SUB @_OSIntCtxFlag, #1 ;CLEAR THE _OSIntCtxFlag
LC _OSIntCtxSwExe
; NASP
BACK:
POP RPC
; POP AR1H:AR0H
; POP XAR2
; POP XAR3
; POP XAR4
; POP XAR5
; POP XAR6
; POP XAR7
IRET
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -