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

📄 os_core.lis

📁 1.将uC/OS-II操作系统移植到Mega16上 2.建立两个任务
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module OS_CORE.C
                        .area lit(rom, con, rel)
 0000           _OSMapTbl::
 0000 0102              .byte 1,2
 0002 0408              .byte 4,8
 0004 1020              .byte 16,32
 0006 4080              .byte 64,128
 0008                   .dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\21_uCOSII\OS_CORE.C
 0008                   .dbsym e OSMapTbl _OSMapTbl A[8:8]c
 0008           _OSUnMapTbl::
 0008 0000              .byte 0,0
 000A 0100              .byte 1,0
 000C 0200              .byte 2,0
 000E 0100              .byte 1,0
 0010 0300              .byte 3,0
 0012 0100              .byte 1,0
 0014 0200              .byte 2,0
 0016 0100              .byte 1,0
 0018 0400              .byte 4,0
 001A 0100              .byte 1,0
 001C 0200              .byte 2,0
 001E 0100              .byte 1,0
 0020 0300              .byte 3,0
 0022 0100              .byte 1,0
 0024 0200              .byte 2,0
 0026 0100              .byte 1,0
 0028 0500              .byte 5,0
 002A 0100              .byte 1,0
 002C 0200              .byte 2,0
 002E 0100              .byte 1,0
 0030 0300              .byte 3,0
 0032 0100              .byte 1,0
 0034 0200              .byte 2,0
 0036 0100              .byte 1,0
 0038 0400              .byte 4,0
 003A 0100              .byte 1,0
 003C 0200              .byte 2,0
 003E 0100              .byte 1,0
 0040 0300              .byte 3,0
 0042 0100              .byte 1,0
 0044 0200              .byte 2,0
 0046 0100              .byte 1,0
 0048 0600              .byte 6,0
 004A 0100              .byte 1,0
 004C 0200              .byte 2,0
 004E 0100              .byte 1,0
 0050 0300              .byte 3,0
 0052 0100              .byte 1,0
 0054 0200              .byte 2,0
 0056 0100              .byte 1,0
 0058 0400              .byte 4,0
 005A 0100              .byte 1,0
 005C 0200              .byte 2,0
 005E 0100              .byte 1,0
 0060 0300              .byte 3,0
 0062 0100              .byte 1,0
 0064 0200              .byte 2,0
 0066 0100              .byte 1,0
 0068 0500              .byte 5,0
 006A 0100              .byte 1,0
 006C 0200              .byte 2,0
 006E 0100              .byte 1,0
 0070 0300              .byte 3,0
 0072 0100              .byte 1,0
 0074 0200              .byte 2,0
 0076 0100              .byte 1,0
 0078 0400              .byte 4,0
 007A 0100              .byte 1,0
 007C 0200              .byte 2,0
 007E 0100              .byte 1,0
 0080 0300              .byte 3,0
 0082 0100              .byte 1,0
 0084 0200              .byte 2,0
 0086 0100              .byte 1,0
 0088 0700              .byte 7,0
 008A 0100              .byte 1,0
 008C 0200              .byte 2,0
 008E 0100              .byte 1,0
 0090 0300              .byte 3,0
 0092 0100              .byte 1,0
 0094 0200              .byte 2,0
 0096 0100              .byte 1,0
 0098 0400              .byte 4,0
 009A 0100              .byte 1,0
 009C 0200              .byte 2,0
 009E 0100              .byte 1,0
 00A0 0300              .byte 3,0
 00A2 0100              .byte 1,0
 00A4 0200              .byte 2,0
 00A6 0100              .byte 1,0
 00A8 0500              .byte 5,0
 00AA 0100              .byte 1,0
 00AC 0200              .byte 2,0
 00AE 0100              .byte 1,0
 00B0 0300              .byte 3,0
 00B2 0100              .byte 1,0
 00B4 0200              .byte 2,0
 00B6 0100              .byte 1,0
 00B8 0400              .byte 4,0
 00BA 0100              .byte 1,0
 00BC 0200              .byte 2,0
 00BE 0100              .byte 1,0
 00C0 0300              .byte 3,0
 00C2 0100              .byte 1,0
 00C4 0200              .byte 2,0
 00C6 0100              .byte 1,0
 00C8 0600              .byte 6,0
 00CA 0100              .byte 1,0
 00CC 0200              .byte 2,0
 00CE 0100              .byte 1,0
 00D0 0300              .byte 3,0
 00D2 0100              .byte 1,0
 00D4 0200              .byte 2,0
 00D6 0100              .byte 1,0
 00D8 0400              .byte 4,0
 00DA 0100              .byte 1,0
 00DC 0200              .byte 2,0
 00DE 0100              .byte 1,0
 00E0 0300              .byte 3,0
 00E2 0100              .byte 1,0
 00E4 0200              .byte 2,0
 00E6 0100              .byte 1,0
 00E8 0500              .byte 5,0
 00EA 0100              .byte 1,0
 00EC 0200              .byte 2,0
 00EE 0100              .byte 1,0
 00F0 0300              .byte 3,0
 00F2 0100              .byte 1,0
 00F4 0200              .byte 2,0
 00F6 0100              .byte 1,0
 00F8 0400              .byte 4,0
 00FA 0100              .byte 1,0
 00FC 0200              .byte 2,0
 00FE 0100              .byte 1,0
 0100 0300              .byte 3,0
 0102 0100              .byte 1,0
 0104 0200              .byte 2,0
 0106 0100              .byte 1,0
 0108                   .dbsym e OSUnMapTbl _OSUnMapTbl A[256:256]c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\21_uCOSII\OS_CORE.C
 0000                   .dbfunc e OSInit _OSInit fV
 0000           ;              i -> R20,R21
                        .even
 0000           _OSInit::
 0000 0E940000          xcall push_gset1
 0004 2397              sbiw R28,3
 0006                   .dbline -1
 0006                   .dbline 77
 0006           ; 
 0006           ; #ifndef  OS_MASTER_FILE
 0006           ; #define  OS_GLOBALS
 0006           ; #include "includes.h"
 0006           ; #endif
 0006           ; 
 0006           ; /*
 0006           ; *********************************************************************************************************
 0006           ; *                                         LOCAL GLOBAL VARIABLES
 0006           ; *********************************************************************************************************
 0006           ; */
 0006           ;                                        
 0006           ; static  INT8U        OSIntExitY;               /* Variable used by 'OSIntExit' to prevent using locals */
 0006           ; static  OS_STK       OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE];       /* Idle       task stack              */
 0006           ; 
 0006           ; #if     OS_TASK_STAT_EN
 0006           ; static  OS_STK       OSTaskStatStk[OS_TASK_STAT_STK_SIZE];      /* Statistics task stack               */
 0006           ; #endif
 0006           ; 
 0006           ; static  OS_TCB       OSTCBTbl[OS_MAX_TASKS + OS_N_SYS_TASKS];   /* Table of TCBs                       */
 0006           ; 
 0006           ; /*$PAGE*/
 0006           ; /*
 0006           ; *********************************************************************************************************
 0006           ; *                              MAPPING TABLE TO MAP BIT POSITION TO BIT MASK
 0006           ; *
 0006           ; * Note: Index into table is desired bit position, 0..7
 0006           ; *       Indexed value corresponds to bit mask
 0006           ; *********************************************************************************************************
 0006           ; */
 0006           ; 
 0006           ; INT8U const OSMapTbl[]   = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
 0006           ; 
 0006           ; /*
 0006           ; *********************************************************************************************************
 0006           ; *                                       PRIORITY RESOLUTION TABLE
 0006           ; *
 0006           ; * Note: Index into table is bit pattern to resolve highest priority
 0006           ; *       Indexed value corresponds to highest priority bit position (i.e. 0..7)
 0006           ; *********************************************************************************************************
 0006           ; */
 0006           ; 
 0006           ; INT8U const OSUnMapTbl[] = {
 0006           ;     0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
 0006           ;     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
 0006           ;     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
 0006           ;     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
 0006           ;     6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
 0006           ;     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
 0006           ;     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
 0006           ;     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
 0006           ;     7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
 0006           ;     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
 0006           ;     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
 0006           ;     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
 0006           ;     6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
 0006           ;     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
 0006           ;     5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
 0006           ;     4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0
 0006           ; };
 0006           ; 
 0006           ; /*$PAGE*/
 0006           ; /*
 0006           ; *********************************************************************************************************
 0006           ; *                                             INITIALIZATION
 0006           ; *
 0006           ; * Description: This function is used to initialize the internals of uC/OS-II and MUST be called prior to
 0006           ; *              creating any uC/OS-II object and, prior to calling OSStart().
 0006           ; *
 0006           ; * Arguments  : none
 0006           ; *
 0006           ; * Returns    : none
 0006           ; *********************************************************************************************************
 0006           ; */
 0006           ; 
 0006           ; void OSInit (void)
 0006           ; {
 0006                   .dbline 81
 0006           ;     INT16U i;
 0006           ; 
 0006           ; 
 0006           ;     OSTime        = 0L;                                    /* Clear the 32-bit system clock            */
 0006 80E0              ldi R24,0
 0008 90E0              ldi R25,0
 000A A0E0              ldi R26,0
 000C B0E0              ldi R27,0
 000E 9093BA00          sts _OSTime+1,R25
 0012 8093B900          sts _OSTime,R24
 0016 B093BC00          sts _OSTime+2+1,R27
 001A A093BB00          sts _OSTime+2,R26
 001E                   .dbline 82
 001E           ;     OSIntNesting  = 0;                                     /* Clear the interrupt nesting counter      */
 001E 2224              clr R2
 0020 2092ED00          sts _OSIntNesting,R2
 0024                   .dbline 83
 0024           ;     OSLockNesting = 0;                                     /* Clear the scheduling lock counter        */
 0024 2092EC00          sts _OSLockNesting,R2
 0028                   .dbline 85
 0028           ; #if OS_TASK_CREATE_EN  || OS_TASK_CREATE_EXT_EN || OS_TASK_DEL_EN
 0028           ;     OSTaskCtr     = 0;                                     /* Clear the number of tasks                */
 0028 2092E500          sts _OSTaskCtr,R2
 002C                   .dbline 87
 002C           ; #endif
 002C           ;     OSRunning     = FALSE;                                 /* Indicate that multitasking not started   */
 002C 2092E600          sts _OSRunning,R2
 0030                   .dbline 88
 0030           ;     OSIdleCtr     = 0L;                                    /* Clear the 32-bit idle counter            */
 0030 80E0              ldi R24,0
 0032 90E0              ldi R25,0
 0034 A0E0              ldi R26,0
 0036 B0E0              ldi R27,0
 0038 9093EF00          sts _OSIdleCtr+1,R25
 003C 8093EE00          sts _OSIdleCtr,R24
 0040 B093F100          sts _OSIdleCtr+2+1,R27
 0044 A093F000          sts _OSIdleCtr+2,R26
 0048                   .dbline 90
 0048           ; 
 0048           ;     OSCtxSwCtr    = 0;                                     /* Clear the context switch counter         */
 0048 80E0              ldi R24,0
 004A 90E0              ldi R25,0
 004C A0E0              ldi R26,0
 004E B0E0              ldi R27,0
 0050 90930501          sts _OSCtxSwCtr+1,R25
 0054 80930401          sts _OSCtxSwCtr,R24
 0058 B0930701          sts _OSCtxSwCtr+2+1,R27
 005C A0930601          sts _OSCtxSwCtr+2,R26
 0060                   .dbline 91
 0060           ;     OSRdyGrp      = 0;                                     /* Clear the ready list                     */
 0060 2092E900          sts _OSRdyGrp,R2
 0064                   .dbline 92
 0064 4427              clr R20
 0066 5527              clr R21
 0068 09C0              xjmp L6
 006A           L3:
 006A                   .dbline 92
 006A                   .dbline 93
 006A 80E0              ldi R24,<_OSRdyTbl
 006C 90E0              ldi R25,>_OSRdyTbl
 006E FA01              movw R30,R20
 0070 E80F              add R30,R24
 0072 F91F              adc R31,R25
 0074 2224              clr R2
 0076 2082              std z+0,R2
 0078                   .dbline 94
 0078           L4:
 0078                   .dbline 92

⌨️ 快捷键说明

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