⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ucos_ii.lst

📁 ucos-ii-at90S-icc-avr
💻 LST
📖 第 1 页 / 共 5 页
字号:
(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 + -