?? ucosii.lst
字號:
__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 + -