📄 mainloop.lst
字号:
274 1 CKCON = 0x00;
275 1
276 1 D12_DATA = 0xff02; //定义数据地址
277 1 D12_COMMAND = 0xff03; //定义命令地址
278 1
279 1 MCU_D12CS = 0x0;
280 1 // D12SUSPD = 0x0;
281 1
282 1 IT0 = 0;//初始化中断
283 1 EX0 = 1;
284 1 PX0 = 0;
285 1 IT1 = 1;//初始化中断
286 1 EX1 = 1;
287 1 PX1 = 1;
288 1 EA = 1;
289 1
290 1
291 1 MCU_D12CS = 0x1;
292 1 MCU_D12CS = 0x0;
293 1 bEPPflags.value = 0;
294 1
295 1 MCU_D12CS = 1;
296 1 RAMCS = 0;
297 1
298 1 counter = 0;
299 1 read_jing_flag = 0;
300 1 diand_flag = 0;
301 1 diand_axis = 0;
C51 COMPILER V7.09 MAINLOOP 10/14/2004 20:25:36 PAGE 6
302 1 diandbz = 0;
303 1 diandjl = 0;
304 1 read_prog_flag = 0;
305 1 send_req_flag = 0;
306 1 read_max_loop_flag = 0;
307 1 read_nc_num_flag = 0;
308 1 io_wrong_flag = 0;
309 1 gaopzt = GAOPIN_GUAN;
310 1 dianjzt = MOT_CLOSE;
311 1 stop_flag = stop_byte = 0;
312 1 max_loop_counter = 700;
313 1 read_max_loop_flag = 0;
314 1 old_p_status = 0;
315 1 send_req_flag = 0;
316 1 work_status = 0;
317 1 open_mac();
318 1 close_gao_pin();
319 1 close_mot();
320 1
321 1 RAMCS = 1;
322 1 MCU_D12CS = 0;
323 1
324 1 MCU_D12CS = 1;
325 1 MCU_D12CS = 0;
326 1
327 1 reconnect_USB();//联接USB总线
328 1
329 1 while( TRUE ){
330 2 if(bEPPflags.bits.configuration){
331 3 cmd_proc();//连接正常,调用命令处理
332 3 ENABLE;
333 3 MCU_D12CS = 1;
334 3 RAMCS = 0;
335 3 cur_order = cur_order1;
336 3 if (work_status == 1){
337 4 if (XBYTE[xytype(cur_order)] != 0){
338 5 DISABLE;
339 5 WRITE = 1;
340 5 P2 = 2;
341 5 RAMCS = 1;
342 5 PCS = 0;
343 5 A0 = 1;
344 5 A1 = 0;
345 5 READ = 1;
346 5 READ = 0;
347 5 READ = 1;
348 5 cc = P2;
349 5 PCS = 1;
350 5 A0 = 0;
351 5 A1 = 0;
352 5 RAMCS = 0;
353 5 ENABLE;
354 5
355 5 bz = 0;
356 5 if (gaopzt == GAOPIN_KAI){
357 6 if (anti_work_flag == 0){
358 7 if (((cc&2) == 2)&&(timer_ok == 1)){
359 8 MCU_LED0 = 0;
360 8 MCU_LED0 = 0;
361 8 MCU_LED0 = 0;
362 8 MCU_LED0 = 1;
363 8 bz = 1;
C51 COMPILER V7.09 MAINLOOP 10/14/2004 20:25:36 PAGE 7
364 8 }
365 7 }
366 6 else{
367 7 if (timer_ok == 1)
368 7 bz = 1;
369 7 }
370 6 }
371 5 else{
372 6 if (timer_ok == 1)
373 6 bz = 1;
374 6 }
375 5
376 5
377 5 if (loop_counter == max_loop_counter){
378 6 loop_off = cur_off;
379 6 loop_flag = 1;
380 6 anti_work_flag = 1;
381 6 send_loop_msg();
382 6 old_cur_jing = cur_jing;
383 6 cur_jing = 200;
384 6 }
385 5
386 5 if (bz == 1){
387 6 old_p_status = cc&2;
388 6 timer_ok = 0;
389 6 loop_counter = 0;
390 6 send_a_step();
391 6 }
392 5 else{
393 6 if (gaopzt == GAOPIN_KAI)
394 6 loop_counter ++;
395 6 for (i=0;i<300;i++);
396 6 }
397 5 }
398 4 else{
399 5 for (i=0;i<300;i++);
400 5 }
401 4 }
402 3 else if (work_status == 2){
403 4 if (counter == 9+30*5){
404 5 if ((XBYTE[xytype(cur_order)] == 0)&&(cur_order == 0)){
405 6 send_req_order(0);
406 6 }
407 5 }
408 4 }
409 3 else{
410 4 for (i=0;i<400;i++);
411 4 }
412 3 RAMCS = 1;
413 3 MCU_D12CS = 0;
414 3 counter ++;
415 3 for (i=0;i<5*6;i++){
416 4 if (counter == 5+(i+1)*5){
417 5 send_cur_pos(i/6,i%6);
418 5 }
419 4 }
420 3 if (counter == 10+30*5){
421 4 counter = 0;
422 4 }
423 3 }
424 2 usbserve();//USB服务数据处理
425 2 } // Main Loop
C51 COMPILER V7.09 MAINLOOP 10/14/2004 20:25:36 PAGE 8
426 1 }
427
428 void cmd_proc(void)
429 {
430 1 if(bEPPflags.bits.ep1_rxdone) {
431 2 DISABLE;//接收到主机发来的指令信息
432 2 bEPPflags.bits.ep1_rxdone = 0;
433 2 ENABLE;
434 2 MCU_D12CS = 1;
435 2 RAMCS = 0;
436 2
437 2 if (diand_flag == 2){
438 3 if (diandbz == 0){
439 4 diandjl += GenEpBuf[3];
440 4 XBYTE[xytype(1)] = 0;
441 4 XBYTE[xytype(2)] = 0;
442 4 XBYTE[xytype(3)] = 0;
443 4 XBYTE[xytype(4)] = 0;
444 4 XBYTE[xytype(0)] = 1;
445 4 XBYTE[uvtype(0)] = 0;
446 4 cur_order1 = 0;
447 4 cur_order = e_order = 0;
448 4 (long)(*((long *)(&(XBYTE[ncorder(0)])))) = 0;
449 4 (long)(*((long *)(&(XBYTE[lpdata(0,2)])))) = cur_x;
450 4 (long)(*((long *)(&(XBYTE[lpdata(0,3)])))) = cur_y;
451 4 (long)(*((long *)(&(XBYTE[lpdata(0,4)])))) = cur_x;
452 4 (long)(*((long *)(&(XBYTE[lpdata(0,5)])))) = cur_y;
453 4 if (diand_axis == 1){
454 5 (long)(*((long *)(&(XBYTE[lpdata(0,4)])))) = cur_x+diandjl;
455 5 XBYTE[xy(0)] = 0;
456 5 }
457 4 else if (diand_axis == -1){
458 5 (long)(*((long *)(&(XBYTE[lpdata(0,4)])))) = cur_x-diandjl;
459 5 XBYTE[xy(0)] = 0;
460 5 }
461 4 else if (diand_axis == 2){
462 5 (long)(*((long *)(&(XBYTE[lpdata(0,5)])))) = cur_y+diandjl;
463 5 XBYTE[xy(0)] = 1;
464 5 }
465 4 else if (diand_axis == -2){
466 5 (long)(*((long *)(&(XBYTE[lpdata(0,5)])))) = cur_y-diandjl;
467 5 XBYTE[xy(0)] = 1;
468 5 }
469 4 else if (diand_axis == 3){
470 5 (long)(*((long *)(&(XBYTE[lpdata(0,4)])))) = cur_x+diandjl;
471 5 XBYTE[xy(0)] = 0;
472 5 }
473 4 else if (diand_axis == -3){
474 5 (long)(*((long *)(&(XBYTE[lpdata(0,4)])))) = cur_x-diandjl;
475 5 XBYTE[xy(0)] = 0;
476 5 }
477 4 else if (diand_axis == 4){
478 5 (long)(*((long *)(&(XBYTE[lpdata(0,5)])))) = cur_y+diandjl;
479 5 XBYTE[xy(0)] = 1;
480 5 }
481 4 else if (diand_axis == -4){
482 5 (long)(*((long *)(&(XBYTE[lpdata(0,5)])))) = cur_y-diandjl;
483 5 XBYTE[xy(0)] = 1;
484 5 }
485 4 work_status = 1;
486 4 cur_off = 0;
487 4 diandbz = 1;
C51 COMPILER V7.09 MAINLOOP 10/14/2004 20:25:36 PAGE 9
488 4 }
489 3 diand_flag = 0;
490 3 }
491 2 else if (diand_flag == 1){
492 3 if (diandbz == 0){
493 4 if ((GenEpBuf[3] & 0x80) == 0x80){
494 5 diandjl = (GenEpBuf[3]-0x80)*256;
495 5 diand_axis = -diand_axis;
496 5 }
497 4 else
498 4 diandjl = GenEpBuf[3]*256;
499 4 }
500 3 diand_flag = 2;
501 3 }
502 2 else if (read_nc_num_flag == 1){
503 3 read_nc_num_flag = 0;
504 3 if (GenEpBuf[3] != e_order){
505 4 cc = 0x8d;
506 4 RAMCS = 1;
507 4 MCU_D12CS = 0;
508 4 D12_WriteEndpoint(3, 1, &cc);
509 4 io_wrong_flag = 1;
510 4 }
511 3 else{
512 4 if (anti_work_flag == 1){
513 5 cur_order1 = e_order;
514 5 cur_order = e_order;
515 5 cur_off = (long)(*((long *)(&(XBYTE[counterlen(cur_order)]))));
516 5 work_status = 1;
517 5 }
518 4 else{
519 5 cur_order1 = 0;
520 5 cur_order = 0;
521 5 cur_off = 0;
522 5 }
523 4 }
524 3 }
525 2 else if (read_max_loop_flag == 2){
526 3 max_loop_counter += GenEpBuf[3];
527 3 read_max_loop_flag = 0;
528 3 }
529 2 else if (read_max_loop_flag == 1){
530 3 max_loop_counter = GenEpBuf[3]*256;
531 3 read_max_loop_flag = 2;
532 3 }
533 2 else if (read_jing_flag == 2){
534 3 cur_jing += GenEpBuf[3];
535 3 read_jing_flag = 0;
536 3
537 3 DISABLE;
538 3 RAMCS = 1;
539 3 GATE = 0;
540 3 delay1();
541 3 CS8253 = 0;
542 3 P2 = 0x3e;
543 3 A8253 = 1;
544 3 WR8253 = 1;
545 3 delay1();
546 3 WR8253 = 0;
547 3 delay1();
548 3 WR8253 = 1;
549 3 delay1();
C51 COMPILER V7.09 MAINLOOP 10/14/2004 20:25:36 PAGE 10
550 3
551 3 P2 = cur_jing%256;
552 3 A8253 = 0;
553 3 WR8253 = 1;
554 3 delay1();
555 3 WR8253 = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -