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

📄 pjhost.lst

📁 AVR megal128下的ucos_ii
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0013) * 返 回 值:-- 		
(0014) *******************************************************************************
(0015) */
(0016) void Init_AppTask8(void)     
(0017) {
(0018)    OSTaskStkSize     = OS_TASK_8_STK_SIZE;        // Setup the default stack size  #define  OS_TASK_8_STK_SIZE    OS_TASK_STK_SIZE
    0387 E080      LDI	R24,0
    0388 E091      LDI	R25,1
    0389 939009D5  STS	OSTaskStkSize+1,R25
    038B 938009D4  STS	OSTaskStkSize,R24
(0019)    OSTaskHardStkSize = OS_TASK_8_HARD_STK_SIZE;   // Setup the default hardware stack size            
    038D E480      LDI	R24,0x40
    038E E090      LDI	R25,0
    038F 939009D3  STS	OSTaskHardStkSize+1,R25
    0391 938009D2  STS	OSTaskHardStkSize,R24
(0020)    OSTaskCreate(AppTask8, (void *)0, (OS_STK *)&AppTask8Stk[OSTaskStkSize-1],8);
    0393 E088      LDI	R24,0x8
    0394 838A      STD	Y+2,R24
    0395 E083      LDI	R24,3
    0396 E095      LDI	R25,5
    0397 91E009D4  LDS	R30,OSTaskStkSize
    0399 91F009D5  LDS	R31,OSTaskStkSize+1
    039B 9731      SBIW	R30,1
    039C 0FE8      ADD	R30,R24
    039D 1FF9      ADC	R31,R25
    039E 83F9      STD	Y+1,R31
    039F 83E8      STD	Y+0,R30
    03A0 2722      CLR	R18
    03A1 2733      CLR	R19
    03A2 E902      LDI	R16,0x92
    03A3 E010      LDI	R17,0
    03A4 940E0FB7  CALL	_OSTaskCreate
    03A6 9623      ADIW	R28,3
    03A7 9508      RET
_AppTask8:
  msg                  --> Y+1
  err                  --> Y+1
  p_arg                --> R20
    03A8 940E134D  CALL	push_gset1
    03AA 01A8      MOVW	R20,R16
(0021) }
(0022) /*
(0023) *****************************************************************************
(0024) * 函数介绍:串口通信管理
(0025) * 输入参数: 
(0026) * 输出参数:-- 
(0027) * 返 回 值:-- 		
(0028) *******************************************************************************
(0029) */
(0030) void  AppTask8(void *p_arg)
(0031) {
(0032)   INT8U  err ;
(0033)   INT16U  msg;
(0034)   p_arg = p_arg;
    03AB C005      RJMP	0x03B1
(0035)   while (TRUE)
(0036) 	  {
(0037) 	   OSTimeDly(OS_TICKS_PER_SEC/100);	
    03AC E001      LDI	R16,1
    03AD E010      LDI	R17,0
    03AE 940E102F  CALL	_OSTimeDly
(0038) 	   WDR();
    03B0 95A8      WDR
    03B1 CFFA      RJMP	0x03AC
    03B2 940E1350  CALL	pop_gset1
    03B4 9508      RET
FILE: D:\编写软件小系统\纯ucos\include\os_cpu_a.s
(0001) ;********************************************************************************************************
(0002) ;                                               uC/OS-II
(0003) ;                                         The Real-Time Kernel
(0004) ;
(0005) ;                                       ATmega128  Specific code
(0006) ;
(0007) ;
(0008) ; File     : OS_CPU_A.S
(0009) ; By       : Ole Saether
(0010) ;            Jean J. Labrosse
(0011) ;********************************************************************************************************
(0012) ;                                           I/O PORT ADDRESSES
(0013) ;********************************************************************************************************
(0014) 
(0015) BIT00   = 0x01
(0016) BIT01   = 0x02
(0017) BIT02   = 0x04
(0018) BIT03   = 0x08
(0019) BIT04   = 0x10
(0020) BIT05   = 0x20
(0021) BIT06   = 0x40
(0022) BIT07   = 0x80
(0023) 
(0024) SREG    = 0x3F
(0025) SPH     = 0x3E
(0026) SPL     = 0x3D
(0027) RAMPZ   = 0x3B
(0028) 
(0029) ;********************************************************************************************************
(0030) ;                                         MACROS
(0031) ;********************************************************************************************************
(0032) 
(0033)                 .macro  PUSH_ALL                            ; Save all registers
(0034)                 ST      -Y,R0
(0035)                 ST      -Y,R1
(0036)                 ST      -Y,R2
(0037)                 ST      -Y,R3
(0038)                 ST      -Y,R4
(0039)                 ST      -Y,R5
(0040)                 ST      -Y,R6
(0041)                 ST      -Y,R7
(0042)                 ST      -Y,R8
(0043)                 ST      -Y,R9
(0044)                 ST      -Y,R10
(0045)                 ST      -Y,R11
(0046)                 ST      -Y,R12
(0047)                 ST      -Y,R13
(0048)                 ST      -Y,R14
(0049)                 ST      -Y,R15
(0050)                 ST      -Y,R16
(0051)                 ST      -Y,R17
(0052)                 ST      -Y,R18
(0053)                 ST      -Y,R19
(0054)                 ST      -Y,R20
(0055)                 ST      -Y,R21
(0056)                 ST      -Y,R22
(0057)                 ST      -Y,R23
(0058)                 ST      -Y,R24
(0059)                 ST      -Y,R25
(0060)                 ST      -Y,R26
(0061)                 ST      -Y,R27
(0062)                 ST      -Y,R30
(0063)                 ST      -Y,R31
(0064)                 IN      R16,RAMPZ
(0065)                 ST      -Y,R16
(0066)                 .endmacro
(0067) 
(0068)                 .macro  POP_ALL                             ; Restore all registers
(0069)                 LD      R16,Y+
(0070)                 OUT     RAMPZ,R16
(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+
(0089)                 LD      R11,Y+
(0090)                 LD      R10,Y+
(0091)                 LD      R9,Y+
(0092)                 LD      R8,Y+
(0093)                 LD      R7,Y+
(0094)                 LD      R6,Y+
(0095)                 LD      R5,Y+
(0096)                 LD      R4,Y+
(0097)                 LD      R3,Y+
(0098)                 LD      R2,Y+
(0099)                 LD      R1,Y+
(0100)                 LD      R0,Y+
(0101)                 .endmacro
(0102) 
(0103)                 .macro  PUSH_SP                             ; Save stack pointer
(0104)                 IN      R16,SPH
(0105)                 ST      -Y,R16
(0106)                 IN      R16,SPL
(0107)                 ST      -Y,R16
(0108)                 .endmacro
(0109) 
(0110)                 .macro  POP_SP                              ; Restore stack pointer
(0111)                 LD      R16,Y+
(0112)                 OUT     SPL,R16
(0113)                 LD      R16,Y+
(0114)                 OUT     SPH,R16
(0115)                 .endmacro
(0116) 
(0117)                 .macro  PUSH_SREG                           ; Save status register
(0118)                 IN      R16,SREG
(0119)                 ST      -Y,R16
(0120)                 .endmacro
(0121) 
(0122)                 .macro  POP_SREG                            ; Restore status registers
(0123)                 LD      R16,Y+
(0124)                 OUT     SREG,R16
(0125)                 .endmacro
(0126) 
(0127)                 .area   text(rel)
(0128) 
(0129) ;/*$PAGE*/.
(0130) ;********************************************************************************************************
(0131) ;                            DISABLE/ENABLE INTERRUPTS USING OS_CRITICAL_METHOD #3
(0132) ;
(0133) ; Description : These functions are used to disable and enable interrupts using OS_CRITICAL_METHOD #3.
(0134) ;
(0135) ;               OS_CPU_SR  OSCPUSaveSR (void)
(0136) ;                     Get current value of SREG
(0137) ;                     Disable interrupts
(0138) ;                     Return original value of SREG
(0139) ;
(0140) ;               void  OSCPURestoreSR (OS_CPU_SR cpu_sr)
(0141) ;                     Set SREG to cpu_sr
(0142) ;                     Return
(0143) ;********************************************************************************************************
(0144) 
(0145) _OS_CPU_SR_Save::
(0146)                 IN      R16,SREG                    ; Get current state of interrupts disable flag
_OS_CPU_SR_Save:
    03B5 B70F      IN	R16,0x3F
(0147)                 CLI                                 ; Disable interrupts
    03B6 94F8      BCLR	7
(0148)                 RET                                 ; Return original SREG value in R16
    03B7 9508      RET
(0149) 
(0150) 
(0151) _OS_CPU_SR_Restore::
(0152)                 OUT     SREG,R16                    ; Restore SREG
_OS_CPU_SR_Restore:
    03B8 BF0F      OUT	0x3F,R16
(0153)                 RET                                 ; Return
    03B9 9508      RET
(0154) 
(0155) ;/*$PAGE*/.
(0156) ;********************************************************************************************************
(0157) ;                               START HIGHEST PRIORITY TASK READY-TO-RUN
(0158) ;
(0159) ; Description : This function is called by OSStart() to start the highest priority task that was created
(0160) ;               by your application before calling OSStart().
(0161) ;
(0162) ; Note(s)     : 1) The (data)stack frame is assumed to look as follows:
(0163) ;
(0164) ;                  OSTCBHighRdy->OSTCBStkPtr --> SPL of (return) stack pointer           (Low memory)
(0165) ;                                                SPH of (return) stack pointer
(0166) ;                                                Flags to load in status register
(0167) ;                                                R31
(0168) ;                                                R30
(0169) ;                                                R27
(0170) ;                                                .
(0171) ;                                                .
(0172) ;                                                R0
(0173) ;                                                PCH
(0174) ;                                                PCL                                     (High memory)
(0175) ;
(0176) ;                  where the stack pointer points to the task start address.
(0177) ;
(0178) ;
(0179) ;               2) OSStartHighRdy() MUST:
(0180) ;                      a) Call OSTaskSwHook() then,
(0181) ;                      b) Set OSRunning to TRUE,
(0182) ;                      c) Switch to the highest priority task.
(0183) ;********************************************************************************************************
(0184) 
(0185) _OSStartHighRdy::
(0186)                 CALL    _OSTaskSwHook               ; Invoke user defined context switch hook
_OSStartHighRdy:
    03BA 940E1225  CALL	_OSTaskSwHook
(0187)                 LDS     R16,_OSRunning              ; Indicate that we are multitasking
    03BC 9100090E  LDS	R16,OSRunning
(0188)                 INC     R16                         ;
    03BE 9503      INC	R16
(0189)                 STS     _OSRunning,R16              ;
    03BF 9300090E  STS	OSRunning,R16
(0190) 
(0191)                 LDS     R30,_OSTCBHighRdy           ; Let Z point to TCB of highest priority task
    03C1 91E00803  LDS	R30,OSTCBHighRdy
(0192)                 LDS     R31,_OSTCBHighRdy+1         ; ready to run
    03C3 91F00804  LDS	R31,OSTCBHighRdy+1
(0193)                 LD      R28,Z+                      ; Load Y (R29:R28) pointer
    03C5 91C1      LD	R28,Z+
(0194)                 LD      R29,Z+                      ;
    03C6 91D1      LD	R29,Z+
    03C7 9109      LD	R16,Y+
    03C8 BF0D      OUT	0x3D,R16
    03C9 9109      LD	R16,Y+
(0195) 
(0196)                 POP_SP                              ; Restore stack pointer
    03CA BF0E      OUT	0x3E,R16
    03CB 9109      LD	R16,Y+
(0197)                 POP_SREG                            ; Restore status register
    03CC BF0F      OUT	0x3F,R16
    03CD 9109      LD	R16,Y+
    03CE BF0B      OUT	0x3B,R16
    03CF 91F9      LD	R31,Y+
    03D0 91E9      LD	R30,Y+
    03D1 91B9      LD	R27,Y+
    03D2 91A9      LD	R26,Y+
    03D3 9199      LD	R25,Y+
    03D4 9189      LD	R24,Y+
    03D5 9179      LD	R23,Y+
    03D6 9169      LD	R22,Y+
    03D7 9159      LD	R21,Y+
    03D8 9149      LD	R20,Y+
    03D9 9139      LD	R19,Y+
    03DA 9129      LD	R18,Y+
    03DB 9119      LD	R17,Y+
    03DC 9109      LD	R16,Y+
    03DD 90F9      LD	R15,Y+
    03DE 90E9      LD	R14,Y+
    03DF 90D9      LD	R13,Y+
    03E0 90C9      LD	R12,Y+
    03E1 90B9      LD	R11,Y+
    03E2 90A9      LD	R10,Y+
    03E3 9099      LD	R9,Y+
    03E4 9089      LD	R8,Y+
    03E5 9079      LD	R7,Y+
    03E6 9069      LD	R6,Y+
    03E7 9059      LD	R5,Y+
    03E8 9049      LD	R4,Y+
    03E9 9039      LD	R3,Y+
    03EA 9029      LD	R2,Y+
    03EB 9019      LD	R1,Y+
(0198)                 POP_ALL                             ; Restore all registers
    03EC 9009      LD	R0,Y+
(0199)                 RET                                 ; Start task
    03ED 9508      RET
_OSCtxSw:
    03EE 920A      ST	R0,-Y
    03EF 921A      ST	R1,-Y
    03F0 922A      ST	R2,-Y
    03F1 923A      ST	R3,-Y
    03F2 924A      ST	R4,-Y
    03F3 925A      ST	R5,-Y

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -