⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 内容摘要: LHD6000主板主芯片程序 ISD1730时序说明: 参考:void Send_1Byte(uchar ucData_s)和uchar Receive_1Byte(void)的说明.
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -