📄 subprog.lst
字号:
C51 COMPILER V7.06 SUBPROG 01/22/2007 09:50:03 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE SUBPROG
OBJECT MODULE PLACED IN .\output\SubProg.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SubProg.C OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND OBJECT(.\output\SubPr
-og.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 **文 件 名: SubProg.C
14 **创 建 人: 刘宝贵
15 **最后修改日期:
16 **描 述: 本项目所用子函数
17 **
18 **--------------历史版本信息----------------------------------------------------------------------------
19 ** 修改人:
20 ** 版 本:
21 ** 日 期:
22 ** 描 述:
23 **
24 **--------------当前版本修订------------------------------------------------------------------------------
25 ** 修改人:
26 ** 日 期:
27 ** 描 述:
28 **
29 **------------------------------------------------------------------------------------------------------
30 ********************************************************************************************************/
31
32 #include"includes.h"
33 sbit ALE = P2^0;
34 /*********************************************************************************************************
35 ** 函数名称: ReadLoopTimes
36 ** 功能描述: 在由蝶式键盘或通信重新启动工步运行时要读取所设定的循环次数
37 ** 输 入:
38 ** 输 出: 将读出的巡环次数放入变量RemainLoopTimes并写入EEPROM
39 ** 全局变量:
40 ** 调用模块:
41 **
42 ** 作 者: 刘宝贵
43 ** 日 期: 2006年1月17日
44 **-------------------------------------------------------------------------------------------------------
45 ** 修改人:
46 ** 日 期:
47 **-------------------------------------------------------------------------------------------------------
48 *********************************************************************************************************/
49 void ReadLoopTimes()
50 {
51 1 unsigned char i;
52 1 for(i=0;i<STEP_MAX;i++)
53 1 {
54 2 Mode = EepromReadByte(ProgramNo*600 + i*20 + 2*0);
C51 COMPILER V7.06 SUBPROG 01/22/2007 09:50:03 PAGE 2
55 2 if(Mode==99)
56 2 {
57 3 RemainLoopTimes = 0;
58 3 EepromWriteByte(E2RemainLoopTimes ,RemainLoopTimes);
59 3 break;
60 3 }
61 2 if(Mode==77)//如果是设循环次数
62 2 {
63 3 RemainLoopTimes = EepromReadByte(ProgramNo*600 + i*20 + 2*1);
64 3 EepromWriteByte(E2RemainLoopTimes ,RemainLoopTimes);
65 3 break;
66 3 }
67 2 }
68 1 i = 0;
69 1 }
70
71 /*********************************************************************************************************
72 ** 函数名称: CheckSingleStep
73 ** 功能描述:
74 ** 输 入: 无
75 ** 输 出: 0:此工步非法,1:此工步合法
76 ** 全局变量:
77 ** 调用模块:
78 **
79 ** 作 者: 刘宝贵
80 ** 日 期: 2006年1月17日
81 **-------------------------------------------------------------------------------------------------------
82 ** 修改人:
83 ** 日 期:
84 **-------------------------------------------------------------------------------------------------------
85 *********************************************************************************************************/
86 unsigned char CheckSingleStep(void)
87 {
88 1 bit flag = 1;
89 1 switch(Mode)
90 1 {
91 2 case 11://静电
92 2 {
93 3 if(JumpTimeM>JUMP_TIME_M_MAX)
94 3 {
95 4 flag = 0;
96 4 }
97 3 }break;
98 2 case 22://充电
99 2 case 33://再充电
100 2 {
101 3 if(SetupU==0 && JumpU==0)
102 3 {
103 4 flag = 0;
104 4 }
105 3 if(SetupI>SETUP_I_MAX)
106 3 {
107 4 flag = 0;
108 4 }
109 3 if( SetupU>SETUP_U_MAX)
110 3 {
111 4 flag = 0;
112 4 }
113 3 if(JumpTimeM > JUMP_TIME_M_MAX)
114 3 {
115 4 flag = 0;
116 4 }
C51 COMPILER V7.06 SUBPROG 01/22/2007 09:50:03 PAGE 3
117 3 if(JumpU > JUMP_U_MAX)
118 3 {
119 4 flag = 0;
120 4 }
121 3 if(JumpQ > JUMP_Q_MAX )
122 3 {
123 4 flag = 0;
124 4 }
125 3 }break;
126 2 case 44://放电
127 2 {
128 3 if(SetupU!=0 || JumpU==0)
129 3 {
130 4 flag = 0;
131 4 }
132 3 if(SetupI>SETUP_I_MAX)
133 3 {
134 4 flag = 0;
135 4 }
136 3 if( SetupU>SETUP_U_MAX)
137 3 {
138 4 flag = 0;
139 4 }
140 3 if(JumpTimeM > JUMP_TIME_M_MAX)
141 3 {
142 4 flag = 0;
143 4 }
144 3 if(JumpU > JUMP_U_MAX)
145 3 {
146 4 flag = 0;
147 4 }
148 3 if(JumpQ > JUMP_Q_MAX )
149 3 {
150 4 flag = 0;
151 4 }
152 3 }break;
153 2 case 88://反充电
154 2 {
155 3 if(SetupU!=0 || JumpU!=0)
156 3 {
157 4 flag = 0;
158 4 }
159 3 if(SetupI>SETUP_I_MAX)
160 3 {
161 4 flag = 0;
162 4 }
163 3 if(JumpTimeM > JUMP_TIME_M_MAX)
164 3 {
165 4 flag = 0;
166 4 }
167 3 }break;
168 2 case 55://设置电量
169 2 {
170 3 if(JumpQ > JUMP_Q_MAX)
171 3 {
172 4 flag = 0;
173 4 }
174 3 }break;
175 2 case 66://设置循环起始点
176 2 {
177 3 }break;
178 2 case 77://设置循环次数
C51 COMPILER V7.06 SUBPROG 01/22/2007 09:50:03 PAGE 4
179 2 {
180 3 if(LoopTimes > LOOP_TIMES_MAX)
181 3 {
182 4 flag = 0;
183 4 }
184 3 }break;
185 2 case 99://结束
186 2 {
187 3 if(SetupCurrentDirection>1)
188 3 {
189 4 flag = 0;
190 4 }
191 3 }break;
192 2 default:
193 2 {
194 3 flag = 0;
195 3 }
196 2 }
197 1 if(ProgramNo>PROGRAM_NO_MAX || Step>STEP_MAX)
198 1 {
199 2 flag = 0;
200 2 }
201 1 return (flag);
202 1 }
203 /*********************************************************************************************************
204 ** 函数名称: SaveSingleStep()
205 ** 功能描述: 将内存中的单步工步信息存入串行EEPROM
206 ** 输 入:
207 ** 输 出:
208 ** 全局变量: ProgramNo,Step,Mode,LoopTimes,SetupI,SetupU,IntervalTimeM,JumpTimeM,JumpU,JumpQ
209 ** 调用模块:
210 ** 注 意:
211 ** 作 者:
212 ** 日 期:
213 **-------------------------------------------------------------------------------------------------------
214 ** 修改人:
215 ** 日 期:
216 **-------------------------------------------------------------------------------------------------------
217 *********************************************************************************************************/
218 void SaveSingleStep(void)
219 {
220 1 EepromWriteByte(ProgramNo*600 + Step*20 + 2*0 , Mode);
221 1 EepromWriteByte(ProgramNo*600 + Step*20 + 2*1 , LoopTimes);
222 1 EepromWriteWord(ProgramNo*600 + Step*20 + 2*2 , SetupI);
223 1 EepromWriteWord(ProgramNo*600 + Step*20 + 2*3 , SetupU);
224 1 // EepromWriteWord(ProgramNo*600 + Step*20 + 2*4 , IntervalTimeM);
225 1 EepromWriteWord(ProgramNo*600 + Step*20 + 2*5 , JumpTimeM);
226 1 EepromWriteWord(ProgramNo*600 + Step*20 + 2*6 , JumpU);
227 1 EepromWriteWord(ProgramNo*600 + Step*20 + 2*7 , JumpQ);
228 1 if(Mode==99)
229 1 {
230 2 EepromWriteWord(E2SetupCurrentDirection , SetupCurrentDirection);
231 2 }
232 1 }
233 /*********************************************************************************************************
234 ** 函数名称: void LoadSingleStep(unsigned char ProgramNoTemp,unsigned char StepTemp)
235 ** 功能描述: 将串行EEPROM中的单步工步信息存入内存
236 ** 输 入:
237 ** 输 出:
238 ** 全局变量: ProgramNo,Step,Mode,LoopTimes,SetupI,SetupU,IntervalTimeM,JumpTimeM,JumpU,JumpQ
239 ** 调用模块:
240 ** 注 意:
C51 COMPILER V7.06 SUBPROG 01/22/2007 09:50:03 PAGE 5
241 ** 作 者:
242 ** 日 期:
243 **-------------------------------------------------------------------------------------------------------
244 ** 修改人:
245 ** 日 期:
246 **-------------------------------------------------------------------------------------------------------
247 *********************************************************************************************************/
248 void LoadSingleStep(unsigned char ProgramNoTemp,unsigned char StepTemp)
249 {
250 1 Mode = EepromReadByte(ProgramNoTemp*600 + StepTemp*20 + 2*0);
251 1 LoopTimes = EepromReadByte(ProgramNoTemp*600 + StepTemp*20 + 2*1);
252 1 SetupI = EepromReadWord(ProgramNoTemp*600 + StepTemp*20 + 2*2);
253 1 SetupU = EepromReadWord(ProgramNoTemp*600 + StepTemp*20 + 2*3);
254 1 JumpTimeM = EepromReadWord(ProgramNoTemp*600 + StepTemp*20 + 2*5);
255 1 JumpU = EepromReadWord(ProgramNoTemp*600 + StepTemp*20 + 2*6);
256 1 JumpQ = EepromReadWord(ProgramNoTemp*600 + StepTemp*20 + 2*7);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -