📄 main.lst
字号:
352 1 下面是复位监测程序取消 cDirectHorizon cAutoScan初始化
353 1 ---------------------------------------------------------------------- */
354 1 if((cAutoScan==1)&&( P1_0==1 )) //自动扫描标志存在就进行左开始及水平定时器开始,后面就进入
355 1 {
356 2 cDirectHorizon=1; //取消方向,由复位RAM保留决定
357 2 T0_start();
358 2 }
359 1 else
360 1 {
361 2 AutoTest();
362 2 } //自检程序
363 1 cKeyCodeReceiveState=0;
364 1
365 1 switch(cProtocal) //与说明手册上控制位一致
C51 COMPILER V7.50 MAIN 11/03/2008 11:24:32 PAGE 7
366 1
367 1 {
368 2 default: break;
369 2 case 1: //三星协议
370 2 while(1)
371 2 {
372 3
373 3 WDT_cls();
374 3 if(1!=cProtocal) // 利用协议出错处理
375 3 {
376 4 goto ERRor;
377 4 }
378 3 if(cKeyCodeReceiveState)
379 3 {
380 4
381 4
382 4 switch((unsigned char)cKeyCodeReceive)
383 4 {
384 5 case 0xa0: //防误码先接收一个FF后接下来进行 判断是否下个码
385 5
386 5
387 5 cKeyCodeReceiveState=0; //取走第一个码
388 5 while(!cKeyCodeReceiveState) //对于键盘发出的选择球机也是七位FF开始的码
389 5 {
390 6 _nop_();
391 6
392 6 }
393 5
394 5
395 5 if(0xa0==(unsigned char)cKeyCodeReceive) //判断是否是误码,FF说明是误码
396 5 {
397 6
398 6
399 6 break; //
400 6 }
401 5
402 5 else //上一个取发送地址码但无用舍去
403 5 cKeyCodeReceiveState=0;
404 5 while(!cKeyCodeReceiveState)
405 5 {
406 6 _nop_();
407 6
408 6 }
409 5 if( (unsigned char)cKeyCodeReceive==id) //说明是正确的键盘码转入处理程序
410 5 {
411 6
412 6 x=3;
413 6 pKeyCode=sKeyCode;
414 6 *pKeyCode=0xa0; //起始同步码
415 6
416 6 ++pKeyCode; //跳过发送地址
417 6 ++pKeyCode;
418 6 *pKeyCode=id; //ID码
419 6
420 6 cKeyCodeReceiveState=0;//已取走第3个码
421 6 do
422 6 {
423 7 // x=x+*pKeyCode ; //从第二个开始累加校验
424 7 while(!cKeyCodeReceiveState) //读码等待
425 7 {
426 8 _nop_();
427 8 }
C51 COMPILER V7.50 MAIN 11/03/2008 11:24:32 PAGE 8
428 7 ++pKeyCode;
429 7 *pKeyCode=cKeyCodeReceive;
430 7
431 7 cKeyCodeReceiveState=0; //取走键盘码
432 7 ++x;
433 7 }while(x!=9); //读码结束标志
434 6
435 6
436 6
437 6
438 6 y= (((unsigned long)sKeyCode[3])<<16)+(((unsigned long)sKeyCode[4])<<8)+(unsigned long)sKeyCode[5]
-;
439 6 //构造一译码关键字
440 6
441 6 WDT_cls();
442 6
443 6
444 6 switch(y)
445 6 {
446 7 case 0x010800: //光圈开
447 7 if(cAutoScan==1)
448 7 {
449 8 T0_stop();
450 8 cAutoScan=0; //自动扫描标志
451 8 }
452 7 CameraStop();
453 7 IrisOpen();
454 7 break;
455 7 case 0x011000: //光圈关
456 7 if(cAutoScan==1)
457 7 {
458 8 T0_stop();
459 8 cAutoScan=0; //自动扫描标志
460 8 }
461 7 CameraStop();
462 7 IrisClose();
463 7 break;
464 7 case 0x010200: //焦距拉近 因电路接线 必须单操作
465 7 if(cAutoScan==1)
466 7 {
467 8 T0_stop();
468 8 cAutoScan=0; //自动扫描标志
469 8 }
470 7 CameraStop();
471 7 Focus_near();
472 7 break;
473 7
474 7 case 0x010100: //焦距拉远
475 7 if(cAutoScan==1)
476 7 {
477 8 T0_stop();
478 8 cAutoScan=0; //自动扫描标志
479 8 }
480 7 CameraStop();
481 7 Focus_far() ;
482 7 break;
483 7
484 7 case 0x014000: //视角宽
485 7 if(cAutoScan==1)
486 7 {
487 8 T0_stop();
488 8 cAutoScan=0; //自动扫描标志
C51 COMPILER V7.50 MAIN 11/03/2008 11:24:32 PAGE 9
489 8 }
490 7 CameraStop();
491 7 Zoom_wide();
492 7 break;
493 7
494 7 case 0x012000: //视角窄
495 7 if(cAutoScan==1)
496 7 {
497 8 T0_stop();
498 8 cAutoScan=0; //自动扫描标志
499 8 }
500 7 CameraStop();
501 7 Zoom_tele();
502 7 break;
503 7
504 7 case 0x010004: //向上 上下由T1控制
505 7 if(cAutoScan==1)
506 7 {
507 8 T0_stop();
508 8 cAutoScan=0; //自动扫描标志
509 8 }
510 7 cDirectVertical=1 ;
511 7 T0_stop();
512 7 if(cDirectVerticalLim==1 )
513 7 break;
514 7 cDirectVerticalLim=0;
515 7 T1_start();
516 7 break;
517 7 case 0x010008: //向下
518 7 if(cAutoScan==1)
519 7 {
520 8 T0_stop();
521 8 cAutoScan=0; //自动扫描标志
522 8 }
523 7 cDirectVertical=-1 ;
524 7 T0_stop();
525 7 if(cDirectVerticalLim==-1 )
526 7 break;
527 7 cDirectVerticalLim=0;
528 7 T1_start();
529 7 break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -