📄 ucos_ii.lst
字号:
(0074) stks = (INT8U *)(ptos)-(OS_TASK_DEF_STK_SIZE-64);
0210 8588 LDD R24,8+Y
0211 8599 LDD R25,9+Y
0212 97C0 SBIW R24,0x30
0213 2EA8 MOV R10,R24
0214 2EB9 MOV R11,R25
(0075)
(0076) // the function address has an extra level of indirection. Fetch the
(0077) // actual address.
(0078) //
(0079) tmp = *(INT16U const *)task;
0215 2F06 MOV R16,R22
0216 2F17 MOV R17,R23
0217 D784 RCALL lpm16
0218 2F60 MOV R22,R16
0219 2F71 MOV R23,R17
(0080)
(0081) // 36 Bytes
(0082) *stks-- = (INT8U)tmp; //Put task start address on top of hardware stack
021A 2C2A MOV R2,R10
021B 2C3B MOV R3,R11
021C 2D82 MOV R24,R2
021D 2D93 MOV R25,R3
021E 9701 SBIW R24,1
021F 2DE2 MOV R30,R2
0220 2DF3 MOV R31,R3
0221 8360 STD R22,0+Z
(0083) *stks-- = (INT8U)(tmp >> 8);
0222 2E28 MOV R2,R24
0223 2E39 MOV R3,R25
0224 9701 SBIW R24,1
0225 2EA8 MOV R10,R24
0226 2EB9 MOV R11,R25
0227 D8DC RCALL 0x0B04
0228 D81F RCALL 0x0A48
(0084)
(0085) *stk-- = (INT8U)0x00; // R0 = 0x00
0229 2444 CLR R4
022A 2DE2 MOV R30,R2
022B 2DF3 MOV R31,R3
022C 8240 STD R4,0+Z
022D D81A RCALL 0x0A48
(0086) *stk-- = (INT8U)0x01;
022E E081 LDI R24,1
022F D810 RCALL <created procedures>
(0087) *stk-- = (INT8U)0x02;
0230 E082 LDI R24,2
0231 D80E RCALL <created procedures>
(0088) *stk-- = (INT8U)0x03;
0232 E083 LDI R24,3
0233 D80C RCALL <created procedures>
(0089) *stk-- = (INT8U)0x04;
0234 E084 LDI R24,4
0235 D80A RCALL <created procedures>
(0090) *stk-- = (INT8U)0x05;
0236 E085 LDI R24,5
0237 D808 RCALL <created procedures>
(0091) *stk-- = (INT8U)0x06;
0238 E086 LDI R24,6
0239 D806 RCALL <created procedures>
(0092) *stk-- = (INT8U)0x07;
023A E087 LDI R24,7
023B D804 RCALL <created procedures>
(0093) *stk-- = (INT8U)0x08;
023C E088 LDI R24,0x8
023D D802 RCALL <created procedures>
(0094) *stk-- = (INT8U)0x09;
023E E089 LDI R24,0x9
023F D800 RCALL <created procedures>
(0095) *stk-- = (INT8U)0x10;
0240 E180 LDI R24,0x10
0241 D7FE RCALL <created procedures>
(0096) *stk-- = (INT8U)0x11;
0242 E181 LDI R24,0x11
0243 D7FC RCALL <created procedures>
(0097) *stk-- = (INT8U)0x12;
0244 E182 LDI R24,0x12
0245 D7FA RCALL <created procedures>
(0098) *stk-- = (INT8U)0x13;
0246 E183 LDI R24,0x13
0247 D7F8 RCALL <created procedures>
(0099) *stk-- = (INT8U)0x14;
0248 E184 LDI R24,0x14
0249 D7F6 RCALL <created procedures>
(0100) *stk-- = (INT8U)0x15;
024A E185 LDI R24,0x15
024B 2DE2 MOV R30,R2
024C 2DF3 MOV R31,R3
024D 8380 STD R24,0+Z
(0101) tmp = (INT16U)pdata;
024E 2D6C MOV R22,R12
024F 2D7D MOV R23,R13
0250 D7F7 RCALL 0x0A48
(0102) *stk-- = (INT8U)tmp; //Simulate call to function with argument
0251 2DE2 MOV R30,R2
0252 2DF3 MOV R31,R3
0253 8360 STD R22,0+Z
0254 D7F3 RCALL 0x0A48
0255 D8AE RCALL 0x0B04
0256 D7F1 RCALL 0x0A48
(0103) *stk-- = (INT8U)(tmp >> 8);
(0104) *stk-- = (INT8U)0x18;
0257 E188 LDI R24,0x18
0258 D7E7 RCALL <created procedures>
(0105) *stk-- = (INT8U)0x19;
0259 E189 LDI R24,0x19
025A D7E5 RCALL <created procedures>
(0106) *stk-- = (INT8U)0x20;
025B E280 LDI R24,0x20
025C D7E3 RCALL <created procedures>
(0107) *stk-- = (INT8U)0x21;
025D E281 LDI R24,0x21
025E D7E1 RCALL <created procedures>
(0108) *stk-- = (INT8U)0x22;
025F E282 LDI R24,0x22
0260 D7DF RCALL <created procedures>
(0109) *stk-- = (INT8U)0x23;
0261 E283 LDI R24,0x23
0262 D7DD RCALL <created procedures>
(0110) *stk-- = (INT8U)0x24;
0263 E284 LDI R24,0x24
0264 D7DB RCALL <created procedures>
(0111) *stk-- = (INT8U)0x25;
0265 E285 LDI R24,0x25
0266 D7D9 RCALL <created procedures>
(0112) *stk-- = (INT8U)0x26;
0267 E286 LDI R24,0x26
0268 D7D7 RCALL <created procedures>
(0113) *stk-- = (INT8U)0x27;
0269 E287 LDI R24,0x27
026A D7D5 RCALL <created procedures>
(0114) // the heap pointer Y=R29:R28 will not be stored
(0115) *stk-- = (INT8U)0x30;
026B E380 LDI R24,0x30
026C D7D3 RCALL <created procedures>
(0116) *stk-- = (INT8U)0x31;
026D E381 LDI R24,0x31
026E D7D1 RCALL <created procedures>
(0117) *stk-- = (INT8U)0x3B;
026F E38B LDI R24,0x3B
0270 D7CF RCALL <created procedures>
(0118) *stk-- = (INT8U)0x80; //SREG = Interrupts enabled
0271 E880 LDI R24,0x80
0272 2DE2 MOV R30,R2
0273 2DF3 MOV R31,R3
0274 8380 STD R24,0+Z
(0119)
(0120) tmp = (INT16U)(stks);
0275 2D6A MOV R22,R10
0276 2D7B MOV R23,R11
0277 D7D0 RCALL 0x0A48
0278 D88B RCALL 0x0B04
(0121) *stk-- = (INT8U)(tmp >> 8);
(0122) *stk = (INT8U)(tmp);
0279 2FE4 MOV R30,R20
027A 2FF5 MOV R31,R21
027B 8360 STD R22,0+Z
(0123) return ((void *)stk);
027C 2F04 MOV R16,R20
027D 2F15 MOV R17,R21
027E D71B RCALL pop_gset4
027F 9508 RET
(0124) }
(0125)
(0126) #if OS_CPU_HOOKS_EN
(0127) /*
(0128) ********************************************************************************
(0129) * TASK CREATION HOOK
(0130) *
(0131) * Description: This function is called when a task is created.
(0132) *
(0133) * Arguments:
(0134) * ptcb is a pointer to the task control block of the task being created.
(0135) *
(0136) * Note(s): 1) Interrupts are disabled during this call.
(0137) ********************************************************************************
(0138) */
(0139) void OSTaskCreateHook (OS_TCB *ptcb)
(0140) {
(0141) ptcb = ptcb; // Prevent compiler warning
(0142) }
_OSTaskCreateHook:
ptcb --> R16
0280 9508 RET
(0143)
(0144)
(0145) /*
(0146) ********************************************************************************
(0147) * TASK DELETION HOOK
(0148) *
(0149) * Description: This function is called when a task is deleted.
(0150) *
(0151) * Arguments:
(0152) * ptcb is a pointer to the task control block of the task being deleted.
(0153) *
(0154) * Note(s): 1) Interrupts are disabled during this call.
(0155) ********************************************************************************
(0156) */
(0157) void OSTaskDelHook (OS_TCB *ptcb)
(0158) {
(0159) ptcb = ptcb; // Prevent compiler warning
(0160) }
_OSTaskDelHook:
ptcb --> R16
0281 9508 RET
(0161)
(0162) /*
(0163) ********************************************************************************
(0164) * STATISTIC TASK HOOK
(0165) *
(0166) * Description:
(0167) * This function is called every second by uC/OS-II's statistics task. This
(0168) * allows your application to add functionality to the statistics task.
(0169) *
(0170) * Arguments: none
(0171) ********************************************************************************
(0172) */
(0173) void OSTaskStatHook (void)
(0174) {
(0175) }
_OSTaskStatHook:
0282 9508 RET
(0176)
(0177) /*
(0178) ********************************************************************************
(0179) * TICK HOOK
(0180) *
(0181) * Description: This function is called every tick.
(0182) *
(0183) * Arguments : none
(0184) *
(0185) * Note(s) : 1) Interrupts may or may not be ENABLED during this call.
(0186) ********************************************************************************
(0187) */
(0188) void OSTimeTickHook (void)
(0189) {
(0190) }
_OSTimeTickHook:
0283 9508 RET
(0191) #endif
(0192)
(0193) //by zhaowd
(0194) void Init_Timer1_CompareA()
(0195) {
(0196) TCCR0 = 0x05; /* Set TIMER0 prescaler to CLK/1024 */
_Init_Timer1_CompareA:
0284 E085 LDI R24,5
0285 BF83 OUT P33,R24
(0197) TIMSK = 0x02; /* Enable TIMER0 overflow interrupt */
0286 E082 LDI R24,2
0287 BF89 OUT P39,R24
(0198) // UBRR = 23; /* 19200 BAUD at 7.3728MHz */
(0199) // MCUCR |= 0x80; /* Enable external RAM */
(0200) // UCR = 0x08; /* Enable UART transmitter */
(0201) }
0288 9508 RET
(0202) //*****************************************************************************
(0203) // TickISR
(0204) //*****************************************************************************
(0205) // Init Timer/Counter2 fuer Takterzeugung
(0206) void TC2_Init (void){
(0207) Init_Timer1_CompareA();
(0208) // UBRR = 23; /* 19200 BAUD at 7.3728MHz */
(0209) // MCUCR |= 0x80; /* Enable external RAM */
(0210) // UCR = 0x08; /* Enable UART transmitter */
(0211) // UartTxCount = 0; /* Clear number of characters to send */
(0212) // UartTxRdPtr = 0; /* Initialize transmit buffer read pointer */
(0213) // UartTxWrPtr = 0; /* Initialize transmit buffer write pointer */
(0214) /**/
(0215) //not SEI!!
(0216) //SEI();
(0217) }
_TC2_Init:
0289 CFFA RJMP _Init_Timer1_CompareA
FILE: G:\编程2002-10-15-HOME\做过的项目\2002-10-22\home-c\software\ucos-ii-at90S-icc-avr\ucos-ii-source\os_cpu_a.s
(0001) ;*******************************************************************************
(0002) ; uC/OS-II
(0003) ; The Real-Time Kernel
(0004) ;
(0005) ; AT90 Specific code
(0006) ; (ICC V6.21)
(0007) ;
(0008) ;
(0009) ; File: OS_CPU_A.S
(0010) ; By:
(0011) ; Modified by:
(0012) ; Port Version: V1.00
(0013) ;
(0014) ;
(0015) ;*******************************************************************************
(0016)
(0017) ;include
(0018)
(0019) ;*******************************************************************************
(0020) ; I/O PORT ADDRESSES
(0021) ;*******************************************************************************
(0022)
(0023) SREG =0x3F
(0024) SPH =0x3E
(0025) SPL =0x3D
(0026) TCNT0 =0x32
(0027)
(0028) PIND = 0x10
(0029) PORTD = 0x12
(0030)
(0031) ;*******************************************************************************
(0032) ; MACROS
(0033) ;*******************************************************************************
(0034)
(0035) ; Push registers
(0036) .macro PUSHRS
(0037) ST -Y,R0
(0038) ST -Y,R1
(0039) ST -Y,R2
(0040) ST -Y,R3
(0041) ST -Y,R4
(0042) ST -Y,R5
(0043) ST -Y,R6
(0044) ST -Y,R7
(0045) ST -Y,R8
(0046) ST -Y,R9
(0047) ST -Y,R10
(0048) ST -Y,R11
(0049) ST -Y,R12
(0050) ST -Y,R13
(0051) ST -Y,R14
(0052) ST -Y,R15
(0053) ST -Y,R16
(0054) ST -Y,R17
(0055) ST -Y,R18
(0056) ST -Y,R19
(0057) ST -Y,R20
(0058) ST -Y,R21
(0059) ST -Y,R22
(0060) ST -Y,R23
(0061) ST -Y,R24
(0062) ST -Y,R25
(0063) ST -Y,R26
(0064) ST -Y,R27
(0065) ST -Y,R30
(0066) ST -Y,R31
(0067) .endmacro
(0068)
(0069) ; Pop registers
(0070) .macro POPRS
(0071) LD R31,Y+
(0072) LD R30,Y+
(0073) LD R27,Y+
(0074) LD R26,Y+
(0075) LD R25,Y+
(0076) LD R24,Y+
(0077) LD R23,Y+
(0078) LD R22,Y+
(0079) LD R21,Y+
(0080) LD R20,Y+
(0081) LD R19,Y+
(0082) LD R18,Y+
(0083) LD R17,Y+
(0084) LD R16,Y+
(0085) LD R15,Y+
(0086) LD R14,Y+
(0087) LD R13,Y+
(0088) LD R12,Y+
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -