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

📄 schedule.lis

📁 avr单片机ATMega16对三相异步电机的智能控制源码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 01FA F91F              adc R31,R25
 01FC 3182              std z+1,R3
 01FE 2082              std z+0,R2
 0200                   .dbline 174
 0200           ;                               }
 0200                   .dbline 175
 0200           ;                       }
 0200 0DC0              xjmp L40
 0202           L39:
 0202                   .dbline 177
 0202           ;                       else
 0202           ;                       {
 0202                   .dbline 179
 0202           ;                               // 还没有准备好运行,延迟减1
 0202           ;                               SCH_tasks_G[Index].Delay -= 1;          
 0202 87E0              ldi R24,7
 0204 809F              mul R24,R16
 0206 1001              movw R2,R0
 0208 80E0              ldi R24,<_SCH_tasks_G+2
 020A 90E0              ldi R25,>_SCH_tasks_G+2
 020C 280E              add R2,R24
 020E 391E              adc R3,R25
 0210 F101              movw R30,R2
 0212 8081              ldd R24,z+0
 0214 9181              ldd R25,z+1
 0216 0197              sbiw R24,1
 0218 9183              std z+1,R25
 021A 8083              std z+0,R24
 021C                   .dbline 180
 021C           ;                       }
 021C           L40:
 021C                   .dbline 181
 021C           ;               }       
 021C           L37:
 021C                   .dbline 182
 021C           L34:
 021C                   .dbline 162
 021C 0395              inc R16
 021E           L36:
 021E                   .dbline 162
 021E 0330              cpi R16,3
 0220 08F4              brsh X10
 0222 A9CF              xjmp L33
 0224           X10:
 0224                   .dbline -2
 0224           L32:
 0224                   .dbline 0 ; func end
 0224 0895              ret
 0226                   .dbsym r Index 16 c
 0226                   .dbend
 0226                   .dbfunc e InitTimer1 _InitTimer1 fV
 0226           ;              i -> R20
                        .even
 0226           _InitTimer1::
 0226 0E940000          xcall push_gset1
 022A                   .dbline -1
 022A                   .dbline 195
 022A           ;       }
 022A           ; }
 022A           ; 
 022A           ; 
 022A           ; /*---------------------------------------------------------*-
 022A           ;  * 函数名称: SCH_Init_Timer2()
 022A           ;  * 入  口: 
 022A           ;  * 出  口:
 022A           ;  * 函数功能: 准备调度器数据结构并且设置定时器以所需的频率中断
 022A           ;  * 
 022A           ;  * 说  明: 调度器初始化化函数,必须在使用调度器之前调用它
 022A           ; -*---------------------------------------------------------*/
 022A           ; void  InitTimer1(void)                        //8MHz,10ms,64分频
 022A           ; {
 022A                   .dbline 198
 022A           ;  uchar i;
 022A           ;       
 022A           ;  for (i=0; i<SCH_MAX_TASKS; i++)
 022A 4427              clr R20
 022C 03C0              xjmp L53
 022E           L50:
 022E                   .dbline 199
 022E                   .dbline 200
 022E 042F              mov R16,R20
 0230 65DF              xcall _SCH_Delete_Task
 0232                   .dbline 201
 0232           L51:
 0232                   .dbline 198
 0232 4395              inc R20
 0234           L53:
 0234                   .dbline 198
 0234 4330              cpi R20,3
 0236 D8F3              brlo L50
 0238                   .dbline 203
 0238           ;  {
 0238           ;   SCH_Delete_Task(i);
 0238           ;  }
 0238           ; 
 0238           ;  TCCR1B = 0x00; //stop
 0238 2224              clr R2
 023A 2EBC              out 0x2e,R2
 023C                   .dbline 204
 023C           ;  TCNT1H = 0xFB; //setup
 023C 8BEF              ldi R24,251
 023E 8DBD              out 0x2d,R24
 0240                   .dbline 205
 0240           ;  TCNT1L = 0x1E;
 0240 8EE1              ldi R24,30
 0242 8CBD              out 0x2c,R24
 0244                   .dbline 206
 0244           ;  OCR1AH = 0x04;
 0244 84E0              ldi R24,4
 0246 8BBD              out 0x2b,R24
 0248                   .dbline 207
 0248           ;  OCR1AL = 0xE2;
 0248 82EE              ldi R24,226
 024A 8ABD              out 0x2a,R24
 024C                   .dbline 208
 024C           ;  OCR1BH = 0x04;
 024C 84E0              ldi R24,4
 024E 89BD              out 0x29,R24
 0250                   .dbline 209
 0250           ;  OCR1BL = 0xE2;
 0250 82EE              ldi R24,226
 0252 88BD              out 0x28,R24
 0254                   .dbline 210
 0254           ;  ICR1H  = 0x04;
 0254 84E0              ldi R24,4
 0256 87BD              out 0x27,R24
 0258                   .dbline 211
 0258           ;  ICR1L  = 0xE2;
 0258 82EE              ldi R24,226
 025A 86BD              out 0x26,R24
 025C                   .dbline 212
 025C           ;  TCCR1A = 0x00;
 025C 2FBC              out 0x2f,R2
 025E                   .dbline 213
 025E           ;  TCCR1B = 0x03; //start Timer
 025E 83E0              ldi R24,3
 0260 8EBD              out 0x2e,R24
 0262                   .dbline -2
 0262           L49:
 0262 0E940000          xcall pop_gset1
 0266                   .dbline 0 ; func end
 0266 0895              ret
 0268                   .dbsym r i 20 c
 0268                   .dbend
                        .area vector(rom, abs)
                        .org 32
 0020 0C943401          jmp _SCH_Update_Server
                        .area text(rom, con, rel)
 0268                   .dbfile E:\_ING\文档\_STQ\easy-STQ-20080712\schedule.c
 0268                   .dbfunc e SCH_Update_Server _SCH_Update_Server fV
                        .even
 0268           _SCH_Update_Server::
 0268 0E940000          xcall push_lset
 026C                   .dbline -1
 026C                   .dbline 228
 026C           ; } 
 026C           ; 
 026C           ; 
 026C           ; /*---------------------------------------------------------*-
 026C           ;  * 函数名称: SCH_Update_Server()
 026C           ;  * 入  口: 
 026C           ;  * 出  口:
 026C           ;  * 函数功能: 调度器的中断服务程序
 026C           ;  * 
 026C           ;  * 说  明: "刷新"函数,确定某个任务需要运行时,将这个任务的
 026C           ;  *                     RunMe标志加1,然后该任务将由调度程序执行.
 026C           ; -*---------------------------------------------------------*/
 026C           ; #pragma interrupt_handler SCH_Update_Server:9 //定时器溢出中断
 026C           ; void SCH_Update_Server(void)
 026C           ; {
 026C                   .dbline 229
 026C           ;   TCNT1H = 0xFB; //reload counter value
 026C 8BEF              ldi R24,251
 026E 8DBD              out 0x2d,R24
 0270                   .dbline 230
 0270           ;   TCNT1L = 0x1E; 
 0270 8EE1              ldi R24,30
 0272 8CBD              out 0x2c,R24
 0274                   .dbline 232
 0274           ;   
 0274           ;   TimeTick++;
 0274 80910000          lds R24,_TimeTick
 0278 8F5F              subi R24,255    ; addi 1
 027A 80930000          sts _TimeTick,R24
 027E                   .dbline 233
 027E           ;   MotorDelayTime++;
 027E 80910000          lds R24,_MotorDelayTime
 0282 90910100          lds R25,_MotorDelayTime+1
 0286 0196              adiw R24,1
 0288 90930100          sts _MotorDelayTime+1,R25
 028C 80930000          sts _MotorDelayTime,R24
 0290                   .dbline 236
 0290           ;   
 0290           ;   
 0290           ;   if(TimeTick%100 == 0)         //1s喂狗
 0290 14E6              ldi R17,100
 0292 00910000          lds R16,_TimeTick
 0296 0E940000          xcall mod8u
 029A 0023              tst R16
 029C 49F4              brne L55
 029E                   .dbline 237
 029E           ;   {
 029E                   .dbline 238
 029E           ;    if(TimeTick == 200)TimeTick = 0;
 029E 80910000          lds R24,_TimeTick
 02A2 883C              cpi R24,200
 02A4 19F4              brne L57
 02A6                   .dbline 238
 02A6 2224              clr R2
 02A8 20920000          sts _TimeTick,R2
 02AC           L57:
 02AC                   .dbline 239
 02AC           ;    OutWdServer();  
 02AC 0E940000          xcall _OutWdServer
 02B0                   .dbline 240
 02B0           ;   }
 02B0           L55:
 02B0                   .dbline 243
 02B0           ;   
 02B0           ;   
 02B0           ;   SCH_Updata();
 02B0 60DF              xcall _SCH_Updata
 02B2                   .dbline -2
 02B2           L54:
 02B2 0E940000          xcall pop_lset
 02B6                   .dbline 0 ; func end
 02B6 1895              reti
 02B8                   .dbend
 02B8                   .dbfunc e SCH_Start _SCH_Start fV
                        .even
 02B8           _SCH_Start::
 02B8                   .dbline -1
 02B8                   .dbline 259
 02B8           ; 
 02B8           ; }
 02B8           ; 
 02B8           ; 
 02B8           ; /*---------------------------------------------------------*-
 02B8           ;  * 函数名称: SCH_Start()
 02B8           ;  * 入  口: 
 02B8           ;  * 出  口:
 02B8           ;  * 函数功能: 通过允许中断来启动调度器
 02B8           ;  * 
 02B8           ;  * 说  明: 在添加了所有定期的任务之后调用,从而使任务保持同步.
 02B8           ;  *                     注意:应该只使能调度器中断
 02B8           ; -*---------------------------------------------------------*/
 02B8           ; 
 02B8           ; void SCH_Start(void)
 02B8           ; {
 02B8                   .dbline 260
 02B8           ;  SEI();
 02B8 7894              sei
 02BA                   .dbline -2
 02BA           L59:
 02BA                   .dbline 0 ; func end
 02BA 0895              ret
 02BC                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\_ING\文档\_STQ\easy-STQ-20080712\schedule.c
 0000           _SCH_tasks_G::
 0000                   .blkb 21
 0015                   .dbstruct 0 7 .3
 0015                   .dbfield 0 pTask pfV
 0015                   .dbfield 2 Delay i
 0015                   .dbfield 4 Period i
 0015                   .dbfield 6 RunMe c
 0015                   .dbend
 0015                   .dbsym e SCH_tasks_G _SCH_tasks_G A[21:3]S[.3]

⌨️ 快捷键说明

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