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

📄 kernel.lis

📁 AVR单片机C语言程序设计实例精粹
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00BA 3320              tst R3
 00BC 19F0              breq L15
 00BE           X0:
 00BE                   .dbline 85
 00BE           ;               {
 00BE                   .dbline 86
 00BE           ;                       return(true);
 00BE 01E0              ldi R16,1
 00C0 10E0              ldi R17,0
 00C2 05C0              xjmp L10
 00C4           L15:
 00C4                   .dbline 88
 00C4           L12:
 00C4                   .dbline 82
 00C4 4395              inc R20
 00C6           L14:
 00C6                   .dbline 82
 00C6 4017              cp R20,R16
 00C8 68F3              brlo L11
 00CA                   .dbline 89
 00CA           ;               }
 00CA           ;       }
 00CA           ;       return(false);
 00CA 0027              clr R16
 00CC 1127              clr R17
 00CE                   .dbline -2
 00CE           L10:
 00CE 0E940000          xcall pop_gset1
 00D2                   .dbline 0 ; func end
 00D2 0895              ret
 00D4                   .dbsym r bTemp 20 c
 00D4                   .dbsym r bTaskPrio 16 c
 00D4                   .dbend
 00D4                   .dbfunc e OS_Task_Update _OS_Task_Update fV
 00D4           ;          bTemp -> R20
                        .even
 00D4           _OS_Task_Update::
 00D4 0E940000          xcall push_gset1
 00D8                   .dbline -1
 00D8                   .dbline 100
 00D8           ; }
 00D8           ; 
 00D8           ; //******************************************************************************
 00D8           ; // Function    : OS_Task_Update
 00D8           ; // Input       : none
 00D8           ; // Output      : none
 00D8           ; // Description : increase timercount of all tasks in each SYS clock ISR.if task
 00D8           ; //               is timeout,Kernel send a timer event to the task
 00D8           ; //******************************************************************************
 00D8           ; void OS_Task_Update(void)
 00D8           ; {
 00D8                   .dbline 102
 00D8           ;       INT8U bTemp;
 00D8           ;       for(bTemp = 0;bTemp < cMaxTask;bTemp++)
 00D8 4427              clr R20
 00DA 30C0              xjmp L22
 00DC           L19:
 00DC                   .dbline 103
 00DC           ;       {
 00DC                   .dbline 104
 00DC           ;               OSTCB[bTemp].wTimerCount++;
 00DC 86E0              ldi R24,6
 00DE 849F              mul R24,R20
 00E0 1001              movw R2,R0
 00E2 80E0              ldi R24,<_OSTCB+2
 00E4 90E0              ldi R25,>_OSTCB+2
 00E6 280E              add R2,R24
 00E8 391E              adc R3,R25
 00EA F101              movw R30,R2
 00EC 8081              ldd R24,z+0
 00EE 9181              ldd R25,z+1
 00F0 0196              adiw R24,1
 00F2 9183              std z+1,R25
 00F4 8083              std z+0,R24
 00F6                   .dbline 105
 00F6           ;               if(OSTCB[bTemp].wTimerCount == OSTCB[bTemp].wTimerPeriod)
 00F6 86E0              ldi R24,6
 00F8 849F              mul R24,R20
 00FA 80E0              ldi R24,<_OSTCB
 00FC 90E0              ldi R25,>_OSTCB
 00FE F001              movw R30,R0
 0100 E80F              add R30,R24
 0102 F91F              adc R31,R25
 0104 2080              ldd R2,z+0
 0106 3180              ldd R3,z+1
 0108 80E0              ldi R24,<_OSTCB+2
 010A 90E0              ldi R25,>_OSTCB+2
 010C F001              movw R30,R0
 010E E80F              add R30,R24
 0110 F91F              adc R31,R25
 0112 4080              ldd R4,z+0
 0114 5180              ldd R5,z+1
 0116 4214              cp R4,R2
 0118 5304              cpc R5,R3
 011A 79F4              brne L24
 011C                   .dbline 106
 011C           ;               {
 011C                   .dbline 107
 011C           ;                       OSTCB[bTemp].wTimerCount = 0;
 011C 86E0              ldi R24,6
 011E 849F              mul R24,R20
 0120 F001              movw R30,R0
 0122 80E0              ldi R24,<_OSTCB+2
 0124 90E0              ldi R25,>_OSTCB+2
 0126 E80F              add R30,R24
 0128 F91F              adc R31,R25
 012A 2224              clr R2
 012C 3324              clr R3
 012E 3182              std z+1,R3
 0130 2082              std z+0,R2
 0132                   .dbline 108
 0132           ;                       OS_Event_Post(bTemp,0);
 0132 2227              clr R18
 0134 3327              clr R19
 0136 042F              mov R16,R20
 0138 83DF              xcall _OS_Event_Post
 013A                   .dbline 109
 013A           ;               }
 013A           L24:
 013A                   .dbline 110
 013A           L20:
 013A                   .dbline 102
 013A 4395              inc R20
 013C           L22:
 013C                   .dbline 102
 013C 4430              cpi R20,4
 013E 08F4              brsh X1
 0140 CDCF              xjmp L19
 0142           X1:
 0142                   .dbline -2
 0142                   .dbline 111
 0142           ;       }
 0142           ; }
 0142           L18:
 0142 0E940000          xcall pop_gset1
 0146                   .dbline 0 ; func end
 0146 0895              ret
 0148                   .dbsym r bTemp 20 c
 0148                   .dbend
 0148                   .dbfunc e OS_Init _OS_Init fV
 0148           ;          bTemp -> R16
                        .even
 0148           _OS_Init::
 0148                   .dbline -1
 0148                   .dbline 120
 0148           ; 
 0148           ; //******************************************************************************
 0148           ; // Function    : OS_Init
 0148           ; // Input       : none
 0148           ; // Output      : none
 0148           ; // Description : Initlization of TCBs
 0148           ; //******************************************************************************
 0148           ; void OS_Init(void)
 0148           ; {
 0148                   .dbline 122
 0148           ;       INT8U bTemp;
 0148           ;       for(bTemp = 0;bTemp < cMaxTask;bTemp++)
 0148 0027              clr R16
 014A 1EC0              xjmp L32
 014C           L29:
 014C                   .dbline 123
 014C                   .dbline 124
 014C 86E0              ldi R24,6
 014E 809F              mul R24,R16
 0150 F001              movw R30,R0
 0152 80E0              ldi R24,<_OSTCB
 0154 90E0              ldi R25,>_OSTCB
 0156 E80F              add R30,R24
 0158 F91F              adc R31,R25
 015A 2224              clr R2
 015C 3324              clr R3
 015E 3182              std z+1,R3
 0160 2082              std z+0,R2
 0162                   .dbline 125
 0162 86E0              ldi R24,6
 0164 809F              mul R24,R16
 0166 F001              movw R30,R0
 0168 80E0              ldi R24,<_OSTCB+2
 016A 90E0              ldi R25,>_OSTCB+2
 016C E80F              add R30,R24
 016E F91F              adc R31,R25
 0170 3182              std z+1,R3
 0172 2082              std z+0,R2
 0174                   .dbline 126
 0174 86E0              ldi R24,6
 0176 809F              mul R24,R16
 0178 F001              movw R30,R0
 017A 80E0              ldi R24,<_OSTCB+4
 017C 90E0              ldi R25,>_OSTCB+4
 017E E80F              add R30,R24
 0180 F91F              adc R31,R25
 0182 3182              std z+1,R3
 0184 2082              std z+0,R2
 0186                   .dbline 127
 0186           L30:
 0186                   .dbline 122
 0186 0395              inc R16
 0188           L32:
 0188                   .dbline 122
 0188 0430              cpi R16,4
 018A 00F3              brlo L29
 018C                   .dbline -2
 018C                   .dbline 128
 018C           ;       {
 018C           ;               OSTCB[bTemp].wTimerPeriod = 0;
 018C           ;               OSTCB[bTemp].wTimerCount = 0;
 018C           ;               OSTCB[bTemp].wEvent = 0;
 018C           ;       }
 018C           ; }
 018C           L28:
 018C                   .dbline 0 ; func end
 018C 0895              ret
 018E                   .dbsym r bTemp 16 c
 018E                   .dbend
 018E                   .dbfunc e OS_Start _OS_Start fV
                        .even
 018E           _OS_Start::
 018E                   .dbline -1
 018E                   .dbline 137
 018E           ; 
 018E           ; //******************************************************************************
 018E           ; // Function    : OS_Start
 018E           ; // Input       : none
 018E           ; // Output      : none
 018E           ; // Description : Initlization of tasks and Start Kernel
 018E           ; //******************************************************************************
 018E           ; void OS_Start(void)
 018E           ; {
 018E                   .dbline 138
 018E           ;       Task_Init();
 018E 0E940000          xcall _Task_Init
 0192                   .dbline 139
 0192           ;       Task_Start();
 0192                   .dbline -2
 0192                   .dbline 140
 0192           ; }
 0192           L35:
 0192                   .dbline 0 ; func end
 0192 0C940000          xjmp _Task_Start
 0196                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\Kernel.c
 0000           _OSTCB::
 0000                   .blkb 24
 0018                   .dbsym e OSTCB _OSTCB A[24:4]X

⌨️ 快捷键说明

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