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

📄 ucosii.lst

📁 ucos如何移植到单片机mega128
💻 LST
📖 第 1 页 / 共 5 页
字号:
__text_start:
__start:
    00CD EFCF      LDI	R28,0xFF
    00CE E1D0      LDI	R29,0x10
    00CF BFCD      OUT	0x3D,R28
    00D0 BFDE      OUT	0x3E,R29
    00D1 51C0      SUBI	R28,0x10
    00D2 40D0      SBCI	R29,0
    00D3 EA0A      LDI	R16,0xAA
    00D4 8308      STD	Y+0,R16
    00D5 2400      CLR	R0
    00D6 E0E0      LDI	R30,0
    00D7 E0F1      LDI	R31,1
    00D8 E013      LDI	R17,3
    00D9 34E7      CPI	R30,0x47
    00DA 07F1      CPC	R31,R17
    00DB F011      BEQ	0x00DE
    00DC 9201      ST	R0,Z+
    00DD CFFB      RJMP	0x00D9
    00DE 8300      STD	Z+0,R16
    00DF E9EA      LDI	R30,0x9A
    00E0 E0F1      LDI	R31,1
    00E1 E0A0      LDI	R26,0
    00E2 E0B1      LDI	R27,1
    00E3 E011      LDI	R17,1
    00E4 39EA      CPI	R30,0x9A
    00E5 07F1      CPC	R31,R17
    00E6 F021      BEQ	0x00EB
    00E7 95C8      LPM
    00E8 9631      ADIW	R30,1
    00E9 920D      ST	R0,X+
    00EA CFF9      RJMP	0x00E4
    00EB 940E00EE  CALL	_main
_exit:
    00ED CFFF      RJMP	_exit
_main:
    00EE 9723      SBIW	R28,3
FILE: E:\study\ucos_ii\ucos2_iccavr\iccavr\ucos2_application\test1.c
(0001) /*
(0002) ********************************************************************************
(0003) * Portierung des RTOS "礐/OS-II" von Jean J. Labrosse auf den ATmega103
(0004) * 
(0005) * Compiler:		IIC von imagecraft
(0006) * File:			Test1.c (Testapplikation)
(0007) * By:			Joerg Meyer
(0008) * Revision:		0
(0009) *
(0010) *
(0011) *
(0012) ********************************************************************************
(0013) */
(0014) #define Test1_GLOBALS
(0015) #include "includes.h"
(0016) 
(0017) 
(0018) //******************************************************************************
(0019) // Constants
(0020) #define TaskStartPrio	10		// Task-Prioritaeten
(0021) 
(0022) 
(0023) //*****************************************************************************
(0024) // Variablen
(0025) OS_STK	Task1Stack[OS_TASK_DEF_STK_SIZE];		// startup task stack
(0026) OS_STK	Task2Stack[OS_TASK_DEF_STK_SIZE];	
(0027) 
(0028) //*****************************************************************************
(0029) // Prototypes
(0030) void Task1(void *pdata);
(0031) void uart0_init(void);
(0032) void Task3(void *data);
(0033) //*****************************************************************************
(0034) // Start
(0035) void main(void){
(0036) 	OSInit();		// OS init
    00EF 940E089A  CALL	_OSInit
(0037) 
(0038) 	OSTaskCreate(Task1,
    00F1 E08A      LDI	R24,0xA
    00F2 838A      STD	Y+2,R24
    00F3 EF8F      LDI	R24,0xFF
    00F4 E091      LDI	R25,1
    00F5 8399      STD	Y+1,R25
    00F6 8388      STD	Y+0,R24
    00F7 E621      LDI	R18,0x61
    00F8 E030      LDI	R19,0
    00F9 E80E      LDI	R16,0x8E
    00FA E010      LDI	R17,0
    00FB 940E0611  CALL	_OSTaskCreate
(0039) 				(void *)(int)'a',
(0040) 				&Task1Stack[OS_TASK_DEF_STK_SIZE-1],
(0041) 				TaskStartPrio);
(0042) 	
(0043) 	OSTaskCreate(Task3,
    00FD E08B      LDI	R24,0xB
    00FE 838A      STD	Y+2,R24
    00FF E78F      LDI	R24,0x7F
    0100 E091      LDI	R25,1
    0101 8399      STD	Y+1,R25
    0102 8388      STD	Y+0,R24
    0103 E622      LDI	R18,0x62
    0104 E030      LDI	R19,0
    0105 E80C      LDI	R16,0x8C
    0106 E010      LDI	R17,0
    0107 940E0611  CALL	_OSTaskCreate
(0044) 				(void *)(int)'b',
(0045) 				&Task2Stack[OS_TASK_DEF_STK_SIZE-1],
(0046) 				TaskStartPrio+1); 
(0047) 	// init und start tick
(0048) 	uart0_init();
    0109 940E0C84  CALL	_uart0_init
(0049) 	TC2_Init();	
    010B 940E0C91  CALL	_TC2_Init
(0050) 	DDRG |= 0x18; PORTG &=~(1<<PG3); PORTG &=~(1<<PG4);	
    010D 91800064  LDS	R24,0x64
    010F 6188      ORI	R24,0x18
    0110 93800064  STS	0x64,R24
    0112 91800065  LDS	R24,0x65
    0114 7F87      ANDI	R24,0xF7
    0115 93800065  STS	0x65,R24
    0117 91800065  LDS	R24,0x65
    0119 7E8F      ANDI	R24,0xEF
    011A 93800065  STS	0x65,R24
(0051) 	OSStart();		// start multitasking
    011C 940E0928  CALL	_OSStart
    011E 9623      ADIW	R28,3
    011F 9508      RET
_Task1:
  data                 --> R20
    0120 940E0DE2  CALL	push_gset1
    0122 01A8      MOVW	R20,R16
(0052) 
(0053) }
(0054) 
(0055) //*****************************************************************************
(0056) void Task1(void *data){
(0057) //	char c = (int)data;
(0058) 
(0059) 	    
(0060) 	// Timer/Counter#2 Overflow and Comp init
(0061) 
(0062) 		for (;;){
(0063) //    	putchar(c);
(0064) 		while(!(UCSR0A&0x20));
    0123 9B5D      SBIS	0x0B,5
    0124 CFFE      RJMP	0x0123
(0065) 		UDR0 = 'a';
    0125 E681      LDI	R24,0x61
    0126 B98C      OUT	0x0C,R24
(0066) //		PORTA = ~PORTA;
(0067) //		DDRA = 0xff;
(0068) 		OSTimeDly (5);
    0127 E005      LDI	R16,5
    0128 E010      LDI	R17,0
    0129 940E085D  CALL	_OSTimeDly
    012B CFF7      RJMP	0x0123
    012C 940E0DE5  CALL	pop_gset1
    012E 9508      RET
_Task3:
  data                 --> R20
    012F 940E0DE2  CALL	push_gset1
    0131 01A8      MOVW	R20,R16
(0069) 
(0070) 	}
(0071) }
(0072) void Task3(void *data){
(0073) //	char c = (int)data;
(0074) 	for (;;){
(0075) //    	putchar(c);
(0076) 		while(!(UCSR0A&0x20));
    0132 9B5D      SBIS	0x0B,5
    0133 CFFE      RJMP	0x0132
(0077) 		UDR0 = 'b';
    0134 E682      LDI	R24,0x62
    0135 B98C      OUT	0x0C,R24
(0078) //		PORTA = ~PORTA;
(0079) //		DDRA = 0xff;
(0080) 		OSTimeDly (5);
    0136 E005      LDI	R16,5
    0137 E010      LDI	R17,0
    0138 940E085D  CALL	_OSTimeDly
    013A CFF7      RJMP	0x0132
    013B 940E0DE5  CALL	pop_gset1
    013D 9508      RET
FILE: E:\study\ucos_ii\ucos2_iccavr\iccavr\ucos2_application\default_hook_functions.c
(0001) /* default no op hook functions */
(0002) void OSInitHookBegin(void) {}
_OSInitHookBegin:
    013E 9508      RET
(0003) void OSTCBInitHook(void *junk) {}
_OSTCBInitHook:
  junk                 --> Y+0
    013F 9508      RET
(0004) void OSInitHookEnd(void) {}_OSInitHookEnd:
    0140 9508      RET
_OSFlagAccept:
  flags_rdy            --> R10
  consume              --> R12
  flags_cur            --> R20
  err                  --> R22
  wait_type            --> R20
  flags                --> R18
  pgrp                 --> R16
    0141 940E0DDC  CALL	push_gset4
    0143 8548      LDD	R20,Y+8
    0144 856A      LDD	R22,Y+10
    0145 857B      LDD	R23,Y+11
FILE: E:\study\ucos_ii\ucos2_iccavr\iccavr\ucos2_without_cpu\OS_FLAG.C
(0001) /*
(0002) *********************************************************************************************************
(0003) *                                                uC/OS-II
(0004) *                                          The Real-Time Kernel
(0005) *                                         EVENT FLAG  MANAGEMENT
(0006) *
(0007) *                          (c) Copyright 2001-2002, Jean J. Labrosse, Weston, FL
(0008) *                                           All Rights Reserved
(0009) *
(0010) * File : OS_FLAG.C
(0011) * By   : Jean J. Labrosse
(0012) *********************************************************************************************************
(0013) */
(0014) 
(0015) #ifndef  OS_MASTER_FILE
(0016) #include "..\ucos2_application\INCLUDES.H"
(0017) #endif
(0018) 
(0019) #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
(0020) /*
(0021) *********************************************************************************************************
(0022) *                                            LOCAL PROTOTYPES
(0023) *********************************************************************************************************
(0024) */
(0025) 
(0026) static  void     OS_FlagBlock(OS_FLAG_GRP *pgrp, OS_FLAG_NODE *pnode, OS_FLAGS flags, INT8U wait_type, INT16U timeout);
(0027) static  BOOLEAN  OS_FlagTaskRdy(OS_FLAG_NODE *pnode, OS_FLAGS flags_rdy);
(0028) 
(0029) /*$PAGE*/
(0030) /*
(0031) *********************************************************************************************************
(0032) *                              CHECK THE STATUS OF FLAGS IN AN EVENT FLAG GROUP
(0033) *
(0034) * Description: This function is called to check the status of a combination of bits to be set or cleared
(0035) *              in an event flag group.  Your application can check for ANY bit to be set/cleared or ALL
(0036) *              bits to be set/cleared.
(0037) *
(0038) *              This call does not block if the desired flags are not present.
(0039) *
(0040) * Arguments  : pgrp          is a pointer to the desired event flag group.
(0041) *
(0042) *              flags         Is a bit pattern indicating which bit(s) (i.e. flags) you wish to check.
(0043) *                            The bits you want are specified by setting the corresponding bits in
(0044) *                            'flags'.  e.g. if your application wants to wait for bits 0 and 1 then
(0045) *                            'flags' would contain 0x03.
(0046) *
(0047) *              wait_type     specifies whether you want ALL bits to be set/cleared or ANY of the bits
(0048) *                            to be set/cleared.
(0049) *                            You can specify the following argument:
(0050) *
(0051) *                            OS_FLAG_WAIT_CLR_ALL   You will check ALL bits in 'flags' to be clear (0)
(0052) *                            OS_FLAG_WAIT_CLR_ANY   You will check ANY bit  in 'flags' to be clear (0)
(0053) *                            OS_FLAG_WAIT_SET_ALL   You will check ALL bits in 'flags' to be set   (1)
(0054) *                            OS_FLAG_WAIT_SET_ANY   You will check ANY bit  in 'flags' to be set   (1)
(0055) *
(0056) *                            NOTE: Add OS_FLAG_CONSUME if you want the event flag to be 'consumed' by
(0057) *                                  the call.  Example, to wait for any flag in a group AND then clear
(0058) *                                  the flags that are present, set 'wait_type' to:
(0059) *
(0060) *                                  OS_FLAG_WAIT_SET_ANY + OS_FLAG_CONSUME
(0061) *
(0062) *              err           is a pointer to an error code and can be:
(0063) *                            OS_NO_ERR              No error
(0064) *                            OS_ERR_EVENT_TYPE      You are not pointing to an event flag group
(0065) *                            OS_FLAG_ERR_WAIT_TYPE  You didn't specify a proper 'wait_type' argument.
(0066) *                            OS_FLAG_INVALID_PGRP   You passed a NULL pointer instead of the event flag
(0067) *                                                   group handle.
(0068) *                            OS_FLAG_ERR_NOT_RDY    The desired flags you are waiting for are not
(0069) *                                                   available.
(0070) *
(0071) * Returns    : The state of the flags in the event flag group.
(0072) *
(0073) * Called from: Task or ISR
(0074) *********************************************************************************************************
(0075) */
(0076) 
(0077) #if OS_FLAG_ACCEPT_EN > 0
(0078) OS_FLAGS  OSFlagAccept (OS_FLAG_GRP *pgrp, OS_FLAGS flags, INT8U wait_type, INT8U *err)
(0079) {
(0080) #if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status register */
(0081)     OS_CPU_SR     cpu_sr;
(0082) #endif
(0083)     OS_FLAGS      flags_cur;
(0084)     OS_FLAGS      flags_rdy;
(0085)     BOOLEAN       consume;
(0086) 
(0087) 
(0088) #if OS_ARG_CHK_EN > 0
(0089)     if (pgrp == (OS_FLAG_GRP *)0) {                        /* Validate 'pgrp'                          */
    0146 3000      CPI	R16,0
    0147 0701      CPC	R16,R17
    0148 F429      BNE	0x014E
(0090)         *err = OS_FLAG_INVALID_PGRP;
    0149 E986      LDI	R24,0x96
    014A 01FB      MOVW	R30,R22
    014B 8380      STD	Z+0,R24
(0091)         return ((OS_FLAGS)0);
    014C 2700      CLR	R16
    014D C09C      RJMP	0x01EA
(0092)     }
(0093)     if (pgrp->OSFlagType != OS_EVENT_TYPE_FLAG) {          /* Validate event block type                */
    014E 01F8      MOVW	R30,R16
    014F 8180      LDD	R24,Z+0
    0150 3085      CPI	R24,5
    0151 F029      BEQ	0x0157
(0094)         *err = OS_ERR_EVENT_TYPE;
    0152 E081      LDI	R24,1
    0153 01FB      MOVW	R30,R22

⌨️ 快捷键说明

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