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

📄 main.lst

📁 内容摘要: LHD6000主板主芯片程序 ISD1730时序说明: 参考:void Send_1Byte(uchar ucData_s)和uchar Receive_1Byte(void)的说明.
💻 LST
📖 第 1 页 / 共 3 页
字号:
 203          
 204          UInt time0_counter;      ///
 205          
 206          extern uchar idata g_ucAdemcoEvtSend; ///接警机
 207          extern uchar idata g_ucTryTimes_AdmcAlm;
 208          
 209          ///回铃音检测用
 210          ///回铃音检测看能否用另外一种方式
 211          ///白工写的那种不太好
 212          extern UInt data_counter_end;               //计时回铃音和来电振铃间隔
 213          extern UInt data_counter_begin;
 214          extern UInt data_counter;  ///
 215          
 216          //位变量声明(所有位变量都有Flag来区别) //bit 区开机时被清零,0不需赋值
 217          //报警相关状态
 218          bit g_FlagHasAlarm = 0;         //有警情
 219          bit g_FlagReAdm; //原 g_FlagNewAlm 可为局部变量,g_FlagReAdm 不能为局部变量
 220          bit g_FlagRecvgKBMsg;           //正在接收键盘数据
 221          //bit g_FlagKBRecOK;            //接收结束    //只需g_FlagKBMsgProcessed?
 222          bit g_FlagKBMsgProcessed = 1;   //有数据需要处理时为0
 223          bit g_FlagSendgKBMsg;           //正在发送
 224          bit g_FlagHasKBMsgSend;         //有数据需要发送
 225          bit g_FlagTokenSending;         //正在发送令牌
 226          bit g_FlagWaitKB = 1;           //开始等待键盘发送数据计时
 227          bit g_FlagKBIDSendg;            //正在发送令牌的对象ID
 228          ///设这些变量有用吗
 229          ///正在发送干嘛要搞个变量
 230          
 231          bit g_FlagSeriesPause;          //发送过数据等待键盘处理数据,再发下一个数据
 232                  ///不是说,每个数据发送2次
 233          //bit g_FlagKBPause;              //发送过数据等待键盘处理数据,再发下一个数据
 234          //bit g_FlagAuxPause;             //发送过数据等待辅助CPU处理数据,再发下一个数据
 235          
 236          bit g_FlagHasAuxMsgSend;        //有命令需要发送到辅助CPU
 237          bit g_FlagSendgAuxMsg;          //正在向辅助CPU发送命令
 238          bit g_FlagRecvgAUXMsg;          //正在接收辅助CPU数据
 239          
C51 COMPILER V8.02   MAIN                                                                  05/18/2008 16:43:12 PAGE 5   

 240          bit g_FlagWaiting24C04Ack;
 241          bit g_FlagInDelaying;           //进入延时期间
 242          bit g_FlagOutDelaying;          //外出延时期间
 243          
 244          bit g_FlagAuxMsgProcessed = 1; ///有数据需要处理时为0????
 245          bit g_FlagHasDeleyAlarm;        //有延时报警发生(已经报警,非刚触发)
 246          bit g_FlagSndNewAlm;            //准备取下一个需要发送的报警
 247          
 248          //bit g_FlagForced;               //胁持报警
 249          bit g_FlagVoiceOn;              //正在录/放音标志
 250          //bit g_FlagZnExtned = 0;         //标志是否有扩展防区
 251          bit g_FlagAuxOK = 0;
 252          
 253          bit g_FlagTrumpOn;              //警号鸣叫中
 254          bit g_FlagTrumpSel;             //是否使用警笛(静音/强音报警)
 255          bit g_FlagTimeArm;              //是否使用定时撤布防
 256          bit g_FlagRelayChang;           //需要更新继电器输出
 257          
 258          bit g_FlagSendKBTime;           //需要发送时间给键盘;因为系统参数包含了时间
 259          bit g_FlagArmTime = 1;          //需要判断定时撤、布防标志
 260          //bit g_FlagInfoOutDelayEnd;      //需要通知键盘外出延时结束
 261          
 262          bit g_FlagSecChanged;           //
 263          
 264          //电话相关
 265          bit g_FlagPhoneSPkg;// = 0;        //通话开始,即已经摘机
 266          bit g_FlagDialPause;// = 0;        //等待 5s 播下一个号码
 267          bit g_FlagCalling;// = 0;          //已经开始电话报警,号码拨打,可以不使用该变量 ??? .
 268          bit g_FlagCallEnd = 1;          //已经将当前警情报告用户,
 269          bit g_FlagDialing;// = 0;          //正在拨一个电话号码
 270          bit g_FlagDialNextDigit;// = 0;    //拨电话号码时 10ms 拨一位
 271          bit g_FlagDialOK;               //表示一个电话拨号拨完,等待回铃音
 272          bit g_FlagPhnCmdPrcd = 1;
 273          bit g_FlagDTMFRcving;           //接听拨入电话后置为1
 274          bit g_FlagCallInStart;          //开始振铃置为1,接听回复声音音(按键)后置为0
 275          bit g_FlagVoiceBlank;           //播放报警类型之间的等待
 276          bit g_FlagListeng;              //正在监听
 277          
 278          bit g_FlagPlayVoice;            //可以使用电话播放报警声音
 279          bit g_FlagSeizeOK;              //有报警保持大部分时间处于摘机状态,主要是第一次不好处理,增加改变量
 280          bit g_FlagPhnPwdOK;             //电话输入密码正确
 281          
 282          bit g_FlagEraseAdd;
 283          bit g_FlagRecAdd;
 284          //bit g_FlagAuxKBInitd;           //收到辅助CPU的是否扩展防区的信息
 285          bit g_FlagTrnOnTrump;
 286          //密码锁定
 287          bit g_FlagLckgPwd;
 288          bit g_FlagChkPhnLn;
 289          
 290          uchar idata g_ucAlarmStage = 0;    //拨号前hangup会清
 291          uchar idata g_ucAdemcoEvts = 0;
 292          
 293          bit g_FlagAdmcAlmg;
 294          
 295          bit g_FlagPrtcl41 = 0;//24C04地址定义EEPROM_ADD_FLAG41_SEL
 296          
 297          extern bit data_receiving;
 298          extern bit g_FlagRdPrtclSel;
 299          
 300          //函数原型声明
 301          void InitMCU(void);                     //初始化CPU设置,定时器等
C51 COMPILER V8.02   MAIN                                                                  05/18/2008 16:43:12 PAGE 6   

 302          void InitPeri(void);                    //初始化外围芯片
 303          void RstUsrPwd(void);
 304          void InitAux(void); //void InitAux(bit FlagInitd);
 305          //void InitKeyBrd(void);
 306          void ProcessKBMsg(void);                //键盘通讯数据处理
 307          void ProcessAuxMsg(void);               //辅助CPU通讯数据处理
 308          void Delay87us(void);
 309          void ProcPhoneCmd(void);                //处理电话命令
 310          void PhoneAlarm(void);                  //电话拨号处理
 311          void StoreAuxMsg(uchar ucAuxRecvData);  //保存接收的辅助CPU的数据
 312          void TimerArm(void);
 313          void GoToOutGuard(void);                //外出布防    //bit  GoToOutGuard(void);
 314          void GoToHomeGuard(void);               //留守布防
 315          void GoToDisguard(void);                //撤防操作
 316          void SendKBTime(void);                  //广播时间
 317          void SendAlarm(void); //uchar ucAlmZn);                   //广播报警
 318          void KBSendStart(void); ///发送键盘数据包之前,复位相关参数
 319          void SendToken(void);  ///这也要搞个函数,不懂
 320          void AuxSendStart(void); ///发送辅助CPU数据包之前,复位相关参数
 321          void Delay10ms(void);
 322          void StartComeIn(void); ///啥
 323          //void ManulKeyRecPlay(void);
 324          void SetKBMsg(void); ///设置键盘信息
 325          void SetAuxMsg(void);///设置辅助CPU信息
 326          
 327          void SendHT9200(uchar ucDataHT9200); //发送到HT9200产生DTMF信号
 328          void Hangup(void); ///挂机,执行有关变量的处理
 329          void PlayAlarmVoice(void); ///播放报警语音
 330          void RecvDTMF(void);  
 331          void DialPhone(void);                               //拨电话号码
 332          void CheckDateTime(void);///????
 333          void WatchAux(void);
 334          void ChangeRly(void);
 335          void ProcesClock(void);
 336          void ProcesTimer(void);
 337          void RcdCntctIDEvt(uchar ucEvtInd, uchar ucZone);  ///????
 338          void LocalAlarm(void);
 339          void Rcd41Evt(uchar ucEvtInd);
 340          void STOP_PHONE_INF(void);  ///停止拨用户电话
 341          void ProcesISD1730(void);
 342          
 343          uchar Hex_BCD(uchar ucNumHex);
 344          
 345          uchar BCD_Hex(uchar ucNumBCD);
 346          uchar CalcZoneType(uchar ucZoneNum);
 347          uchar CheckPwd(uchar const idata *buff);
 348          uchar TstBit(uchar ucData);
 349          
 350          bit  RecordAlarm(uchar ucAlarmZone, uchar ucZoneType);
 351          bit  IsBCD(uchar ucNum_IsBCD);
 352          bit  ProcZnSign(uchar ucZoneNum);
 353          bit  IsBypass(uchar ucZoneNum);
 354          bit  MarkSemiAlarm(uchar ucZoneNum);                     //纪录进入延时报警
 355          bit  MarkAlarm(uchar ucZoneNum);                        //纪录报警
 356          bit  BypassOrUnbypZn(bit FlagBypassUnbyp);              //处理键盘的旁路和取消旁路命令
 357                                                                  //取消旁路输入参数为0
 358          bit  SetZoneType(void);                                 //设置防区类型使调用该函数,执行成功返回0
 359          bit  ResetZoneType(void);                               //恢复防区类型为出厂值
 360          bit  SendKBSysInfo(uchar ucKBSysInfID, uchar ucSubId);   //发送键盘所需系统信息
 361          bit  LoadSysInfo(void);
 362          bit  RstAllSettings(void);
 363          
C51 COMPILER V8.02   MAIN                                                                  05/18/2008 16:43:12 PAGE 7   

 364          bit  StartNewSendMsg(void);      ///发送新的信息,
 365          
 366          //外部函数
 367          void WriteTime(unsigned char ucRegAdd, unsigned char ucData);
 368          void InitHT1380(void);
 369          unsigned char ReadTime(unsigned char ucRegAdd);
 370          bit  WriteByte(unsigned char ucDataWrite, unsigned int uiAddWrite);     //24C04.C;写入成功返回0
 371          bit  ResetHT1380(void);
 372          unsigned char ReadByte(unsigned int uiAddRead);
 373          unsigned char PageWrite(unsigned char const idata *pucDataWrt,
 374                                  unsigned int uiAddStart,
 375                                  unsigned char length);
 376          unsigned char PageFill(unsigned char const idata ucDataPgFill,
 377                                 unsigned int uiAddStart_Fill,
 378                                 unsigned char ucLengthFill);
 379          unsigned char checkBackRingResult(void);
 380          void AdemcoAlarm(void);                 //向Ademco685 戒(接?)警主机发送警情信息
 381          
 382          //ISD1730操作函数
 383          void SendISD1730CmnCmd(uchar ucCmd);
 384          uchar ReadStatus(void); //uchar ReadStatus(uchar idata * data p_Status);
 385          void WrApcReg(uchar idata ucAPCL,uchar idata ucAPCH);
 386          void PlayISD(uchar ucSect,bit FlagSpk);
 387          void EraseAdd(void);
 388          void RecAdd(void);
 389          
 390          //函数实现部分。从main()开始,函数实现顺序和声明顺序相同
 391          /***************************************
 392          * 函数名:main()
 393          * 功能:  主函数
 394          ****************************************/
 395          void main(void)
 396          {
 397   1          ClrWdt(); ///清看门狗
 398   1          pin_RstAux = RST_AUX;
 399   1          InitMCU(); ///初始MCU资源
 400   1          Delay10ms();
 401   1          pin_RstAux = !RST_AUX; //主CPU控制辅助CPU复位
 402   1          for (g_ucHour=0; g_ucHour<30; g_ucHour++)
 403   1          {
 404   2              Delay10ms();
 405   2              ClrWdt();
 406   2          } ///300ms做什么
 407   1          InitMCU(); ///???为什么又初始化一遍  ///单片机所有中断都打开了
 408   1          InitPeri();///初始化外围IC1380,1730。
 409   1      
 410   1          //跳线恢复用户密码
 411   1          RstUsrPwd();
 412   1          
 413   1          LoadSysInfo();///将24C04中数据读出来,初始化许多跟编程设置相关的全局变量
 414   1          WriteByte(0xFF, EEPROM_ADD_CNTCT_EVT_START+MAX_CNTCT_EVT_NUM*BYTES_PER_CNTCT_EVTS
 415   1                          -BYTES_PER_CNTCT_EVTS); //避免开机第一个撤防不能发送

⌨️ 快捷键说明

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