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

📄 admcptcl.lst

📁 内容摘要: LHD6000主板主芯片程序 ISD1730时序说明: 参考:void Send_1Byte(uchar ucData_s)和uchar Receive_1Byte(void)的说明.
💻 LST
字号:
C51 COMPILER V8.02   ADMCPTCL                                                              05/18/2008 16:43:12 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE ADMCPTCL
OBJECT MODULE PLACED IN AdmcPtcl.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE AdmcPtcl.C LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************************
   2          * 版权所有 (C)2005,深圳豪恩科技有限公司
   3          *
   4          * 文件名称:  main.C
   5          * 文件标识:
   6          * 内容摘要: LHD6000主板主芯片程序,2005.12.05开始
   7          * 其它说明:
   8          * 当前版本: 0.000
   9          * 作    者:  涂常亮(豪恩科技研发中心安全主机组)
  10          * 完成日期: 2005.03.28
  11          *
  12          * 修改纪录1:
  13          *    修改日期:
  14          *    版 本 号:
  15          *    修 改 人:
  16          *    修改内容:
  17          * 修改纪录2:
  18          *******************************************************************************/
  19          //#define USE_EMULATE
  20          
  21          #ifndef AdemcoProtocol_C
  22          #define AdemcoProtocol_C
  23          
  24          #include "reg54.h"
  25          #include <intrins.h>
  26          #include "EEPROM.H"
  27          //c_auiContactIDCode[],CONTACTID_INDEX 的宏定义在头文件"AdmcPtcl.H"中
  28          #include "AdmcPtcl.H"
  29          #include "Head.H"
  30          /*******************************************************************************
  31          * 函 数 名:
  32          * 功    能:
  33          * 输入参数: 无
  34          * 输出参数: 无
  35          * 返 回 值: 无
  36          * 其它说明:
  37          * 修改日期            版本号       修改人           修改内容
  38          *-----------------------------------------------------------------------
  39          *
  40          *******************************************************************************/
  41          //24C04存放是否使用ContactID的位置定义为 EEPROM_ADD_CONTACT_ID_SEL
  42          
  43          unsigned char idata g_ucAdemcoEvtSend = 0;//原来为AdemcoAlarm()的静态变量,从 g_ucAdemcoEvts 解析出来为 4+1
             - 事件码
  44                                           ///事件发送变量
  45          
  46          unsigned char idata g_ucAdmcCheckSum;//原来为AdemcoAlarm()的静态变量,//不需初始化
  47                           ///校验和  
  48          
  49          unsigned char idata g_ucTryTimes_AdmcAlm = 0;//原来为AdemcoAlarm()的静态变量,
  50                                           ///尝试次数
  51          
  52          
  53          bit g_FlagRdPrtclSel = 0;
  54                    ///协议选择
C51 COMPILER V8.02   ADMCPTCL                                                              05/18/2008 16:43:12 PAGE 2   

  55          
  56          static unsigned char s_ucVar_CntctID;
  57                            ///ContactID静态变量
  58          
  59          extern bit g_FlagAdmcAlmg;
  60                            ///安定宝正在报警
  61          
  62          extern bit g_FlagDialNextDigit;
  63                            ///正在拨下一个数字标志位
  64          
  65          extern unsigned char idata g_ucAdemcoEvts;  //记录防区号,将来记录报警个数
  66                            ///记录安定宝(4+1或ContactID)事件号
  67          
  68          extern unsigned char idata g_ucAlarmStage;
  69                    ///报警某个阶段
  70          
  71          extern unsigned char idata g_ucLastBackRing;
  72                            ///回铃音暂存变量
  73          
  74          extern unsigned char idata g_ucUserIDH;
  75          extern unsigned char idata g_ucUserIDL;
  76                            ///用户密码占两个字节
  77          
  78          extern unsigned char idata g_ucDialNextDigit;
  79                    ///要拨的下一个数字
  80          
  81          extern bit data_receiving;
  82                            ///正在接收数据标志位
  83          
  84          extern bit g_FlagPrtcl41;//24C04地址定义EEPROM_ADD_FLAG41_SEL
  85                            ///选择4+1还是ContactID协议
  86          
  87          //外部函数
  88          void SendHT9200(unsigned char ucDataHT9200);///DTMF发码
  89          
  90          void Hangup(void); ///挂机
  91          
  92          
  93          unsigned char ReadByte(unsigned int uiAddRead);
  94                          ///从24C04读一个字节
  95          
  96          unsigned char CalcZoneType(unsigned char ucZoneNum); 
  97                        ///根据防区号得出防区类型
  98          
  99          bit  WriteByte(unsigned char ucDataWrite, unsigned int uiAddWrite);     //24C04.C;写入成功返回0
 100                         ///写一个字节,写地址为整形数据
 101          
 102          bit  IsBCD(unsigned char ucNum_IsBCD);
 103                            ///判断是否为BCD码
 104          
 105          /*unsigned char PageFill(unsigned char const idata ucDataPgFill,
 106                                 unsigned int uiAddStart_Fill,
 107                                 unsigned char ucLengthFill);*/
 108          
 109          
 110          void ContactID(void);
 111                          ///ContactID函数
 112          
 113          void Ademco41(void);
 114                  ///4+1函数
 115          
 116          void AdemcoAlarm(void);
C51 COMPILER V8.02   ADMCPTCL                                                              05/18/2008 16:43:12 PAGE 3   

 117                          ///向接警中心报警
 118          
 119          /*******************************************************************************
 120          * 函 数 名:      void ContactID(void)
 121          * 功    能:      按照CCCC+18+Q+EEE+GG+ZZZ+X格式发送ADEMCO ContactID信息。
 122          * 输入参数: 无   ///但是有全局变量g_ucAlarmStage
 123          * 输出参数: 无   按照发送阶段发送ContactID码
 124          * 返 回 值: 无
 125          * 其它说明:并不是完全按照这种格式来的,不懂。 ///080506
 126          * 修改日期            版本号       修改人           修改内容
 127          *-----------------------------------------------------------------------
 128          *
 129          *******************************************************************************/
 130          void ContactID(void)
 131          {
 132   1          unsigned char ucTmp_CntctID; ///ContactID函数的一个中间变量
 133   1          bit FlagErr_CtctID;          ///出错标志位
 134   1      
 135   1          switch (g_ucAlarmStage)///阶段
 136   1          {
 137   2              //数字之间要有间隔,DTMF暂停
 138   2              case ADEMCO_SEND_FMT:   //发送 18   //case 8:
 139   2                  {
 140   3                      SendHT9200(0x01);
 141   3                      g_ucAdmcCheckSum++;
 142   3                      g_ucAlarmStage++;  ///报警阶段
 143   3                  }
 144   2                  break;
 145   2              case ADEMCO_SEND_FMT + 2:   //10(0x0A)
 146   2                  {
 147   3                      SendHT9200(0x08);
 148   3                      g_ucAdmcCheckSum += 8;
 149   3                      g_ucAlarmStage++;
 150   3      
 151   3                      //预先读出,减少读取24C04对时间的影响,因为别的部分可能写过24C04.
 152   3                      FlagErr_CtctID = 0;
 153   3                      if (MAX_CNTCT_EVT_NUM <= g_ucAdemcoEvtSend)
 154   3                      {
 155   4                          g_ucAdemcoEvtSend = 0;///发的个数超过了最大的ContactID事件号
 156   4                      }
 157   3                      do{
 158   4                          if (FlagErr_CtctID)//放在判断里面,可以顺便再次检查 g_ucAdemcoEvts,也好排版
 159   4                          {    ///FlagErr_CtctID=1,表示什么意思。
 160   5                              g_ucAdemcoEvts--;         ///???
 161   5                              g_ucAdemcoEvtSend++;  ///???
 162   5                              if (MAX_CNTCT_EVT_NUM <= g_ucAdemcoEvtSend)
 163   5                              {
 164   6                                  g_ucAdemcoEvtSend = 0;
 165   6                              }
 166   5                          }
 167   4                          if ((0 != g_ucAdemcoEvts) && (MAX_CNTCT_EVT_NUM >= g_ucAdemcoEvts))
 168   4                          {
 169   5                              ;
 170   5                          }
 171   4                          else
 172   4                          {
 173   5                              //后面处理和 Ademco41() 出错处理一样 if (8 <= g_ucAdemcoEvtSend)
 174   5                              g_ucAdemcoEvts = 0;
 175   5                              Hangup();
 176   5                              return;
 177   5                          }
 178   4      
C51 COMPILER V8.02   ADMCPTCL                                                              05/18/2008 16:43:12 PAGE 4   

 179   4                          s_ucVar_CntctID = ReadByte(EEPROM_ADD_CNTCT_EVT_START
 180   4                                                     +g_ucAdemcoEvtSend*BYTES_PER_CNTCT_EVTS);
 181   4                                                                                                 ///读出事件号///单字节///b7b6是,b5b4b3b2b1b0是事件索引号
 182   4                          ClrWdt();
 183   4                          //高两位只能是01或02,b0~b5 是事件索引号
 184   4                                              ///高两位的01或02表示什么意思?
 185   4                          FlagErr_CtctID = (bit) (( (( (bit)(s_ucVar_CntctID&0x80))
 186   4                                                       == ((bit)(s_ucVar_CntctID&0x40))) ) ///高两位相同都为0或

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -