📄 task_init.lis
字号:
.module task_init.c
.area text(rom, con, rel)
0000 .dbfile ..\..\..\..\DOCUME~1\Administrator\桌面\手操器\task_init.c
0000 .dbfile C:\DOCUME~1\Administrator\桌面\手操器\task_init.c
0000 .dbfunc e TaskInit _TaskInit fV
0000 ; i -> <dead>
.even
0000 _TaskInit::
0000 AA92 st -y,R10
0002 .dbline -1
0002 .dbline 39
0002 ; #include <iom16v.h>
0002 ; #include <macros.h>
0002 ; #include "eeprom.h"
0002 ; #include "TypeDef.h"
0002 ; extern unsigned char disp_flag;
0002 ; extern unsigned char TaskState[MAX_TASK_NUM];
0002 ; extern unsigned int No_key_count;
0002 ; extern unsigned char KeyIdleTimer;
0002 ; extern unsigned char DisStatus;
0002 ; extern unsigned char SampleTimer;
0002 ; extern unsigned char Para_mody;
0002 ; extern unsigned char Para_mody_count;
0002 ; extern unsigned char Para_Dis_mody;
0002 ; /***************************************************************************/
0002 ; extern unsigned char SysErrorCode;
0002 ; extern DataPackageType Current4_20mA;
0002 ; extern DataPackageType OutputSignal;
0002 ; union{
0002 ; unsigned char E2PROMBuffer[4];
0002 ; struct{
0002 ; unsigned int WritedVariable;
0002 ; unsigned char Xor1;
0002 ; unsigned char Xor2;
0002 ; }SingleVariable;
0002 ; }BufferForWriteE2PROM;
0002 ; extern unsigned int CurrentOut;
0002 ; extern unsigned char DisBuffer[8];
0002 ; extern unsigned char KeyContinusPressCount;
0002 ; extern unsigned char InterKeyTimer;
0002 ; extern unsigned char ReadAPageFromE2PROMAndCheckIt(unsigned int E2PROMAddr);
0002 ; extern void WriteUnsignedIntToE2PROM(unsigned int WritedVariable,unsigned int E2PROMAddr);
0002 ; extern unsigned int NeedModifyVariable;
0002 ; extern unsigned int NeedModifyVariableLowLimit;
0002 ; extern unsigned int NeedModifyVariableHighLimit;
0002 ; //----------------------------------------------------------------------
0002 ; //任务初始化
0002 ; //各个任务的状态,及所用到的变量,以及从E2PROM中读取参数。
0002 ; void TaskInit(void)
0002 ; {
0002 .dbline 41
0002 ; unsigned char i;
0002 ; TaskState[SAMPLE_TASK] =TASK_WAITTING_EVENT;
0002 81E0 ldi R24,1
0004 80930300 sts _TaskState+3,R24
0008 .dbline 42
0008 ; TaskState[CALCULATE_TASK] =TASK_WAITTING_EVENT;
0008 80930100 sts _TaskState+1,R24
000C .dbline 43
000C ; TaskState[KEY_PROC_TASK] =TASK_WAITTING_EVENT;
000C 80930000 sts _TaskState,R24
0010 .dbline 44
0010 ; TaskState[SYS_TIMER_TASK] =TASK_WAITTING_EVENT;
0010 80930200 sts _TaskState+2,R24
0014 .dbline 47
0014 ;
0014 ; //TASK_WAITTING_EVENT为1 把TaskState初始化为1等待状态
0014 ; KeyIdleTimer=0;
0014 2224 clr R2
0016 20920000 sts _KeyIdleTimer,R2
001A .dbline 48
001A ; SysErrorCode=0;
001A 20920000 sts _SysErrorCode,R2
001E .dbline 49
001E ; Para_mody=0;
001E 20920000 sts _Para_mody,R2
0022 .dbline 50
0022 ; Para_Dis_mody=0;
0022 20920000 sts _Para_Dis_mody,R2
0026 .dbline 51
0026 ; Para_mody_count=0;
0026 20920000 sts _Para_mody_count,R2
002A .dbline 52
002A ; DisStatus=Working_DDS;
002A 20920000 sts _DisStatus,R2
002E .dbline 54
002E ;
002E ; if( ReadAPageFromE2PROMAndCheckIt(CurrentADLo_E2PROM) )
002E 08E1 ldi R16,24
0030 10E0 ldi R17,0
0032 0E940000 xcall _ReadAPageFromE2PROMAndCheckIt
0036 0023 tst R16
0038 49F0 breq L11
003A X0:
003A .dbline 55
003A ; Current4_20mA.AdLo.Word=BufferForWriteE2PROM.SingleVariable.WritedVariable;//unsigned int
003A 20900000 lds R2,_BufferForWriteE2PROM
003E 30900100 lds R3,_BufferForWriteE2PROM+1
0042 30920300 sts _Current4_20mA+2+1,R3
0046 20920200 sts _Current4_20mA+2,R2
004A 06C0 xjmp L12
004C L11:
004C .dbline 57
004C ; else
004C ; Current4_20mA.AdLo.Word=159;
004C 8FE9 ldi R24,159
004E 90E0 ldi R25,0
0050 90930300 sts _Current4_20mA+2+1,R25
0054 80930200 sts _Current4_20mA+2,R24
0058 L12:
0058 .dbline 58
0058 ; if( ReadAPageFromE2PROMAndCheckIt(CurrentADHi_E2PROM) )
0058 04E1 ldi R16,20
005A 10E0 ldi R17,0
005C 0E940000 xcall _ReadAPageFromE2PROMAndCheckIt
0060 0023 tst R16
0062 49F0 breq L15
0064 X1:
0064 .dbline 59
0064 ; Current4_20mA.AdHi.Word=BufferForWriteE2PROM.SingleVariable.WritedVariable;//unsigned int
0064 20900000 lds R2,_BufferForWriteE2PROM
0068 30900100 lds R3,_BufferForWriteE2PROM+1
006C 30920100 sts _Current4_20mA+1,R3
0070 20920000 sts _Current4_20mA,R2
0074 06C0 xjmp L16
0076 L15:
0076 .dbline 61
0076 ; else
0076 ; Current4_20mA.AdHi.Word=798;
0076 8EE1 ldi R24,798
0078 93E0 ldi R25,3
007A 90930100 sts _Current4_20mA+1,R25
007E 80930000 sts _Current4_20mA,R24
0082 L16:
0082 .dbline 62
0082 ; Current4_20mA.PvHi.Word=1000;
0082 88EE ldi R24,1000
0084 93E0 ldi R25,3
0086 90930500 sts _Current4_20mA+4+1,R25
008A 80930400 sts _Current4_20mA+4,R24
008E .dbline 63
008E ; Current4_20mA.Pv=0;
008E 2224 clr R2
0090 3324 clr R3
0092 30920B00 sts _Current4_20mA+10+1,R3
0096 20920A00 sts _Current4_20mA+10,R2
009A .dbline 64
009A ; Current4_20mA.PvLo.Word=0;
009A 30920700 sts _Current4_20mA+6+1,R3
009E 20920600 sts _Current4_20mA+6,R2
00A2 .dbline 66
00A2 ;
00A2 ; if( ReadAPageFromE2PROMAndCheckIt(CurrentPvLo_E2PROM) )
00A2 00E1 ldi R16,16
00A4 10E0 ldi R17,0
00A6 0E940000 xcall _ReadAPageFromE2PROMAndCheckIt
00AA A02E mov R10,R16
00AC 0023 tst R16
00AE 49F0 breq L20
00B0 X2:
00B0 .dbline 67
00B0 ; OutputSignal.PvLo.Word=BufferForWriteE2PROM.SingleVariable.WritedVariable;//unsigned int
00B0 20900000 lds R2,_BufferForWriteE2PROM
00B4 30900100 lds R3,_BufferForWriteE2PROM+1
00B8 30920700 sts _OutputSignal+6+1,R3
00BC 20920600 sts _OutputSignal+6,R2
00C0 06C0 xjmp L21
00C2 L20:
00C2 .dbline 69
00C2 ; else
00C2 ; OutputSignal.PvLo.Word=15000;
00C2 88E9 ldi R24,15000
00C4 9AE3 ldi R25,58
00C6 90930700 sts _OutputSignal+6+1,R25
00CA 80930600 sts _OutputSignal+6,R24
00CE L21:
00CE .dbline 70
00CE ; if( ReadAPageFromE2PROMAndCheckIt(CurrentPvHi_E2PROM) )
00CE 0CE0 ldi R16,12
00D0 10E0 ldi R17,0
00D2 0E940000 xcall _ReadAPageFromE2PROMAndCheckIt
00D6 A02E mov R10,R16
00D8 0023 tst R16
00DA 49F0 breq L24
00DC X3:
00DC .dbline 71
00DC ; OutputSignal.PvHi.Word=BufferForWriteE2PROM.SingleVariable.WritedVariable;//unsigned int
00DC 20900000 lds R2,_BufferForWriteE2PROM
00E0 30900100 lds R3,_BufferForWriteE2PROM+1
00E4 30920500 sts _OutputSignal+4+1,R3
00E8 20920400 sts _OutputSignal+4,R2
00EC 06C0 xjmp L25
00EE L24:
00EE .dbline 73
00EE ; else
00EE ; OutputSignal.PvHi.Word=50000;
00EE 80E5 ldi R24,50000
00F0 93EC ldi R25,195
00F2 90930500 sts _OutputSignal+4+1,R25
00F6 80930400 sts _OutputSignal+4,R24
00FA L25:
00FA .dbline 75
00FA ;
00FA ; if(OutputSignal.PvHi.Word<=OutputSignal.PvLo.Word)
00FA 20900600 lds R2,_OutputSignal+6
00FE 30900700 lds R3,_OutputSignal+6+1
0102 40900400 lds R4,_OutputSignal+4
0106 50900500 lds R5,_OutputSignal+4+1
010A 2414 cp R2,R4
010C 3504 cpc R3,R5
010E 28F0 brlo L28
0110 X4:
0110 .dbline 76
0110 ; SysErrorCode|=OUT_CURRENT_ERROR;
0110 80910000 lds R24,_SysErrorCode
0114 8061 ori R24,16
0116 80930000 sts _SysErrorCode,R24
011A L28:
011A .dbline 77
011A ; OutputSignal.Adv=0;
011A 2224 clr R2
011C 3324 clr R3
011E 30920900 sts _OutputSignal+8+1,R3
0122 20920800 sts _OutputSignal+8,R2
0126 .dbline 78
0126 ; OutputSignal.AdHi.Word=1000;
0126 88EE ldi R24,1000
0128 93E0 ldi R25,3
012A 90930100 sts _OutputSignal+1,R25
012E 80930000 sts _OutputSignal,R24
0132 .dbline 79
0132 ; OutputSignal.AdLo.Word=0;
0132 30920300 sts _OutputSignal+2+1,R3
0136 20920200 sts _OutputSignal+2,R2
013A .dbline 81
013A ;
013A ; KeyContinusPressCount=0;
013A 20920000 sts _KeyContinusPressCount,R2
013E .dbline 82
013E ; InterKeyTimer=InterKeyCOUNT1;
013E 8EE1 ldi R24,30
0140 80930000 sts _InterKeyTimer,R24
0144 .dbline 84
0144 ;
0144 ; No_key_count=0;
0144 30920100 sts _No_key_count+1,R3
0148 20920000 sts _No_key_count,R2
014C .dbline 85
014C ; SampleTimer=10;//100ms
014C 8AE0 ldi R24,10
014E 80930000 sts _SampleTimer,R24
0152 .dbline 86
0152 ; Current4_20mA.Pv=0;
0152 30920B00 sts _Current4_20mA+10+1,R3
0156 20920A00 sts _Current4_20mA+10,R2
015A .dbline 88
015A ;
015A ; disp_flag=1;
015A 81E0 ldi R24,1
015C 80930000 sts _disp_flag,R24
0160 .dbline 89
0160 ; NeedModifyVariable=OutputSignal.Adv;
0160 30920100 sts _NeedModifyVariable+1,R3
0164 20920000 sts _NeedModifyVariable,R2
0168 .dbline 90
0168 ; NeedModifyVariableLowLimit=0;
0168 30920100 sts _NeedModifyVariableLowLimit+1,R3
016C 20920000 sts _NeedModifyVariableLowLimit,R2
0170 .dbline 91
0170 ; NeedModifyVariableHighLimit=1000;
0170 88EE ldi R24,232
0172 90930100 sts _NeedModifyVariableHighLimit+1,R25
0176 80930000 sts _NeedModifyVariableHighLimit,R24
017A .dbline -2
017A L7:
017A .dbline 0 ; func end
017A A990 ld R10,y+
017C 0895 ret
017E .dbsym l i 1 c
017E .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\手操器\task_init.c
0000 _BufferForWriteE2PROM::
0000 .blkb 4
0004 .dbstruct 0 4 .6
0004 .dbfield 0 WritedVariable i
0004 .dbfield 2 Xor1 c
0004 .dbfield 3 Xor2 c
0004 .dbend
0004 .dbunion 0 4 .5
0004 .dbfield 0 E2PROMBuffer A[4:4]c
0004 .dbfield 0 SingleVariable S[.6]
0004 .dbend
0004 .dbsym e BufferForWriteE2PROM _BufferForWriteE2PROM S[.5]
0004 ;
0004 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -