📄 common.lst
字号:
190 /*********************************************************************************************************
-**
191 ;;函数原型: uchar SelfTest()
192 ;;函数功能: 自检
193 ;;函数输入: 无
194 ;;函数输出: 无
195 ;;函数返回值: 00 自检通过
196 8位 7位 6位 5位 4位 3位 2位 1位
197 代表 超时故障 结尾霍尔 中卫霍尔 复位霍尔 电机故障
198
199 ;;被调用函数: main
200 *********************************************************************************************************/
201 uchar SelfTest()
202 {
203 1 uchar tmpchar,ucResults=0;
204 1 if( bitHuoerRest ) //复位测试
205 1 {
206 2 TimerNo[7] = CVERTIME;//启动超时定时器 25s
207 2 fTimer &= ~(0x01<<7);
208 2 Mot(NEGATIVE,P10WM); //执行复位操作电机反转
209 2 bitRstFlg = 1; //标记复位操作电机启动
210 2 do
211 2 {
212 3 tmpchar = fTimer&(0x01<<7);
213 3 if( !bitHuoerRest )
214 3 {
215 4 // MOTONOFF = 1;
216 4 // TR1 = 0;
217 4 break;
218 4 }
219 3 }
220 2 while(!tmpchar);
221 2
222 2 if( bitHuoerRest )
223 2 {
224 3 ucResults |= 0x03; //电机故障或者复位霍尔故障
225 3 return ( ucResults );
226 3 }
227 2 }
228 1 //适当延时
229 1 Delay(200);
230 1
231 1 if( bitHuoerMido ) //中卫位测试
232 1 {
233 2 TimerNo[7] = CVERTIME;//启动超时定时器 25s
234 2 fTimer &= ~(0x01<<7);
235 2 Mot(POSITIVE,P10WM); //执行电机快正转
236 2 bitMidoFlg = 1; //标记中位操作电机启动
237 2 do
238 2 {
239 3 tmpchar = fTimer&(0x01<<7);
C51 COMPILER V8.09 COMMON 09/23/2008 08:34:17 PAGE 5
240 3 if( !bitHuoerMido )
241 3 {
242 4 // MOTONOFF = 1;
243 4 // TR1 = 0;
244 4 break;
245 4 }
246 3 }
247 2 while(!tmpchar);
248 2
249 2 if( bitHuoerMido )
250 2 {
251 3 ucResults |= 0x04; //中卫霍尔故障
252 3 }
253 2 }
254 1 //适当延时
255 1 Delay(200);
256 1 if( bitHuoerLast ) //后位测试
257 1 {
258 2 TimerNo[7] = CVERTIME;//启动超时定时器 25s
259 2 fTimer &= ~(0x01<<7);
260 2 Mot(POSITIVE,P10WM); //执行电机快正转
261 2 bitLastFlg = 1; //标记结位操作电机启动
262 2 do
263 2 {
264 3 tmpchar = fTimer&(0x01<<7);
265 3 if( !bitHuoerLast )
266 3 {
267 4 // MOTONOFF = 1;
268 4 // TR1 = 0;
269 4 break;
270 4 }
271 3 }
272 2 while(!tmpchar);
273 2
274 2 if( bitHuoerLast )
275 2 {
276 3 ucResults |= 0x08; //末尾霍尔故障
277 3 }
278 2 }
279 1 //适当延时
280 1 Delay(200);
281 1 if( bitHuoerRest ) //复位测试
282 1 {
283 2 TimerNo[7] = CVERTIME;//启动超时定时器 25s
284 2 fTimer &= ~(0x01<<7);
285 2 Mot(NEGATIVE,P10WM); //执行复位操作电机反转
286 2 bitRstFlg = 1; //标记复位操作电机启动
287 2 do
288 2 {
289 3 tmpchar = fTimer&(0x01<<7);
290 3 if( !bitHuoerRest )
291 3 {
292 4 // MOTONOFF = 1;
293 4 // TR1 = 0;
294 4 break;
295 4 }
296 3 }
297 2 while(!tmpchar);
298 2
299 2 if( bitHuoerRest )
300 2 ucResults |= 0x03;
301 2 }
C51 COMPILER V8.09 COMMON 09/23/2008 08:34:17 PAGE 6
302 1 return ( ucResults );
303 1
304 1 }
305 /**************************************************************************************
306 ;;函数原型: SysInit()
307 ;;函数功能: 系统准备初始化阶段
308 ;;函数输入: 无
309 ;;函数输出: 无
310 ;;函数返回值: 无
311 ;;被调用函数: main
312 ************************************************************************************/
313 void SysReadyInit()
314 { uchar tmpchar,ucTxdBuf[1];
315 1 //启动延时1等待自检命令
316 1 TimerNo[7] = SELF_TEST_CVERTIME;//启动超时定时器 5s
317 1 fTimer &= ~(0x01<<7);
318 1 do
319 1 {
320 2 if( (CanRx.farmeSta == FULL)&&(CanRx.farmeType == MS_SELF_TEST) )
321 2 {
322 3 //做出接收应答进入自检状态
323 3 ucTxdBuf[0] = 0x00;//000000回复相应结果
324 3 CAN_TXD( MADDRESS,SM_RECEV_OK,UN_ACK,1,ucTxdBuf );
325 3 //上传自检结果
326 3 ucTxdBuf[0] = SelfTest();//开始自检
327 3
328 3 CAN_TXD( MADDRESS,SM_SELF_TEST,UN_ACK,1,ucTxdBuf );
329 3 CanRx.farmeSta = NULL;
330 3 break;
331 3 }
332 2 tmpchar = (fTimer&(0x01<<7));
333 2
334 2 }
335 1 while(!tmpchar);
336 1 //无自检命令,电机复位申请准备命令
337 1
338 1
339 1 //规定时间内收到请求工作命令 1分钟
340 1 TimerNo[7] = 240;//启动超时定时器 2分钟
341 1 fTimer &= ~(0x01<<7);
342 1 do
343 1 {
344 2 if(CanRx.farmeSta == FULL)
345 2 {
346 3 if( CanRx.farmeType == MS_ALLOW_IN_WORKING )
347 3 {
348 4 //应答
349 4 ucTxdBuf[0] = 0x00;//000000回复相应结果
350 4 CAN_TXD( MADDRESS,SM_RECEV_OK,UN_ACK,1,ucTxdBuf );
351 4 bitSysAllowWork = 1;//进入工作状态标记置一
352 4 CAN_TXD( MADDRESS,MS_ALLOW_IN_WORKING,UN_ACK,1,ucTxdBuf );
353 4 return;
354 4 }
355 3 CanRx.farmeSta = NULL;
356 3 }
357 2 else
358 2 tmpchar = (fTimer&(0x01<<7));
359 2
360 2 }
361 1 while(!tmpchar);
362 1
363 1 //进入休眠模式
C51 COMPILER V8.09 COMMON 09/23/2008 08:34:17 PAGE 7
364 1 while(1)
365 1 {
366 2
367 2 }
368 1
369 1
370 1 }
371
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 947 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 13
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -