?? os_cpu_c.src
字號:
MOV [-R0],R8
?SYMB '',$,96,18
MOV R8,#SEG _3
MOV [-R0],R8
?SYMB '',$,96,20
JMPS SEG _OSTaskBuildStk,_OSTaskBuildStk
?SYMB '',$,96,16
_3:
?SYMB '',$,102,7
?SYMB '',$,102,2
MOV R15,[R0+]
?SYMB '',$,96,14
MOV R14,R7
?SYMB 'R14R15',$,100,5
; os_cpu_c.c 81 return ((OS_STK *)stk);
?LINE 81
MOV R4,R14
MOV R5,R15
; os_cpu_c.c 82 }
?LINE 82
ADD R0,#06h
?SYMB '',$,96,8
MOV R6,[R0+]
?SYMB '',$,96,6
MOV R7,[R0+]
?SYMB '',$,96,4
MOV R8,[R0+]
?SYMB '',$,96,2
MOV R9,[R0+]
?SYMB '',$,96,0
MOV R3,[R0+]
MOV R2,[R0+]
ATOMIC #03h
PUSH R3
PUSH R2
RETS
?SYMB '',$,102,5
_OSTaskStkInit ENDP
?SYMB '',$,17,82
; os_cpu_c.c 83
; os_cpu_c.c 84 /*$PAGE*/
; os_cpu_c.c 85
; os_cpu_c.c 86 /*$PAGE*/
; os_cpu_c.c 87 #if OS_CPU_HOOKS_EN
; os_cpu_c.c 88 /*
; os_cpu_c.c 89 *********************************************************************************************************
; os_cpu_c.c 90 * TASK CREATION HOOK
; os_cpu_c.c 91 *
; os_cpu_c.c 92 * Description: This function is called when a task is created.
; os_cpu_c.c 93 *
; os_cpu_c.c 94 * Arguments : ptcb is a pointer to the task control block of the task being created.
; os_cpu_c.c 95 *
; os_cpu_c.c 96 * Note(s) : 1) Interrupts are disabled during this call.
; os_cpu_c.c 97 *********************************************************************************************************
; os_cpu_c.c 98 */
; os_cpu_c.c 99 void OSTaskCreateHook (OS_TCB *ptcb)
; os_cpu_c.c 100 {
?LINE 100
PUBLIC _OSTaskCreateHook
?SYMB 'OSTaskCreateHook',_OSTaskCreateHook,37,1
?SYMB '',100,8,34
_OSTaskCreateHook PROC FAR
?SYMB '',00H,95,0
; Locals:
;
; CSEs:
;
?SYMB '',01a0121H,38,304
; os_cpu_c.c 101 ptcb = ptcb; /* Prevent compiler warning */
; os_cpu_c.c 102 }
?LINE 102
MOV R3,[R0+]
MOV R2,[R0+]
ATOMIC #03h
PUSH R3
PUSH R2
RETS
_OSTaskCreateHook ENDP
?SYMB '',$,17,102
; os_cpu_c.c 103
; os_cpu_c.c 104
; os_cpu_c.c 105 /*
; os_cpu_c.c 106 *********************************************************************************************************
; os_cpu_c.c 107 * TASK DELETION HOOK
; os_cpu_c.c 108 *
; os_cpu_c.c 109 * Description: This function is called when a task is deleted.
; os_cpu_c.c 110 *
; os_cpu_c.c 111 * Arguments : ptcb is a pointer to the task control block of the task being deleted.
; os_cpu_c.c 112 *
; os_cpu_c.c 113 * Note(s) : 1) Interrupts are disabled during this call.
; os_cpu_c.c 114 *********************************************************************************************************
; os_cpu_c.c 115 */
; os_cpu_c.c 116 void OSTaskDelHook (OS_TCB *ptcb)
; os_cpu_c.c 117 {
?LINE 117
PUBLIC _OSTaskDelHook
?SYMB 'OSTaskDelHook',_OSTaskDelHook,37,1
?SYMB '',117,8,34
_OSTaskDelHook PROC FAR
?SYMB '',00H,95,0
; Locals:
;
; CSEs:
;
; os_cpu_c.c 118 ptcb = ptcb; /* Prevent compiler warning */
; os_cpu_c.c 119 }
?LINE 119
MOV R3,[R0+]
MOV R2,[R0+]
ATOMIC #03h
PUSH R3
PUSH R2
RETS
_OSTaskDelHook ENDP
?SYMB '',$,17,119
; os_cpu_c.c 120
; os_cpu_c.c 121 /*
; os_cpu_c.c 122 *********************************************************************************************************
; os_cpu_c.c 123 * TASK SWITCH HOOK
; os_cpu_c.c 124 *
; os_cpu_c.c 125 * Description: This function is called when a task switch is performed. This allows you to perform other
; os_cpu_c.c 126 * operations during a context switch.
; os_cpu_c.c 127 *
; os_cpu_c.c 128 * Arguments : none
; os_cpu_c.c 129 *
; os_cpu_c.c 130 * Note(s) : 1) Interrupts are disabled during this call.
; os_cpu_c.c 131 * 2) It is assumed that the global pointer 'OSTCBHighRdy' points to the TCB of the task that
; os_cpu_c.c 132 * will be 'switched in' (i.e. the highest priority task) and, 'OSTCBCur' points to the
; os_cpu_c.c 133 * task being switched out (i.e. the preempted task).
; os_cpu_c.c 134 *********************************************************************************************************
; os_cpu_c.c 135 */
; os_cpu_c.c 136 void OSTaskSwHook (void)
; os_cpu_c.c 137 {
?LINE 137
PUBLIC _OSTaskSwHook
?SYMB 'OSTaskSwHook',_OSTaskSwHook,37,1
?SYMB '',137,8,34
_OSTaskSwHook PROC FAR
?SYMB '',00H,95,0
; Locals:
;
; CSEs:
;
; os_cpu_c.c 138 }
?LINE 138
MOV R3,[R0+]
MOV R2,[R0+]
ATOMIC #03h
PUSH R3
PUSH R2
RETS
_OSTaskSwHook ENDP
?SYMB '',$,17,138
; os_cpu_c.c 139
; os_cpu_c.c 140 /*
; os_cpu_c.c 141 *********************************************************************************************************
; os_cpu_c.c 142 * STATISTIC TASK HOOK
; os_cpu_c.c 143 *
; os_cpu_c.c 144 * Description: This function is called every second by uC/OS-II's statistics task. This allows your
; os_cpu_c.c 145 * application to add functionality to the statistics task.
; os_cpu_c.c 146 *
; os_cpu_c.c 147 * Arguments : none
; os_cpu_c.c 148 *********************************************************************************************************
; os_cpu_c.c 149 */
; os_cpu_c.c 150 void OSTaskStatHook (void)
; os_cpu_c.c 151 {
?LINE 151
PUBLIC _OSTaskStatHook
?SYMB 'OSTaskStatHook',_OSTaskStatHook,37,1
?SYMB '',151,8,34
_OSTaskStatHook PROC FAR
?SYMB '',00H,95,0
; Locals:
;
; CSEs:
;
; os_cpu_c.c 152 }
?LINE 152
MOV R3,[R0+]
MOV R2,[R0+]
ATOMIC #03h
PUSH R3
PUSH R2
RETS
_OSTaskStatHook ENDP
?SYMB '',$,17,152
; os_cpu_c.c 153
; os_cpu_c.c 154 /*
; os_cpu_c.c 155 *********************************************************************************************************
; os_cpu_c.c 156 * TICK HOOK
; os_cpu_c.c 157 *
; os_cpu_c.c 158 * Description: This function is called every tick.
; os_cpu_c.c 159 *
; os_cpu_c.c 160 * Arguments : none
; os_cpu_c.c 161 *
; os_cpu_c.c 162 * Note(s) : 1) Interrupts may or may not be ENABLED during this call.
; os_cpu_c.c 163 *********************************************************************************************************
; os_cpu_c.c 164 */
; os_cpu_c.c 165 void OSTimeTickHook (void)
; os_cpu_c.c 166 {
?LINE 166
PUBLIC _OSTimeTickHook
?SYMB 'OSTimeTickHook',_OSTimeTickHook,37,1
?SYMB '',166,8,34
_OSTimeTickHook PROC FAR
?SYMB '',00H,95,0
; Locals:
;
; CSEs:
;
; os_cpu_c.c 167 }
?LINE 167
MOV R3,[R0+]
MOV R2,[R0+]
ATOMIC #03h
PUSH R3
PUSH R2
RETS
_OSTimeTickHook ENDP
?SYMB '',$,17,167
; os_cpu_c.c 168
; os_cpu_c.c 169
; os_cpu_c.c 170 #endif
; os_cpu_c.c 171
; os_cpu_c.c 172 /*
; os_cpu_c.c 173 *********************************************************************************************************
; os_cpu_c.c 174 * BUILD A TASK'S STACK AREA
; os_cpu_c.c 175 *
; os_cpu_c.c 176 * Description: This function is called by OSTaskStkInit to initialise the
; os_cpu_c.c 177 * stack frame of the task being created.
; os_cpu_c.c 178 *
; os_cpu_c.c 179 * Arguments : page is a pointer to the current task user stack page.
; os_cpu_c.c 180 *
; os_cpu_c.c 181 * offset is a pointer to the current task user stack offset.
; os_cpu_c.c 182 *
; os_cpu_c.c 183 * datapag is a pointer to a user supplied data area page when the task first executes.
; os_cpu_c.c 184 *
; os_cpu_c.c 185 * datapof is a pointer to a user supplied data area offset when the task first executes.
; os_cpu_c.c 186 *
; os_cpu_c.c 187 * Returns : None
; os_cpu_c.c 188 *********************************************************************************************************
; os_cpu_c.c 189 */
; os_cpu_c.c 190 void OSTaskBuildStk (INT16U page, INT16U offset, INT16U datapag, INT16U datapof)
; os_cpu_c.c 191 {
?LINE 191
PUBLIC _OSTaskBuildStk
?SYMB 'OSTaskBuildStk',_OSTaskBuildStk,37,1
?SYMB '',191,8,34
_OSTaskBuildStk PROC FAR
?SYMB '',00H,95,0
; @w1 = R12
; @w2 = R13
; @w3 = R14
; @w4 = R15
; Locals:
;
; CSEs:
; offset = R13
; datapof = R15
; page = R12
; datapag = R14
;
?SYMB 'page',4,99,272
?SYMB 'offset',3,99,272
?SYMB 'datapag',2,99,272
?SYMB 'datapof',1,99,272
?SYMB 'R12',$,100,4
?SYMB 'R13',$,100,3
?SYMB 'R14',$,100,2
?SYMB 'R15',$,100,1
?SYMB '',$,102,4
?SYMB '',$,102,3
?SYMB '',$,102,2
?SYMB '',$,102,1
; os_cpu_c.c 192 #pragma asm(@1=page, @2=offset, @3=datapag, @4=datapof)
?LINE 192
?LINE 265
; ; SAVE USED REGISTERS
PUSH R1
PUSH R2
PUSH R3
PUSH R4
PUSH R10
PUSH DPP1
; ; LOAD INITIAL TASK STACK.
MOV R4,R13 ; Get pointer to Task Stack
MOV DPP1,R12 ; Task Stack DPP1:R4
MOV R2,R14 ; Page pointer to passed parameter
MOV R3,R15 ; Offset pointer to passed parameter
; ; ADJUST THE TASK USER OFFSET POINTER
ADD R4,#10 ; Point at user stack offset
MOV R1,[R4] ; Get initial user offset pointer
SUB R1,#2Ch ; adjust user offset pointer to save task registers
MOV [R4],R1 ; Save true user offset pointer
MOV R4,R13 ; Reload current stack pointer
; ; INITIALISE REGISTER VALUES
SUB R1,R1 ; Set R1 to zero
MOV R10,#01111h ; R1 initialised to 1111
MOV [-R4],R10
MOV R10,#02222h ; R2 initialised to 2222
MOV [-R4],R10
MOV R10,#03333h ; R3 initialised to 3333
MOV [-R4],R10
MOV R10,#04444h ; R4 initialised to 4444
MOV [-R4],R10
MOV R10,#05555h ; R5 initialised to 5555
MOV [-R4],R10
MOV R10,#06666h ; R6 initialised to 6666
MOV [-R4],R10
MOV R10,#07777h ; R7 initialised to 7777
MOV [-R4],R10
MOV R10,#08888h ; R8 initialised to 8888
MOV [-R4],R10
MOV R10,#09999h ; R9 initialised to 9999
MOV [-R4],R10
MOV R10,#0AAAAh ; R10 initialised to AAAA
MOV [-R4],R10
MOV R10,#0BBBBh ; R11 initialised to BBBB
MOV [-R4],R10
MOV R10,R3 ; R12 initialised to point @ POF of pdata
MOV [-R4],R10
MOV R10,R2 ; R13 initialised to point @ PAG of pdata
MOV [-R4],R10
MOV R10,#0EEEEh ; R14 initialised to EEEE
MOV [-R4],R10
MOV R10,#0FFFFh ; R15 initialised to FFFF
MOV [-R4],R10
MOV R10,CP ; Get the Context Pointer (CP)
MOV [-R4],R10 ; Put it on the user stack
MOV R10,DPP3 ; Get Data Page Pointer 3 (DPP3)
MOV [-R4],R10 ; Put it on the user stack
MOV R10,DPP2 ; Get Data Page Pointer 2 (DPP2)
MOV [-R4],R10 ; Put it on the user stack
MOV R10,DPP0 ; Get Data Page Pointer 0 (DPP0)
MOV [-R4],R10 ; Put it on the user stack
MOV [-R4],R1 ; Set Multiply/Divide Control (MDC)
MOV [-R4],R1 ; Set Multiply/Divide High (MDH)
MOV [-R4],R1 ; Set Multiply/Divide Low (MDL)
; ; RESTORE USED REGISTERS
POP DPP1
POP R10
POP R4
POP R3
POP R2
POP R1
; os_cpu_c.c 265 #pragma endasm
; os_cpu_c.c 266 }
?LINE 266
MOV R3,[R0+]
MOV R2,[R0+]
ATOMIC #03h
PUSH R3
PUSH R2
RETS
_OSTaskBuildStk ENDP
?SYMB '',$,17,266
; os_cpu_c.c 267
; os_cpu_c.c 268 /*$PAGE*/
; os_cpu_c.c 269 /*
; os_cpu_c.c 270 *********************************************************************************************************
; os_cpu_c.c 271 * INITIALIZE SYSTEM TICK
; os_cpu_c.c 272 *
; os_cpu_c.c 273 * Description: This function is called to initialize and configure the system interrupt tick.
; os_cpu_c.c 274 *
; os_cpu_c.c 275 * Arguments : none
; os_cpu_c.c 276 *********************************************************************************************************
; os_cpu_c.c 277 */
; os_cpu_c.c 278 void OSTickISRInit (void)
; os_cpu_c.c 279 {
?LINE 279
PUBLIC _OSTickISRInit
?SYMB 'OSTickISRInit',_OSTickISRInit,37,1
?SYMB '',279,8,34
_OSTickISRInit PROC FAR
?SYMB '',00H,95,0
; Locals:
;
; CSEs:
;
; os_cpu_c.c 280 IEN=1; // allg. Interrupt freigeben
?LINE 280
BSET IEN
; os_cpu_c.c 281 T3CON=0x0; // Mode: Timer, Input Prescaler = 16 -> 26ms -> 38 times/sec,
?LINE 281
MOV T3CON,#00h
; os_cpu_c.c 282 T3IC=68; // Timer3 Prioritaet und Interrupt freigeben
?LINE 282
MOV T3IC,#044h
; os_cpu_c.c 283 T3R=1;
?LINE 283
BSET T3R
; os_cpu_c.c 284 }
?LINE 284
MOV R3,[R0+]
MOV R2,[R0+]
ATOMIC #03h
PUSH R3
PUSH R2
RETS
_OSTickISRInit ENDP
?SYMB '',$,17,284
OS_CPU_C_1_PR ENDS
C166_US SECTION DATA WORD GLBUSRSTACK 'CUSTACK'
DS 20
C166_US ENDS
REGDEF R0-R15
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -