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

📄 task_run.lis

📁 手操器
💻 LIS
字号:
                        .module task_run.c
                        .area text(rom, con, rel)
 0000                   .dbfile ..\..\..\..\DOCUME~1\Administrator\桌面\手操器\task_run.c
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\手操器\task_run.c
 0000                   .dbfunc e ScranTask _ScranTask fV
                        .even
 0000           _ScranTask::
 0000                   .dbline -1
 0000                   .dbline 24
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; #include "TypeDef.h"
 0000           ; 
 0000           ; extern unsigned char TaskState[MAX_TASK_NUM];//  用于任务调度     4个
 0000           ; extern void UpdateDisplay(void);
 0000           ; extern void CalculateTask(void);
 0000           ; extern void KeyProcTask(void);
 0000           ; extern void SampleTask(void);
 0000           ; extern void ScranKey(void);
 0000           ; 
 0000           ; unsigned char KeyIdleTimer;
 0000           ; unsigned char SampleTimer;
 0000           ; 
 0000           ; unsigned char DisplayMark ;
 0000           ; unsigned char DisTimerC ;
 0000           ; unsigned int  No_key_count;
 0000           ; unsigned char Para_mody;
 0000           ; unsigned char Para_mody_count;
 0000           ; 
 0000           ; //扫描任务
 0000           ; //--------------------------------------------------------------------------------------
 0000           ; void ScranTask(void)
 0000           ; {
 0000                   .dbline 25
 0000           ;       if(TaskState[KEY_PROC_TASK]==TASK_WAITTING_EVENT)
 0000 80910000          lds R24,_TaskState
 0004 8130              cpi R24,1
 0006 11F4              brne L6
 0008           X0:
 0008                   .dbline 26
 0008           ;               ScranKey();
 0008 0E940000          xcall _ScranKey
 000C           L6:
 000C                   .dbline 28
 000C           ; 
 000C           ;       if(DisplayMark)
 000C 20900500          lds R2,_DisplayMark
 0010 2220              tst R2
 0012 29F0              breq L8
 0014           X1:
 0014                   .dbline 29
 0014           ;       {
 0014                   .dbline 30
 0014           ;           DisplayMark=0;      
 0014 2224              clr R2
 0016 20920500          sts _DisplayMark,R2
 001A                   .dbline 31
 001A           ;               UpdateDisplay();
 001A 0E940000          xcall _UpdateDisplay
 001E                   .dbline 32
 001E           ;       }
 001E           L8:
 001E                   .dbline -2
 001E           L5:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbend
 0020                   .dbfunc e SysTimerTask _SysTimerTask fV
                        .even
 0020           _SysTimerTask::
 0020                   .dbline -1
 0020                   .dbline 39
 0020           ; }
 0020           ; 
 0020           ; //系统时钟任务
 0020           ; //--------------------------------------------------------------------------------------
 0020           ; 
 0020           ; void SysTimerTask(void)
 0020           ; {     
 0020                   .dbline 42
 0020           ; 
 0020           ;        
 0020           ;     if(KeyIdleTimer>0)
 0020 80E0              ldi R24,0
 0022 20900700          lds R2,_KeyIdleTimer
 0026 8215              cp R24,R2
 0028 48F4              brsh L11
 002A           X2:
 002A                   .dbline 43
 002A           ;     {
 002A                   .dbline 44
 002A           ;         KeyIdleTimer--;
 002A 822D              mov R24,R2
 002C 8150              subi R24,1
 002E 80930700          sts _KeyIdleTimer,R24
 0032                   .dbline 45
 0032           ;         if(KeyIdleTimer==0)
 0032 8823              tst R24
 0034 19F4              brne L13
 0036           X3:
 0036                   .dbline 46
 0036           ;         {
 0036                   .dbline 47
 0036           ;             TaskState[KEY_PROC_TASK]=TASK_WAITTING_EVENT;
 0036 81E0              ldi R24,1
 0038 80930000          sts _TaskState,R24
 003C                   .dbline 48
 003C           ;         }
 003C           L13:
 003C                   .dbline 49
 003C           ;     }
 003C           L11:
 003C                   .dbline 51
 003C           ; 
 003C           ;       if(SampleTimer>0)
 003C 80E0              ldi R24,0
 003E 20900600          lds R2,_SampleTimer
 0042 8215              cp R24,R2
 0044 48F4              brsh L15
 0046           X4:
 0046                   .dbline 52
 0046           ;       {
 0046                   .dbline 53
 0046           ;               SampleTimer--;
 0046 822D              mov R24,R2
 0048 8150              subi R24,1
 004A 80930600          sts _SampleTimer,R24
 004E                   .dbline 54
 004E           ;               if( SampleTimer==0 )
 004E 8823              tst R24
 0050 19F4              brne L17
 0052           X5:
 0052                   .dbline 55
 0052           ;                       TaskState[SAMPLE_TASK]=TASK_READY;
 0052 2224              clr R2
 0054 20920300          sts _TaskState+3,R2
 0058           L17:
 0058                   .dbline 56
 0058           ;       }
 0058           L15:
 0058                   .dbline 58
 0058           ; 
 0058           ;       DisTimerC++;
 0058 80910400          lds R24,_DisTimerC
 005C 8F5F              subi R24,255    ; addi 1
 005E 80930400          sts _DisTimerC,R24
 0062                   .dbline 59
 0062           ;       if( DisTimerC>=30 )
 0062 8E31              cpi R24,30
 0064 30F0              brlo L20
 0066           X6:
 0066                   .dbline 60
 0066           ;       {
 0066                   .dbline 61
 0066           ;       DisplayMark=1;
 0066 81E0              ldi R24,1
 0068 80930500          sts _DisplayMark,R24
 006C                   .dbline 62
 006C           ;       DisTimerC=0;
 006C 2224              clr R2
 006E 20920400          sts _DisTimerC,R2
 0072                   .dbline 63
 0072           ;       }
 0072           L20:
 0072                   .dbline 65
 0072           ;       
 0072           ;        No_key_count++; 
 0072 80910200          lds R24,_No_key_count
 0076 90910300          lds R25,_No_key_count+1
 007A 0196              adiw R24,1
 007C 90930300          sts _No_key_count+1,R25
 0080 80930200          sts _No_key_count,R24
 0084                   .dbline 67
 0084           ;        
 0084           ;       if(Para_mody==1)
 0084 80910100          lds R24,_Para_mody
 0088 8130              cpi R24,1
 008A 29F4              brne L22
 008C           X7:
 008C                   .dbline 68
 008C           ;       Para_mody_count++;
 008C 80910000          lds R24,_Para_mody_count
 0090 8F5F              subi R24,255    ; addi 1
 0092 80930000          sts _Para_mody_count,R24
 0096           L22:
 0096                   .dbline 71
 0096           ; 
 0096           ;        
 0096           ;     TaskState[SYS_TIMER_TASK]=TASK_WAITTING_TIME;    
 0096 83E0              ldi R24,3
 0098 80930200          sts _TaskState+2,R24
 009C                   .dbline -2
 009C           L10:
 009C                   .dbline 0 ; func end
 009C 0895              ret
 009E                   .dbend
 009E                   .dbfunc e GetTaskId _GetTaskId fc
 009E           ;              i -> R16
                        .even
 009E           _GetTaskId::
 009E                   .dbline -1
 009E                   .dbline 76
 009E           ; }
 009E           ; //--------------------------------------------------------------------------------------    
 009E           ; //查看需要执行的函数。
 009E           ; unsigned char GetTaskId(void)
 009E           ; {
 009E                   .dbline 79
 009E           ;     unsigned char i;
 009E           ;     
 009E           ;     for(i=0;i<MAX_TASK_NUM;i++)
 009E 0027              clr R16
 00A0 0BC0              xjmp L29
 00A2           L26:
 00A2                   .dbline 80
 00A2           ;     {
 00A2                   .dbline 81
 00A2           ;         if(TaskState[i]==TASK_READY)
 00A2 80E0              ldi R24,<_TaskState
 00A4 90E0              ldi R25,>_TaskState
 00A6 E02F              mov R30,R16
 00A8 FF27              clr R31
 00AA E80F              add R30,R24
 00AC F91F              adc R31,R25
 00AE 2080              ldd R2,z+0
 00B0 2220              tst R2
 00B2 09F4              brne L30
 00B4           X8:
 00B4                   .dbline 82
 00B4           ;         break;
 00B4 03C0              xjmp L28
 00B6           L30:
 00B6                   .dbline 83
 00B6           ;     }
 00B6           L27:
 00B6                   .dbline 79
 00B6 0395              inc R16
 00B8           L29:
 00B8                   .dbline 79
 00B8 0430              cpi R16,4
 00BA 98F3              brlo L26
 00BC           X9:
 00BC           L28:
 00BC                   .dbline 84
 00BC           ;     return i;    
 00BC                   .dbline -2
 00BC           L25:
 00BC                   .dbline 0 ; func end
 00BC 0895              ret
 00BE                   .dbsym r i 16 c
 00BE                   .dbend
 00BE                   .dbfunc e TaskRun _TaskRun fV
 00BE           ;         TaskId -> R10
                        .even
 00BE           _TaskRun::
 00BE 0E940000          xcall push_xgset300C
 00C2                   .dbline -1
 00C2                   .dbline 92
 00C2           ; }
 00C2           ; 
 00C2           ; //任务切换函数
 00C2           ; //任务调度函数。
 00C2           ; //--------------------------------------------------------------------------------------
 00C2           ; 
 00C2           ; void TaskRun(void)
 00C2           ; {
 00C2 21C0              xjmp L34
 00C4           L33:
 00C4                   .dbline 96
 00C4           ;  unsigned char TaskId;
 00C4           ;     
 00C4           ;     while(1)
 00C4           ;     {
 00C4                   .dbline 97
 00C4           ;        WDR ();                 //看门狗复位         
 00C4 A895              wdr
 00C6                   .dbline 98
 00C6           ;          TaskId=GetTaskId();         
 00C6 EBDF              xcall _GetTaskId
 00C8 A02E              mov R10,R16
 00CA                   .dbline 99
 00CA           ;          switch(TaskId)
 00CA 4A2D              mov R20,R10
 00CC 5527              clr R21
 00CE 4030              cpi R20,0
 00D0 4507              cpc R20,R21
 00D2 81F0              breq L40
 00D4           X10:
 00D4 4130              cpi R20,1
 00D6 E0E0              ldi R30,0
 00D8 5E07              cpc R21,R30
 00DA 49F0              breq L39
 00DC           X11:
 00DC 4230              cpi R20,2
 00DE E0E0              ldi R30,0
 00E0 5E07              cpc R21,R30
 00E2 59F0              breq L41
 00E4           X12:
 00E4 4330              cpi R20,3
 00E6 E0E0              ldi R30,0
 00E8 5E07              cpc R21,R30
 00EA 49F0              breq L42
 00EC           X13:
 00EC 0BC0              xjmp L36
 00EE           L39:
 00EE                   .dbline 103
 00EE           ;          {
 00EE           ;    
 00EE           ;              case CALCULATE_TASK:             
 00EE           ;                    CalculateTask();
 00EE 0E940000          xcall _CalculateTask
 00F2                   .dbline 104
 00F2           ;              break;
 00F2 09C0              xjmp L37
 00F4           L40:
 00F4                   .dbline 107
 00F4           ;              
 00F4           ;              case KEY_PROC_TASK:             
 00F4           ;                    KeyProcTask();                 
 00F4 0E940000          xcall _KeyProcTask
 00F8                   .dbline 108
 00F8           ;              break;          
 00F8 06C0              xjmp L37
 00FA           L41:
 00FA                   .dbline 111
 00FA           ; 
 00FA           ;              case SYS_TIMER_TASK:             
 00FA           ;                    SysTimerTask();
 00FA 92DF              xcall _SysTimerTask
 00FC                   .dbline 112
 00FC           ;              break;
 00FC 04C0              xjmp L37
 00FE           L42:
 00FE                   .dbline 115
 00FE           ;              
 00FE           ;              case SAMPLE_TASK:             
 00FE           ;                    SampleTask();
 00FE 0E940000          xcall _SampleTask
 0102                   .dbline 116
 0102           ;              break;
 0102 01C0              xjmp L37
 0104           L36:
 0104                   .dbline 120
 0104           ;                                             
 0104           ;              default:
 0104           ;              
 0104           ;                    ScranTask();
 0104 7DDF              xcall _ScranTask
 0106                   .dbline 121
 0106           ;              break;    
 0106           L37:
 0106                   .dbline 125
 0106           ;         
 0106           ;          }    
 0106           ; 
 0106           ;     }
 0106           L34:
 0106                   .dbline 95
 0106 DECF              xjmp L33
 0108           X14:
 0108                   .dbline -2
 0108           L32:
 0108                   .dbline 0 ; func end
 0108 0C940000          xjmp pop_xgset300C
 010C                   .dbsym r TaskId 10 c
 010C                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\手操器\task_run.c
 0000           _Para_mody_count::
 0000                   .blkb 1
 0001                   .dbsym e Para_mody_count _Para_mody_count c
 0001           _Para_mody::
 0001                   .blkb 1
 0002                   .dbsym e Para_mody _Para_mody c
 0002           _No_key_count::
 0002                   .blkb 2
 0004                   .dbsym e No_key_count _No_key_count i
 0004           _DisTimerC::
 0004                   .blkb 1
 0005                   .dbsym e DisTimerC _DisTimerC c
 0005           _DisplayMark::
 0005                   .blkb 1
 0006                   .dbsym e DisplayMark _DisplayMark c
 0006           _SampleTimer::
 0006                   .blkb 1
 0007                   .dbsym e SampleTimer _SampleTimer c
 0007           _KeyIdleTimer::
 0007                   .blkb 1
 0008                   .dbsym e KeyIdleTimer _KeyIdleTimer c
 0008           ; }
 0008           ; 
 0008           ; 
 0008           ; 
 0008           ; 

⌨️ 快捷键说明

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