?? os_viewa.s
字號:
;********************************************************************************************************
; uC/OS-II
; The Real-Time Kernel
;
; (c) Copyright 2002, Jean J. Labrosse, Weston, FL
; All Rights Reserved
;
;
; PAGED S12 Specific code
; (METROWERKS)
;
; File : OS_VIEW_A.S
; By : Eric Shufro
;
; Notes : THIS FILE *MUST* BE LINKED INTO NON_BANKED MEMORY!
;********************************************************************************************************
NON_BANKED: section
;********************************************************************************************************
; I/O PORT ADDRESSES
;********************************************************************************************************
PPAGE: equ $0030 ; Addres of PPAGE register (assuming MC9S12 (non XGATE part)
SCI0SR1: equ $00cc
;********************************************************************************************************
; PUBLIC DECLARATIONS
;********************************************************************************************************
xdef OSView_RxTxISR
;********************************************************************************************************
; EXTERNAL DECLARATIONS
;********************************************************************************************************
xref OSIntExit
xref OSIntNesting
xref OSTCBCur
xref OSView_RxTxISRHandler
xref OSView_IntSr
;********************************************************************************************************
; OSView ISR
;
; Description : This routine is the ISR for OSView. It calls an ISR handler to perform most of the
; the I/O operations from C. The ISR itself, like ALL other ISR's is coded in
; assembly so that the OS related stack pointer manipulation can be performed
; prior to calling the associated ISR Handler function.
;
; Arguments : none
;
; Notes : 1) All USER interrupts should be modeled EXACTLY like this where the only
; line to be modified is the call to your ISR_Handler and perhaps the call to
; the label name OSView_ISR1.
;********************************************************************************************************
OSView_RxTxISR:
;;;;;;;;;;;;;;;;
; ldaa SCI0SR1
; staa OSView_IntSr
ldaa PPAGE ; Get current value of PPAGE register
psha ; Push PPAGE register onto current task's stack
inc OSIntNesting ; Notify uC/OS-II about ISR
ldab OSIntNesting ; if (OSIntNesting == 1) {
cmpb #$01 ;
bne OSView_RxTxISR1 ;
ldy OSTCBCur ; OSTCBCur->OSTCBStkPtr = Stack Pointer
sts 0,y ; }
OSView_RxTxISR1:
call OSView_RxTxISRHandler ; Call the OS View ISR Handler
cli ; Enable interrupts to allow interrupt nesting
call OSIntExit ; Notify uC/OS-II about end of ISR
pula ; Get value of PPAGE register
staa PPAGE ; Store into CPU's PPAGE register
rti ; Return from interrupt, no higher priority tasks ready.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -