📄 workstep.lst
字号:
C51 COMPILER V7.06 WORKSTEP 01/22/2007 09:50:21 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE WORKSTEP
OBJECT MODULE PLACED IN .\output\WorkStep.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE WorkStep.C OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND OBJECT(.\output\Work
-Step.obj)
stmt level source
1 /*********************************************************************************************************
2 **相控充电机主控器系统 软件设计:刘宝贵,硬件设计:刘宝贵 调试:刘宝贵
3 **本系统使用编译器为 keil c51.exe V7.06
4 **本系统使用汇编器为 keil A51.exe V7.07
5 **本系统使用联接器为 keil BL51.exe V5.03
6 **本系统使用 RTX_TINY
7 **如果等程序有问题或者是Bug请与作者联系
8 **与作者联系方法:邮箱:baoguiliu@163.com,baoguiliu@sohu.com 电话:0451-6677970-6738
9 **
10 **
11 **VER1.0
12 **--------------文件信息--------------------------------------------------------------------------------
13 **文 件 名: WorkStep.C
14 **创 建 人: 刘宝贵
15 **最后修改日期:
16 **描 述: 工作步骤处理
17 **
18 **--------------历史版本信息----------------------------------------------------------------------------
19 ** 修改人:
20 ** 版 本:
21 ** 日 期:
22 ** 描 述:
23 **
24 **--------------当前版本修订------------------------------------------------------------------------------
25 ** 修改人:
26 ** 日 期:
27 ** 描 述:
28 **
29 **------------------------------------------------------------------------------------------------------
30 ********************************************************************************************************/
31
32 #include"includes.h"
33 uint8 bdata ErrorType;
34 sbit DeviceError = ErrorType^0;//设备故障
35 sbit DeviceDLError = ErrorType^1;//断流故障
36 sbit DeviceGLError = ErrorType^2;//过流故障
37 sbit DeviceGYError = ErrorType^3;//过压故障
38 sbit DeviceGWError = ErrorType^4;//充电机过温故障
39 sbit DeviceGWErrorIO = P1^6; //过温信号输入端
40 //sbit GL = ErrorType^0;
41 //sbit GL = ErrorType^0;
42 /*********************************************************************************************************
43 ** 函数名称: TaskWorkStep
44 ** 功能描述: 工步处理
45 ** 输 入: 无
46 ** 输 出: 无
47 ** 全局变量:
48 ** 调用模块: ClearDA
49 **
50 ** 作 者: 刘宝贵
51 ** 日 期: 2004年4月28日
52 **-------------------------------------------------------------------------------------------------------
53 ** 修改人:
54 ** 日 期:
C51 COMPILER V7.06 WORKSTEP 01/22/2007 09:50:21 PAGE 2
55 **-------------------------------------------------------------------------------------------------------
56 *********************************************************************************************************/
57 void TaskWorkStep(void) _task_ 3
58 {
59 1 RunKeySetupStep = 0;
60 1 Stop();
61 1 while (1)
62 1 {
63 2 while(State != RUN || Step > STEP_MAX)
64 2 {
65 3 os_wait(K_TMO, 50/OS_MSEL_PER_TICKS, 0);
66 3 }
67 2 for(;Step <= STEP_MAX;Step++)
68 2 {
69 3 ErrorType = 0;//清除告警信息
70 3 EepromWriteByte(E2Step ,Step);
71 3 EepromWriteByte(E2ProgramNo ,ProgramNo);
72 3 if(RunKeySetupStep==1)
73 3 {
74 4 Step--;
75 4 RunKeySetupStep = 0;
76 4 EepromWriteByte(E2Step ,Step);
77 4 }
78 3 LoadSingleStep(ProgramNo,Step);//读取工步
79 3 if(CheckSingleStep() == 0)//检测读取的工步是否合法 0:不合法。
80 3 {
81 4 Mode=99;
82 4 }
83 3 if(Mode==99 || Step == STEP_MAX)
84 3 {
85 4 RunToStop();
86 4 Step = 0;
87 4 EepromWriteByte(E2Step ,Step);
88 4 ProgramNo = 0;
89 4 EepromWriteByte(E2ProgramNo ,ProgramNo);
90 4 State = STOP;
91 4 EepromWriteByte(E2State ,State);
92 4 LastTimeS = 0;
93 4 EepromWriteWord(E2LastTimeS ,(unsigned int)(LastTimeS>>16) );
94 4 EepromWriteWord(E2LastTimeS +2,(unsigned int)LastTimeS );
95 4 AmountQ10S = 0;
96 4 EepromWriteWord(E2AmountQ10S ,(unsigned int)(AmountQ10S>>16) );
97 4 EepromWriteWord(E2AmountQ10S +2,(unsigned int)AmountQ10S );
98 4 break;
99 4 }
100 3 AmountQ10S = 0;
101 3 switch(Mode)
102 3 {
103 4 case 11://静电
104 4 {
105 5 while(1)
106 5 {
107 6 if(State==RUN)
108 6 {
109 7 Stop();
110 7 if(LastTimeS/60>=JumpTimeM)
111 7 {
112 8 break;
113 8 }
114 7 if(RunKeySetupStep==1)
115 7 {
116 8 break;
C51 COMPILER V7.06 WORKSTEP 01/22/2007 09:50:21 PAGE 3
117 8 }
118 7 }
119 6 else if(State==PAUSE)
120 6 {
121 7 while(State==PAUSE)
122 7 {
123 8 os_wait(K_TMO,100/OS_MSEL_PER_TICKS,0);
124 8 }
125 7 }
126 6 else if(State == STOP)
127 6 {
128 7 Step = STEP_MAX-1;
129 7 break;
130 7 }
131 6 os_wait(K_TMO,500/OS_MSEL_PER_TICKS,0);
132 6 }
133 5 }break;
134 4 case 22://充电 分为恒流充电和恒压充电两种 恒流时不能设置控制电压 恒压时不能设电压转换条件
135 4 case 33://再充电 按设置电流值进行恒流充电控制,直至人为结束该阶段
136 4 {
137 5 if(SetupU==0)//恒流充电 转换条件有 时间 电压 电量
138 5 {
139 6 StopToCharge();
140 6 while(1)
141 6 {
142 7 if(State==RUN)
143 7 {
144 8 if(RunKeySetupStep==1)
145 8 {
146 9 RunToStop();
147 9 break;
148 9 }
149 8 if(LastTimeS/60>=JumpTimeM || MeasureU >= JumpU || AmountQ10S/36000 >= Jum
-pQ)
150 8 {
151 9 RunToStop();
152 9 break;
153 9 }
154 8 }
155 7 else if(State==PAUSE)
156 7 {
157 8 RunToStop();
158 8 while(State==PAUSE)
159 8 {
160 9 os_wait(K_TMO,100/OS_MSEL_PER_TICKS,0);
161 9 }
162 8 StopToCharge();
163 8 }
164 7 else if(State == STOP)
165 7 {
166 8 RunToStop();
167 8 Step = STEP_MAX-1;
168 8 break;
169 8 }
170 7 os_wait(K_TMO,500/OS_MSEL_PER_TICKS,0);
171 7 }
172 6 }
173 5 else if(JumpU==0)//恒压充电 转换条件有 时间 电量,过程是先恒流充到设定电压再恒压到转换
-条件
174 5 {
175 6 unsigned char count;
176 6 count = 0;
C51 COMPILER V7.06 WORKSTEP 01/22/2007 09:50:21 PAGE 4
177 6 StopToCharge();
178 6 while(1)//恒流恒压充电充到转换条件
179 6 {
180 7 if(State==RUN)
181 7 {
182 8 if(MeasureRealU > SetupU)//电压大于设定值
183 8 {
184 9 if(MeasureRealU - SetupU > 10)//实时的测量值比设定值大1V以上5秒钟调一
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -