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

📄 schedule.lis

📁 avr单片机ATMega16对三相异步电机的智能控制源码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00D8 F91F              adc R31,R25
 00DA 0A80              ldd R0,y+2
 00DC 1B80              ldd R1,y+3
 00DE 1182              std z+1,R1
 00E0 0082              std z+0,R0
 00E2                   .dbline 107
 00E2           ;       SCH_tasks_G[Index].RunMe = 0;
 00E2 87E0              ldi R24,7
 00E4 849F              mul R24,R20
 00E6 F001              movw R30,R0
 00E8 80E0              ldi R24,<_SCH_tasks_G+6
 00EA 90E0              ldi R25,>_SCH_tasks_G+6
 00EC E80F              add R30,R24
 00EE F91F              adc R31,R25
 00F0 2224              clr R2
 00F2 2082              std z+0,R2
 00F4                   .dbline 108
 00F4           ;       return Index;           // 返回任务的位置(以便以后删除)
 00F4 042F              mov R16,R20
 00F6                   .dbline -2
 00F6           L16:
 00F6 0E940000          xcall pop_gset1
 00FA                   .dbline 0 ; func end
 00FA 0895              ret
 00FC                   .dbsym r Index 20 c
 00FC                   .dbsym l PERIOD 2 ki
 00FC                   .dbsym r DELAY 18 ki
 00FC                   .dbsym r pFunction 16 pfV
 00FC                   .dbend
 00FC                   .dbfunc e SCH_Delete_Task _SCH_Delete_Task fc
 00FC           ;    Return_code -> R20
 00FC           ;     TASK_INDEX -> R16
                        .even
 00FC           _SCH_Delete_Task::
 00FC 0E940000          xcall push_gset1
 0100                   .dbline -1
 0100                   .dbline 127
 0100           ; 
 0100           ; }
 0100           ; 
 0100           ; 
 0100           ; 
 0100           ; /*---------------------------------------------------------*-
 0100           ;  * 函数名称: SCH_Delete_Task()
 0100           ;  * 入  口: TASK_INDEX -任务索引.由SCH_Add_task()提供
 0100           ;  * 
 0100           ;  * 出  口: 返回值: RETURN_ERROR(或)RETURN_NORMAL
 0100           ;  *            
 0100           ;  * 函数功能: 从调度器删除任务.
 0100           ;  * 
 0100           ;  * 说  明: 请注意:并不是从存储器中删除相关的函数,仅仅是不再
 0100           ;  *                     由调度器调用这个任务.
 0100           ; -*---------------------------------------------------------*/
 0100           ; 
 0100           ; uchar SCH_Delete_Task(const unsigned char TASK_INDEX)
 0100           ; {
 0100                   .dbline 130
 0100           ;       uchar Return_code;              //返回错误代码
 0100           ; 
 0100           ;       if (SCH_tasks_G[TASK_INDEX].pTask == 0)
 0100 87E0              ldi R24,7
 0102 809F              mul R24,R16
 0104 F001              movw R30,R0
 0106 80E0              ldi R24,<_SCH_tasks_G
 0108 90E0              ldi R25,>_SCH_tasks_G
 010A E80F              add R30,R24
 010C F91F              adc R31,R25
 010E 2080              ldd R2,z+0
 0110 3180              ldd R3,z+1
 0112 2220              tst R2
 0114 21F4              brne L27
 0116 3320              tst R3
 0118 11F4              brne L27
 011A           X3:
 011A                   .dbline 131
 011A           ;       {       
 011A                   .dbline 132
 011A           ;               Return_code = RETURN_ERROR;       
 011A 41E0              ldi R20,1
 011C                   .dbline 133
 011C           ;       }
 011C 01C0              xjmp L28
 011E           L27:
 011E                   .dbline 135
 011E           ;       else
 011E           ;       {
 011E                   .dbline 136
 011E           ;               Return_code = RETURN_NORMAL;
 011E 4427              clr R20
 0120                   .dbline 137
 0120           ;       }
 0120           L28:
 0120                   .dbline 140
 0120           ; 
 0120           ;       // 删除任务
 0120           ;       SCH_tasks_G[TASK_INDEX].pTask = 0x00;
 0120 87E0              ldi R24,7
 0122 809F              mul R24,R16
 0124 F001              movw R30,R0
 0126 80E0              ldi R24,<_SCH_tasks_G
 0128 90E0              ldi R25,>_SCH_tasks_G
 012A E80F              add R30,R24
 012C F91F              adc R31,R25
 012E 2224              clr R2
 0130 3324              clr R3
 0132 3182              std z+1,R3
 0134 2082              std z+0,R2
 0136                   .dbline 141
 0136           ;       SCH_tasks_G[TASK_INDEX].Delay = 0;
 0136 87E0              ldi R24,7
 0138 809F              mul R24,R16
 013A F001              movw R30,R0
 013C 80E0              ldi R24,<_SCH_tasks_G+2
 013E 90E0              ldi R25,>_SCH_tasks_G+2
 0140 E80F              add R30,R24
 0142 F91F              adc R31,R25
 0144 3182              std z+1,R3
 0146 2082              std z+0,R2
 0148                   .dbline 142
 0148           ;       SCH_tasks_G[TASK_INDEX].Period = 0;
 0148 87E0              ldi R24,7
 014A 809F              mul R24,R16
 014C F001              movw R30,R0
 014E 80E0              ldi R24,<_SCH_tasks_G+4
 0150 90E0              ldi R25,>_SCH_tasks_G+4
 0152 E80F              add R30,R24
 0154 F91F              adc R31,R25
 0156 3182              std z+1,R3
 0158 2082              std z+0,R2
 015A                   .dbline 143
 015A           ;       SCH_tasks_G[TASK_INDEX].RunMe = 0;
 015A 87E0              ldi R24,7
 015C 809F              mul R24,R16
 015E F001              movw R30,R0
 0160 80E0              ldi R24,<_SCH_tasks_G+6
 0162 90E0              ldi R25,>_SCH_tasks_G+6
 0164 E80F              add R30,R24
 0166 F91F              adc R31,R25
 0168 2082              std z+0,R2
 016A                   .dbline 145
 016A           ; 
 016A           ;       return Return_code;
 016A 042F              mov R16,R20
 016C                   .dbline -2
 016C           L26:
 016C 0E940000          xcall pop_gset1
 0170                   .dbline 0 ; func end
 0170 0895              ret
 0172                   .dbsym r Return_code 20 c
 0172                   .dbsym r TASK_INDEX 16 kc
 0172                   .dbend
 0172                   .dbfunc s SCH_Updata _SCH_Updata fV
 0172           ;          Index -> R16
                        .even
 0172           _SCH_Updata:
 0172                   .dbline -1
 0172                   .dbline 160
 0172           ; }
 0172           ; 
 0172           ; 
 0172           ; /*---------------------------------------------------------*-
 0172           ;  * 函数名称: SCH_Update()
 0172           ;  * 入  口: 
 0172           ;  * 出  口:
 0172           ;  * 函数功能: 在调度器的中断服务程序中运行
 0172           ;  * 
 0172           ;  * 说  明: "刷新"函数,确定某个任务需要运行时,将这个任务的
 0172           ;  *                     RunMe标志加1,然后该任务将由调度程序执行.
 0172           ; -*---------------------------------------------------------*/
 0172           ; 
 0172           ; static void SCH_Updata(void)
 0172           ; {
 0172                   .dbline 162
 0172           ;       unsigned char Index;
 0172           ;       for (Index=0; Index < SCH_MAX_TASKS; Index++)
 0172 0027              clr R16
 0174 54C0              xjmp L36
 0176           L33:
 0176                   .dbline 163
 0176           ;       {
 0176                   .dbline 165
 0176           ;               // 检测这里是否有任务?
 0176           ;               if (SCH_tasks_G[Index].pTask != 0)
 0176 87E0              ldi R24,7
 0178 809F              mul R24,R16
 017A F001              movw R30,R0
 017C 80E0              ldi R24,<_SCH_tasks_G
 017E 90E0              ldi R25,>_SCH_tasks_G
 0180 E80F              add R30,R24
 0182 F91F              adc R31,R25
 0184 2080              ldd R2,z+0
 0186 3180              ldd R3,z+1
 0188 2220              tst R2
 018A 19F4              brne X4
 018C 3320              tst R3
 018E 09F4              brne X7
 0190 45C0              xjmp L37
 0192           X7:
 0192           X4:
 0192                   .dbline 166
 0192           ;               {
 0192                   .dbline 167
 0192           ;                       if (SCH_tasks_G[Index].Delay == 0)
 0192 87E0              ldi R24,7
 0194 809F              mul R24,R16
 0196 F001              movw R30,R0
 0198 80E0              ldi R24,<_SCH_tasks_G+2
 019A 90E0              ldi R25,>_SCH_tasks_G+2
 019C E80F              add R30,R24
 019E F91F              adc R31,R25
 01A0 2080              ldd R2,z+0
 01A2 3180              ldd R3,z+1
 01A4 2220              tst R2
 01A6 09F0              breq X8
 01A8 2CC0              xjmp L39
 01AA           X8:
 01AA 3320              tst R3
 01AC 09F0              breq X9
 01AE 29C0              xjmp L39
 01B0           X9:
 01B0           X5:
 01B0                   .dbline 168
 01B0           ;                       {
 01B0                   .dbline 169
 01B0           ;                               SCH_tasks_G[Index].RunMe += 1;  // RunMer标志加1
 01B0 87E0              ldi R24,7
 01B2 809F              mul R24,R16
 01B4 1001              movw R2,R0
 01B6 80E0              ldi R24,<_SCH_tasks_G+6
 01B8 90E0              ldi R25,>_SCH_tasks_G+6
 01BA 280E              add R2,R24
 01BC 391E              adc R3,R25
 01BE F101              movw R30,R2
 01C0 8081              ldd R24,z+0
 01C2 8F5F              subi R24,255    ; addi 1
 01C4 8083              std z+0,R24
 01C6                   .dbline 170
 01C6           ;                               if (SCH_tasks_G[Index].Period != 0)
 01C6 87E0              ldi R24,7
 01C8 809F              mul R24,R16
 01CA F001              movw R30,R0
 01CC 80E0              ldi R24,<_SCH_tasks_G+4
 01CE 90E0              ldi R25,>_SCH_tasks_G+4
 01D0 E80F              add R30,R24
 01D2 F91F              adc R31,R25
 01D4 2080              ldd R2,z+0
 01D6 3180              ldd R3,z+1
 01D8 2220              tst R2
 01DA 11F4              brne X6
 01DC 3320              tst R3
 01DE F1F0              breq L40
 01E0           X6:
 01E0                   .dbline 171
 01E0           ;                               {
 01E0                   .dbline 173
 01E0           ;                                       // 调度定期的任务再次运行
 01E0           ;                                       SCH_tasks_G[Index].Delay = SCH_tasks_G[Index].Period;   
 01E0 87E0              ldi R24,7
 01E2 809F              mul R24,R16
 01E4 80E0              ldi R24,<_SCH_tasks_G+4
 01E6 90E0              ldi R25,>_SCH_tasks_G+4
 01E8 F001              movw R30,R0
 01EA E80F              add R30,R24
 01EC F91F              adc R31,R25
 01EE 2080              ldd R2,z+0
 01F0 3180              ldd R3,z+1
 01F2 80E0              ldi R24,<_SCH_tasks_G+2
 01F4 90E0              ldi R25,>_SCH_tasks_G+2
 01F6 F001              movw R30,R0
 01F8 E80F              add R30,R24

⌨️ 快捷键说明

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