📄 main.lst
字号:
416 1 ///????
417 1 InitAux();///???
418 1 //InitKeyBrd();
419 1 //g_FlagAuxOK = 1; //2007-2-8
420 1 SendKBSysInfo(0x07, 0x00); //2007-3-16
421 1 ///发送键盘系统信息:不允许需要密码的操作 ///为什么不允许需要密码的操作
422 1 ///装载命令
423 1 ///发送键盘:不允许需要输入密码的操作。
424 1 //InitAux();
425 1 if (IS_OUT_GUARDING) ///外出布防
C51 COMPILER V8.02 MAIN 05/18/2008 16:43:12 PAGE 8
426 1 {
427 2 pin_LedArm = LED_ON;
428 2 }
429 1
430 1 while (1)
431 1 {
432 2 if ((!g_FlagKBMsgProcessed) && (!g_FlagHasKBMsgSend) &&(!g_FlagHasAuxMsgSend))
433 2 { ///有键盘信息需要处理, 没有键盘数据需要发送,没有辅助CPU数据需要发送
434 3 ///键盘信息优先处理
435 3 ProcessKBMsg(); ///处理键盘信息///执行相应的命令
436 3 g_FlagKBMsgProcessed = 1; ///键盘数据处理完毕
437 3 }
438 2 if ((!g_FlagAuxMsgProcessed) && (g_FlagKBMsgProcessed)
439 2 && (!g_FlagHasKBMsgSend) && (!g_FlagHasAuxMsgSend))
440 2 { ///有辅助CPU数据需要处理,没有键盘数据需要处理,没有键盘数据需要发送,没有辅助CPU数据需要发送
441 3 ProcessAuxMsg(); ///处理辅助CPU数据
442 3 g_FlagAuxMsgProcessed = 1; //辅助CPU数据处理完毕
443 3 }
444 2 RecvDTMF(); ///根据振铃接收DTMF按键
445 2 PhoneAlarm(); ///取出电话号码,轮流拨号
446 2 ProcPhoneCmd();///远程电话操作处理 ///???
447 2 AdemcoAlarm(); ///拨打接警中心报警
448 2
449 2 ProcesClock(); ///处理键盘时间不准的问题 ///???
450 2 ///????????不懂
451 2 if ((g_FlagArmTime && g_FlagTimeArm) //从ProcesClock()中分离出去.布撤防嵌套多.
452 2 && (!g_FlagHasKBMsgSend)) //辅助CPU的数据会在撤防后重新发送,包括电话掉线等
453 2 {
454 3 TimerArm();
455 3 g_FlagArmTime = 0;
456 3 }
457 2 ProcesTimer();///????
458 2
459 2 LocalAlarm();///???
460 2
461 2 ProcesISD1730();///???
462 2
463 2 WatchAux(); ///辅助CPU
464 2
465 2 if (g_FlagSeriesPause && (0 == g_ucTimerSerPause))
466 2 {
467 3 g_FlagSeriesPause = 0;
468 3 StartNewSendMsg();
469 3 }
470 2
471 2 //防止通讯错误,使串口不再工作,主要是辅助通讯标志出错有影响
472 2 //检查漏洞,可以不用该部分
473 2 if ((0 == g_ucSeriesStop) || (TIME_NO_SER_INT < g_ucSeriesStop))
474 2 {
475 3 SCON = 0x50;
476 3 T2CON = 0x30;
477 3 RCAP2H = 0xFF;
478 3 RCAP2L = 0xD9; //0xDC; //12MHz
479 3 TR2 = 1;
480 3 ES = 1;
481 3 StartNewSendMsg();
482 3 }
483 2 }
484 1 }
485
486 /*******************************************************************************
487 * 函 数 名: InitMCU()
C51 COMPILER V8.02 MAIN 05/18/2008 16:43:12 PAGE 9
488 * 功 能: 初始化MCU的各个模块,中断使用,定时,串口等
489 * 输入参数: 无
490 * 输出参数: 无
491 * 返 回 值: 无
492 * 其它说明:
493 * 修改日期 版本号 修改人 修改内容
494 *-----------------------------------------------------------------------
495 * 2006-10-30 0.0000 涂常亮 第一次编写
496 *******************************************************************************/
497 void InitMCU(void)
498 {
499 1 pin_ISD1420Rec = 1; //已经无用
500 1 pin_TakeLine = 0; //开机影响用户通话
501 1
502 1 P0 = 0xFB;
503 1
504 1 //pin_RstAux = RST_AUX;
505 1 EA = 0;
506 1 pin_PickPhone = 0;
507 1 pin_ISD1420Play = 1;
508 1 pin_DTMFRecvOE = 0;
509 1 pin_LedAlarm = LED_OFF;
510 1 pin_LedArm = LED_OFF;
511 1 //REN = 1;
512 1 AUXR |= 1; // !!!! tstg !!!! .
513 1
514 1 //初始串口。工作方式1,定时器2产生波特率,9600bps,晶振11.0592MHz
515 1 SCON = 0x50;
516 1 T2CON = 0x30;
517 1 TH2 = 0xFF;
518 1 TL2 = 0xD9; //0xDC; //12MHz
519 1 RCAP2H = 0xFF;
520 1 RCAP2L = 0xD9; //0xDC; //12MHz
521 1
522 1 TR2 = 1;
523 1 ES = 1; // 初始化键盘时再开启.
524 1
525 1 //初始化外部中断0和1。从高到低跳变沿中断
526 1 IT0 = 1;
527 1 PX0 = 1;
528 1 EX0 = 0; //EX0 = 1; 开始不能接收辅助CPU的数据,否则初始化出错,或需重复调用 SendToken.
529 1
530 1 IT1 = 1;
531 1 EX1 = 0; //电话拨通或接听之后再开中断
532 1
533 1 //初始化定时器0,定时1ms
534 1 TMOD = 0x01;
535 1 TH0 = 0xFC;
536 1 TL0 = 0x18; //0x67;12MHz
537 1 ET0 = 1;
538 1 TF0 = 0;
539 1 TR0 = 1;
540 1
541 1 //初始化定时器1,计数10
542 1 TMOD |= 0x60;
543 1 TH1 = 0xFF;
544 1 TL1 = 0xFF;
545 1 ET1 = 1;
546 1 TF1 = 0;
547 1 TR1 = 1;
548 1
549 1 //watchdog
C51 COMPILER V8.02 MAIN 05/18/2008 16:43:12 PAGE 10
550 1 ClrWdt();
551 1 EnWdt();
552 1 //清中断请求标志
553 1 IE0 = 0;
554 1 IE1 = 0;
555 1 TI = 0;
556 1 RI = 0;
557 1 TF0 = 0;
558 1 TF1 = 0;
559 1
560 1 //最后开中断
561 1 EA = 1;
562 1 }
563
564 /*******************************************************************************
565 * 函 数 名: InitPeri()
566 * 功 能: 初始化MCU各个外围模块,
567 * 输入参数: 无
568 * 输出参数: 无
569 * 返 回 值: 无
570 * 其它说明:
571 * 修改日期 版本号 修改人 修改内容
572 *-----------------------------------------------------------------------
573 * 2006-10-30 0.0000 涂常亮 第一次编写
574 *******************************************************************************/
575 void InitPeri(void)
576 {
577 1 InitHT1380();
578 1 pin_DTMFGenCE = 1; // ??? 使其一直位低
579 1 SendISD1730CmnCmd(PWR_UP_ISD);
580 1 Delay10ms();
581 1 ClrWdt();
582 1 WrApcReg(0x40, 0x04);
583 1 SendISD1730CmnCmd(WR_NVCFG);
584 1 Delay10ms();
585 1 SendISD1730CmnCmd(PWR_DOWN);
586 1 ClrWdt();
587 1 }
588
589 /*******************************************************************************
590 *函 数 名: void RstUsrPwd(void)
591 *功 能: 等待辅助CPU复位,并向辅助CPU发送是否开启继电器的信息
592 *输入参数: 无
593 *输出参数: 无
594 *返 回 值: 无
595 *其它说明: .
596 *修改日期 版本号 修改人 修改内容
597 *-----------------------------------------------------------------------
598 *2006-10-30 0.0000 涂常亮 第一次编写
599 *******************************************************************************/
600 void RstUsrPwd(void)
601 {
602 1 #define CHECK_RST_PWD_TMS 0x8000
603 1
604 1 UInt uiTmp;
605 1 uchar ucTmp = 0;
606 1 if ((0xA6 != ReadByte(EEPROM_ADD_0xA6))
607 1 || (0x1B != ReadByte(EEPROM_ADD_0x1B))
608 1 || (0xAC != ReadByte(EEPROM_ADD_0xAC))
609 1 || (0xD8 != ReadByte(EEPROM_ADD_0xD8))
610 1 || (0xC0 != ReadByte(EEPROM_ADD_0xC0))
611 1 ) ///防止EEPROM出错,加入随机值
C51 COMPILER V8.02 MAIN 05/18/2008 16:43:12 PAGE 11
612 1 {
613 2 /*WriteByte(OUT_GUARDING, EEPROM_ADD_ARM_STATU);
614 2 WriteByte(0, EEPROM_ADD_TEL_EXIST);
615 2 WriteByte(0x12, EEPROM_ADD_USER_ID);
616 2 WriteByte(0x34, EEPROM_ADD_USER_ID + 1);
617 2 */
618 2
619 2 DisWdt(); //恢复出厂会开看门狗的
620 2 PageFill(0xFF, 0, 255); ///全部写了0xFF,那还怎么搞
621 2 WriteByte(0, EEPROM_ADD_TEL_EXIST);
622 2 RstAllSettings();///恢复密码时检测一下EEPROM的正确性,EEProm出问题的话,还会重新复位一下24C04
623 2 //恢复密码
624 2 WriteByte(0x12, EEPROM_ADD_USER_PWD);
625 2 WriteByte(0x34, EEPROM_ADD_USER_PWD + 1);///恢复出厂密码为1234
626 2 PageFill(0xFF, EEPROM_ADD_GUEST_PWD, NUM_GUEST_PWD * BYTE_PER_PWD); //和LHD6000一致 ///将操作密码
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -