📄 avc_1027.lst
字号:
248 1 {
249 2 message_enable=1; //关发送使能
250 2 POINTER1=0;
251 2 RSUM=0;
252 2 r_byte_nums=4;
253 2 gate=0;
254 2 temp_voltage=1;
255 2 externel_voltage=0;
256 2 AD1=0;
257 2 AD2=0;
258 2 AD3=0;
259 2 AD4=0;
260 2 AD5=0;
261 2 U51=0;
262 2 }
263 1 while(err_ok==0)
264 1 {
265 2 if(called==1)
266 2 {
267 3 if(avc_err==0)
268 3 {
269 4 ini_sbuf(M_main,answer,OK,0,0,0);
270 4 s_byte_nums=4;
271 4 TR_noans();
272 4 }
273 3 else
274 3 {
275 4 ini_sbuf(M_main,err_infor,M_AVC,err,0,0);
276 4 s_byte_nums=5;
277 4 TR_noans();
278 4 avc_err=0;
279 4 err=0;
280 4 stop=1;
281 4 }
282 3 called=0;
283 3 }
284 2 }
285 1
286 1 urgent_stop=1;
287 1 }
288
289 void EX1_INT (void) interrupt 2
290 {
291 1 unsigned char get_err;
292 1 EX1=0;
293 1 err=0;
294 1 get_err=P5;
295 1 get_err=get_err&0x40;
296 1 if(get_err==0)
297 1 {
298 2 gate=0;
299 2 if(touched==0)
300 2 {
301 3 err=18; //工件短路
302 3 lamp=lamp|0x08;
303 3 write_8574(lamp);
C51 COMPILER V7.06 AVC_1027 09/11/2006 08:22:21 PAGE 6
304 3 }
305 2 else
306 2 {
307 3 ini_sbuf(M_main,command,com_touch_ok,0,0,0);
308 3 s_byte_nums=4;
309 3 TR_noans();
310 3 }
311 2 lift=1;
312 2 if(work==3)
313 2 {
314 3 if(touched==0)
315 3 {
316 4 externel_voltage=0;
317 4 COM=0X36; //弧长点动速度,1K
318 4 COUNT0=4000%256;
319 4 COUNT0=4000/256;
320 4 COM=0X76;
321 4 COUNT1=c_lift%256;
322 4 COUNT1=c_lift/256;
323 4 } //弧长采样脉冲,1K
324 3
325 3 avc_dir=1; //弧长方向——上
326 3 avc_enable=0; //开弧长使能
327 3 CTCON=CTCON|0X01; //CT0下降沿
328 3 IEN1=IEN1|0X01;
329 3 gate=1;
330 3 while(lift_complete==0);
331 3 lift_complete=0;
332 3 lift=0;
333 3 }
334 2 }
335 1 else
336 1 {
337 2 get_err=P5;
338 2 get_err=get_err&0x08;
339 2 if(get_err==0)
340 2 {
341 3 err=16; //弧长下限位
342 3 lamp=lamp|0x02;
343 3 write_8574(lamp);
344 3 }
345 2 else
346 2 {
347 3 get_err=P5;
348 3 get_err=get_err&0x10;
349 3 if(get_err==0)
350 3 {
351 4 err=17; //弧长过流
352 4 lamp=lamp|0x04;
353 4 write_8574(lamp);
354 4 }
355 3 else
356 3 {
357 4 get_err=P5;
358 4 get_err=get_err&0x04;
359 4 if(get_err==0)
360 4 {
361 5 err=15; //弧长上限位
362 5 lamp=lamp|0x01;
363 5 write_8574(lamp);
364 5 }
365 4 }
C51 COMPILER V7.06 AVC_1027 09/11/2006 08:22:21 PAGE 7
366 3 }
367 2 }
368 1 SSUM=0;
369 1 POINTER1=0;
370 1 r_byte_nums=4;
371 1 if(err!=0)
372 1 {
373 2 if(work==3)
374 2 {
375 3
376 3 avc_err=1;
377 3 lift=0;
378 3 stop=0;
379 3 }
380 2 }
381 1 else
382 1 // {
383 1 // if(touched==1)
384 1 // touched=0;
385 1 // else
386 1 EX1=1;
387 1 // }
388 1 }
389
390 void T1_INT (void) interrupt 3
391 {
392 1 c_t1++;
393 1 if(send==1)
394 1 {
395 2 if(c_t1==7)
396 2 {
397 3 S0BUF=sbuffer[POINTER0];
398 3 c_t1=0;
399 3 }
400 2 }
401 1 else
402 1 {
403 2 if(c_t1==100)
404 2 {
405 3 TR1=0;
406 3 overtime=1;
407 3 }
408 2 }
409 1 }
410
411 void TR_INT (void) interrupt 4 //串行口中断
412 { //关中断
413 1 if(TI==1) //发送完成
414 1 {
415 2 TI=0;
416 2 POINTER0++;
417 2 if(POINTER0<s_byte_nums-1)
418 2 SSUM=SSUM+sbuffer[POINTER0]; //6个数据字节求和
419 2 else
420 2 sbuffer[s_byte_nums-1]=SSUM+sbuffer[0]; //数据和加地址生成校验码
421 2 if(POINTER0==s_byte_nums)
422 2 REN=1;
423 2 }
424 1
425 1 if(RI==1) //接收完成
426 1 {
427 2 RI=0;
C51 COMPILER V7.06 AVC_1027 09/11/2006 08:22:21 PAGE 8
428 2 POINTER1++; //接收缓冲指针加1
429 2 rbuffer[POINTER1-1]=S0BUF; //从接收缓冲读出数据
430 2 if(rbuffer[0]==M_AVC||rbuffer[0]==M_ALL||rbuffer[0]==M_AVC_P)
431 2 {
432 3 SM2=0;
433 3 if(POINTER1==2)
434 3 r_byte_nums=get_byte_nums(rbuffer[1]);
435 3 if(POINTER1<r_byte_nums)
436 3 RSUM=RSUM+rbuffer[POINTER1-1]; //生成校验码
437 3 else
438 3 {
439 4 SM2=1;
440 4 if(RSUM==rbuffer[r_byte_nums-1])
441 4 {
442 5 if(ans==0)
443 5 {
444 6 POINTER1=0;
445 6 RSUM=0;
446 6 }
447 5 S_ANSW=OK;
448 5 data_type();
449 5 }
450 4 else
451 4 {
452 5 S_ANSW=FAIL;
453 5 if(resend==0)
454 5 resend=1;
455 5 }
456 4 }
457 3
458 3 }
459 2 else
460 2 POINTER1=0;
461 2 } //开中断
462 1 }
463
464 void S1_int (void) interrupt 5 //I2C
465 {
466 1 if (S1STA==0x00)
467 1 {
468 2 FF=1;
469 2 S1CON=0xD5; //STA=0 STO=1 SI=0 AA=1
470 2 }
471 1 if (S1STA==0x08)
472 1 {
473 2 S1DAT=SLA;
474 2 S1CON=0xC5; //STA=0 STO=0 SI=0 AA=1
475 2 }
476 1 if (S1STA==0x10)
477 1 {
478 2 S1DAT=SLA;
479 2 S1CON=0xC5; //STA=0 STO=0 SI=0 AA=1
480 2 }
481 1 if (S1STA==0x18)
482 1 {
483 2 S1DAT=COMM;
484 2 S1CON=0xC5; //STA=0 STO=0 SI=0 AA=1
485 2 }
486 1 if (S1STA==0x20)
487 1 {
488 2 FF=1;
489 2 S1CON=0xD5; //STA=0 STO=1 SI=0 AA=1
C51 COMPILER V7.06 AVC_1027 09/11/2006 08:22:21 PAGE 9
490 2 }
491 1 if (S1STA==0x28)
492 1 {
493 2 S1CON=0xD5; //STA=0 STO=1 SI=0 AA=1
494 2 FF=1;
495 2 }
496 1 if (S1STA==0x30)
497 1 {
498 2 FF=1;
499 2 S1CON=0xD5; //STA=0 STO=1 SI=0 AA=1
500 2 }
501 1 if (S1STA==0x38)
502 1 {
503 2 S1CON=0xE5; //STA=1 STO=0 SI=0 AA=1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -