📄 dc.lst
字号:
239 3 {
240 4 ini_sbuf(M_main,err_infor,M_RW,err,0,0);
241 4 s_byte_nums=5;
C51 COMPILER V7.06 DC 06/22/2005 09:40:54 PAGE 5
242 4 TR_noans();
243 4 rw_err=0;
244 4 err=0;
245 4 stop=1;
246 4 }
247 3 called=0;
248 3 }
249 2 }
250 1 urgent_stop=1;
251 1 }
252
253 void EX1_INT (void) interrupt 2
254 {
255 1 unsigned char get_err;
256 1 EX1=0;
257 1
258 1 if(limit==0)
259 1 err=11; //旋转限位
260 1 else if(wire_over_i==0)
261 1 err=10;
262 1 else
263 1 {
264 2 get_err=P5;
265 2 get_err=get_err&0x04;
266 2 if(get_err==0)
267 2 err=9;
268 2 }
269 1 if(err!=0)
270 1 {
271 2 rw_err=1;
272 2 stop=0;
273 2 }
274 1 else
275 1 EX1=1;
276 1 }
277
278 void T1_INT (void) interrupt 3
279 {
280 1 // EA=0;
281 1 c_t1++;
282 1 if(send==1)
283 1 {
284 2 if(c_t1==7)
285 2 {
286 3 S0BUF=sbuffer[POINTER0];
287 3 c_t1=0;
288 3 }
289 2 }
290 1 else
291 1 {
292 2 if(c_t1==100)
293 2 {
294 3 TR1=0;
295 3 overtime=1;
296 3 }
297 2 }
298 1 // EA=1;
299 1 }
300
301 void TR_INT (void) interrupt 4 //串行口中断
302 {
303 1 EA=0; //关中断
C51 COMPILER V7.06 DC 06/22/2005 09:40:54 PAGE 6
304 1 if(TI==1) //发送完成
305 1 {
306 2 TI=0;
307 2 POINTER0++; //发送缓冲指针加1
308 2 if(POINTER0<s_byte_nums-1)
309 2 SSUM=SSUM+sbuffer[POINTER0]; //6个数据字节求和
310 2 else
311 2 sbuffer[s_byte_nums-1]=SSUM+sbuffer[0]; //数据和加地址生成校验码
312 2 if(POINTER0==s_byte_nums)
313 2 REN=1;
314 2 }
315 1
316 1 if(RI==1) //接收完成
317 1 {
318 2 RI=0;
319 2 POINTER1++; //接收缓冲指针加1
320 2 rbuffer[POINTER1-1]=S0BUF; //从接收缓冲读出数据
321 2 if(rbuffer[0]==M_RW||rbuffer[0]==M_ALL||rbuffer[0]==M_current_RW)
322 2 {
323 3 SM2=0;
324 3 if(POINTER1==2) //获取字节个数
325 3 r_byte_nums=get_byte_nums(rbuffer[1]);
326 3 if(POINTER1<r_byte_nums)
327 3 RSUM=RSUM+rbuffer[POINTER1-1]; //生成校验码
328 3 else
329 3 {
330 4 SM2=1;
331 4 if(RSUM==rbuffer[r_byte_nums-1])
332 4 {
333 5 if(ans==0)
334 5 {
335 6 POINTER1=0;
336 6 RSUM=0;
337 6 }
338 5 S_ANSW=OK;
339 5 data_type();
340 5 }
341 4 else
342 4 {
343 5 S_ANSW=FAIL;
344 5 if(resend==0)
345 5 resend=1;
346 5 }
347 4 }
348 3 }
349 2 else
350 2 POINTER1=0;
351 2 }
352 1 EA=1; //开中断
353 1 }
354
355 void CT0_int (void) interrupt 6 //焊接角度
356 {
357 1 CTI0=0;
358 1 if(auto_return==0)
359 1 {
360 2 if(FINISH<=50000)
361 2 {
362 3 temp_pulse_num++;
363 3 if(temp_pulse_num==pulse_num)
364 3 {
365 4 FINISH++;
C51 COMPILER V7.06 DC 06/22/2005 09:40:54 PAGE 7
366 4 temp_pulse_num=0;
367 4 }
368 3 }
369 2 else
370 2 {
371 3 IEN1=IEN1&0XFE; //CT0
372 3 temp_pulse_num=0;
373 3 }
374 2 }
375 1 else
376 1 {
377 2 if(FINISH>0)
378 2 {
379 3 temp_pulse_num++;
380 3 if(temp_pulse_num==pulse_num)
381 3 {
382 4 FINISH--;
383 4 temp_pulse_num=0;
384 4 }
385 3 }
386 2 else
387 2 {
388 3 PWM0=0;
389 3 rot_right=1;
390 3 rot_left=1;
391 3 IEN1=IEN1&0XFE; //CT0
392 3 }
393 2 }
394 1 }
395
396 void CT3_int (void) interrupt 9 //电流脉冲
397 {
398 1 CTI3=0;
399 1 CTCON=CTCON&0X3F;
400 1 IEN1=IEN1&0XF7; //CT3
401 1 p_b=~p_b;
402 1 if(p_b==1) //峰值
403 1 {
404 2 if(rot_ok==1&&K21==ON)
405 2 PWM0=temp_rot_vp;
406 2 if(wire_ok==1&&WIRE==ON&&K31==ON)
407 2 PWM1=temp_wire_vp;
408 2 CTCON=CTCON|0X80; //CT3捕捉上升沿
409 2 }
410 1 else
411 1 {
412 2 if(rot_ok==1&&K21==ON)//&&r_slope_ok==1)
413 2 PWM0=temp_rot_vb;
414 2 if(wire_ok==1&&WIRE==ON&&K31==ON)//&&w_slope_ok==1)
415 2 PWM1=temp_wire_vb;
416 2 CTCON=CTCON|0X40; //CT3捕捉下降沿
417 2 }
418 1 IEN1=IEN1|0X08; //CT3
419 1 }
420
421 void CM0_INT (void) interrupt 11 //送丝速度变化时间/抽丝时间
422 {
423 1 c_cm0++;
424 1 if(retract==0)
425 1 {
426 2 if(c_cm0==n_cm0)
427 2 {
C51 COMPILER V7.06 DC 06/22/2005 09:40:54 PAGE 8
428 3 IEN1=IEN1&0xEF; //CM0
429 3 if(temp_wire_vp<wire_vp)
430 3 {
431 4 if(temp_wire_vp+1==wire_vp)
432 4 temp_wire_vp=wire_vp;
433 4 else
434 4 temp_wire_vp=temp_wire_vp+1;
435 4 }
436 3
437 3 if(temp_wire_vp>wire_vp)
438 3 {
439 4 if(temp_wire_vp-1==wire_vp)
440 4 temp_wire_vp=wire_vp;
441 4 else
442 4 temp_wire_vp=temp_wire_vp-1;
443 4 }
444 3 if(K31==ON)
445 3 {
446 4 if(temp_wire_vb<wire_vb)
447 4 {
448 5 if(temp_wire_vb+1==wire_vb)
449 5 temp_wire_vb=wire_vb;
450 5 else
451 5 temp_wire_vb=temp_wire_vb+1;
452 5 }
453 4 if(temp_wire_vb>wire_vb)
454 4 {
455 5 if(temp_wire_vb-1==wire_vb)
456 5 temp_wire_vb=wire_vb;
457 5 else
458 5 temp_wire_vb=temp_wire_vb-1;
459 5 }
460 4 }
461 3 c_cm0=0;
462 3 CML0=TML2+0xC8;
463 3 if(CML0<TML2)
464 3 CMH0=TMH2+1+0X00;
465 3 else
466 3 CMH0=TMH2+0X00;
467 3 if(K31==OFF)
468 3 {
469 4 PWM1=temp_wire_vp;
470 4 if(temp_wire_vp==wire_vp)
471 4 {
472 5 if(wire_ok==0)
473 5 wire_ok=1;
474 5 else
475 5 w_slope_ok=1;
476 5 }
477 4 else
478 4 IEN1=IEN1|0x10; //CM0
479 4 }
480 3 else
481 3 {
482 4 if(temp_wire_vp==wire_vp&&temp_wire_vb==wire_vb)
483 4 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -