?? task_run.lis
字號(hào):
.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];// 用于任務(wù)調(diào)度 4個(gè)
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 ; //掃描任務(wù)
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 ; //系統(tǒng)時(shí)鐘任務(wù)
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 ; //查看需要執(zhí)行的函數(shù)。
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 ; //任務(wù)切換函數(shù)
00C2 ; //任務(wù)調(diào)度函數(shù)。
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 (); //看門(mén)狗復(fù)位
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 ;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -