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