📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 05/18/2008 16:43:12 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.C LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************************
2 * 版权所有 (C)2005,深圳豪恩科技有限公司
3 *
4 * 文件名称: main.C
5 * 文件标识:
6 * 内容摘要: LHD6000主板主芯片程序,2006-10-30开始
7 * 其它说明:
8 * 当前版本: 0.000
9 * 作 者: 涂常亮(豪恩科技研发中心安全主机组)
10 * 完成日期: 2005.03.28
11 *
12 * 修改纪录1:
13 * 修改日期: .
14 * 版 本 号: .
15 * 修 改 人: .
16 * 修改内容: .
17 * 修改纪录2:
18 *******************************************************************************/
19 #include "reg54.h"
20 #include <intrins.h>
21 #include "EEPROM.H"
22 #include "MACRO.H"
23 #include "AdmcPtcl.H"
24 #include "Head.H"
25 #include <ABSACC.H>
26
27 #define CUR_VER 0x10
28 //数据类型定义
29 typedef unsigned char uchar;
30 typedef unsigned int UInt;
31
32 //uchar pdata g_aucpTst[256];
33 //uchar xdata g_aucxTst[512];
34
35 //管脚定义
36 sbit pin_Listen = P0^5; //现场监听控制,允许监听时有效,低电平有效
37 sbit pin_Spk = P0^6; //控制主机喇叭,使用喇叭放音时有效,低电平有效
38 sbit pin_VoiceToPhone = P0^7; //拨号,现场监听和电话报警时有效,低电平有效
39
40 #define RST_AUX 1 //ATmel 89s52 高电平复位
41 sbit pin_RstAux = P1^5;
42 sbit pin_RstUsePwd = P1^6;
43
44 sbit pin_PickPhone = P2^0; //摘机 PCB上的ZJ
45 sbit pin_DTMFRecvDV = P2^1; //电平有效,表示收到有效的DTMF信号,PCB上的9170INT
46 sbit pin_TakeLine = P2^2; //抢线 PCB上的QX
47 sbit pin_ISD1420Play = P2^4;
48 sbit pin_LedArm = P2^3;
49 sbit pin_ISD1420Rec = P2^5;
50 sbit pin_LedAlarm = P2^6; //高电平发送,低电平接收
51 sbit pin_SelAux = P2^7; //高电平和辅助CPU通讯,低电平和键盘通讯
52 ///选择与键盘或辅助cpu通讯
53 sbit pin_Int0 = P3^2;
54 //电话
55 sbit pin_DTMFRecvOE = P1^7;
C51 COMPILER V8.02 MAIN 05/18/2008 16:43:12 PAGE 2
56 sbit pin_LineWave = P3^3;
57 sbit pin_DTMFGenCE = P3^4;
58 sbit pin_RingRecv = P3^5;
59 sbit pin_DTMFGenCLK = P3^6;
60 sbit pin_DTMFGenDat = P3^7;
61
62 #define DTMF_RECVD (!pin_DTMFRecvDV)
63
64 //全局变量声明(使用g_开头)
65 //字符型(有uc标志,加a表示是数组)
66
67 uchar data g_aucKBRecvdBuff[KB_RECV_BUFF_LEN]; //可以少一个 !!
68 uchar data g_aucKBSendBuff[KB_SEND_BUFF_LEN]; //键盘发送缓存,无校验字节长度为12
69 ///没有2级缓存吗
70 //uchar idata g_aucKBSendingBuff[KB_SEND_BUFF_LEN]; //键盘正在发送到数据
71 uchar data g_aucKBUsingBuff[KB_USING_BUFF_LEN]; //接收或者发送时使用的暂存区
72 uchar data g_aucAuxRecvdBuff[AUX_RECV_BUFF_LEN]; //辅助CPU已接收缓存
73 uchar data g_aucAuxRecvgBuff[AUX_RECV_BUFF_LEN]; //辅助CPU正在接收使用缓存
74 uchar data g_aucAuxSendBuff[AUX_SEND_BUFF_LEN]; //辅助CPU数据发送缓存
75 uchar data g_aucAuxSendgBuff[AUX_SEND_BUFF_LEN]; //辅助CPU发送寄存器// !! 可以和键盘共用
76 //uchar idata //; //防区类型,使用压缩BCD码每个字节纪录两个防区类型
77 //按顺序:1~16有线,21~28无线,41~48键盘有线
78
79 uchar idata g_aucArmTimeH[3]; //定时布防小时
80 uchar idata g_aucArmTimeM[3]; //定时布防分钟
81 uchar idata g_aucDisarmTimeH[3]; //定时撤防小时
82 uchar idata g_aucDisarmTimeM[3]; //定时撤防分钟
83 uchar idata g_aucRepeatKBMsg[2] = {0, 0}; //键盘数据发送次数
84 //g_aucRepeatKBMsg[1]表示g_aucKBSendBuff需要重复次数,0表示senging需要次数
85 uchar data g_aucRepeatAuxMsg[2] = {0, 0};
86 uchar idata g_aucDTMFBuff[5];
87
88 uchar idata g_ucTimer24C04Ack; //24C04写入等待
89 uchar data g_ucTimerWaitKB = TIME_WAIT_KB_1_PKG; //等待键盘发送的定时,令牌发送结束开始定时
90 ///等待键盘发送的定时
91 uchar data g_ucKBMsgPointer; //接收/发送计数器,为1表示收到一个字节/已发送一个字符
-//可以用静态?
92 uchar data g_ucKBCheckSum; //校验和
93
94 uchar data g_ucAuxSndPnt; //辅助CPU数据发送/接收指针
95 uchar data g_ucAuxRecvPnt; //辅助CPU数据接收指针
96 uchar data g_ucAuxCheckSum_S; //辅助CPU数据通讯发送校验和
97 uchar data g_ucAuxCheckSum_R; //辅助CPU数据通讯接收校验和
98
99 uchar data g_ucTimerWaitAux = TIME_WAIT_AUX_1_PKG; //向辅助CPU发送一次的时间定时
100 uchar data g_ucTimerSerPause = TIME_SERIES_PAUSE_KB;
101 //uchar data g_ucTimerAuxPaus = TIME_WAIT_AUX_1_PKG; //向辅助CPU发送一次的时间定时
102 //uchar data g_ucTimerKBPaus = TIME_SERIES_PAUSE_KB;
103
104 uchar idata g_ucUserIDH; //用户ID号
105 uchar idata g_ucUserIDL;
106
107 uchar idata g_ucTmLed; //LED闪烁计时
108 uchar idata g_ucAuxTm;
109
110 //报警状态定义
111 uchar idata g_ucPreWrZnStatus = 0;
112 uchar idata g_ucTimerSndAlm; //多个报警时,发送报警之间的间隔计时
113 //uchar idata g_ucSndAlm; //记录已发送到键盘的报警,以位表示
114 //uchar data g_ucAlmdZn[3]; //记录发生报警的防区,以位表示,无线16个,有线4个,防拆,紧急
115 //胁持不记录,密码锁定不记录立即发送.
116 uchar idata g_aucSndAlm[3]={0,0,0}; //记录已发送到键盘的报警,以位表示,单元0对应无线1~8,1对应无线9~16,2对应
C51 COMPILER V8.02 MAIN 05/18/2008 16:43:12 PAGE 3
-有线
117 uchar idata g_ucAlmNxtSnd;
118 uchar idata g_ucTypNxtSnd;
119
120 //uchar data g_aucAlarm[3];
121 uchar data g_ucAlmWrlsZn = 0; //无线防区1~8报警标志
122 //#define g_ucAlmWrlsZn g_aucAlarm[0]
123 uchar idata g_ucBypassWrlsZn; //无线防区1~8旁路标志,0表示被旁路
124 uchar idata g_ucSemiAlarmWrlsZn = 0; //无线防区1~8进入延时触发标志
125
126 //#define g_ucAlarmWrlsZnH g_aucAlarm[1]
127 uchar data g_ucAlarmWrlsZnH = 0; //无线防区9~16报警标志
128 uchar idata g_ucBypassWrlsZnH; //无线防区9~16旁路标志,0表示被旁路
129 uchar idata g_ucSemiAlmWrlsZnH = 0; //无线防区9~16进入延时触发标志 // !!!! .
130
131 //#define g_ucAlarmWireZone g_aucAlarm[2]
132 uchar data g_ucAlarmWireZone = 0; //有线防区报警标志 D7-D0对应防区8~1
133 uchar data g_ucBypassWrZn; //有线防区旁路标志,0表示被旁路,
134 uchar data g_ucSemiAlarmWrZn = 0; //有线防区进入延时触发标志
135
136 uchar data g_ucAlarmOth = 0; //D5是主机防拆(防区号30),
137 //D6是遥控和键盘紧急按钮(17),
138 //D7是胁持密码报警(18)
139 //D0 位表示是否交流掉电
140 //D1 位表示是否直流欠压
141 //D2 位表示是否电话掉线
142 uchar idata g_ucAlarmTimer = 0; //键盘报警需要.
143 #define PHONE_LOSE_LINE (0 != (g_ucAlarmOth & (0x01 << 2)))
144 uchar idata g_ucBypassOth; //0表示被旁路//可以合并到 g_ucBypassWrZn !! .
145 uchar idata g_ucAlarmTypes = 0; //当前发生过的报警类型的记录
146 uchar idata g_ucOutDelay; //布防延时设置,10秒为单位 //BCD码
147 uchar idata g_ucCominDelay; //进入延时设置,10秒为单位 //BCD码
148 //uchar idata g_ucCountSemiAlarms = 0; //发生进入延时报警个数;
149 bit g_FlagSemAlm;
150
151 uchar data g_ucArmStatus; //当前撤布防状态
152 //1外出,2留守,3撤防,4外出延时,5进入延时
153 uchar idata g_ucRingsAnsw; //自动接听电话所需的振铃次数,99 表示不接受电话控制
154 uchar data g_ucRings; //已经振铃次数
155
156 uchar idata g_ucUserPwdH; //用户密码
157 uchar idata g_ucUserPwdL;
158 uchar idata g_ucGuestPwdH[5]; //操作密码
159 uchar idata g_ucGuestPwdL[5];
160 uchar data g_ucHistPnt; //历史纪录的指针,指向将来的下一记录(0~39)
161 //uchar idata*/ g_ucKBSysInfID = 1; //发送系统信息时使用该变量指示发送对象
162 //日期时间的变量定义
163 //uchar idata g_ucYear;
164 //uchar idata g_ucMonth;
165 //uchar idata g_ucDate;
166 uchar idata g_ucHour;
167 uchar idata g_ucMinute;
168 uchar idata g_ucSecond;
169
170 //uchar data s_uc10Ms; //10毫秒数
171 //uchar idata g_ucTmICStart; //起振计时
172 uchar data g_ucAuxNullMsgTime = 200; //2s定时发送,//开始协议5s //在定时器0中处理
173 uchar data g_ucWatchAuxTimer = TIME_AUX_ERR; //11s没有收到数据复位 //在定时器0里1s中处理,
174 uchar data g_ucSeriesStop = TIME_NO_SER_INT; //计时多久没有进串口中断,
175
176 uchar data g_ucTrumpTime; //警号鸣叫时间计时,默认10分钟
177 uchar data g_ucRelayType; //继电器输出类型,默认火警输出,类型为2
C51 COMPILER V8.02 MAIN 05/18/2008 16:43:12 PAGE 4
178
179 //电话相关
180 uchar idata g_ucTelExist;
181 uchar idata g_ucPhoneIndex = 0; //记录报警时拨打的电话是第几个号码。
182 uchar idata g_ucTimerDialPause; //拨两个号码之间的延时定时器
183 uchar idata g_ucAlarmTypePlayed; //已经向用户播报过的报警防区类型,在播通一个号码时清零
184 uchar idata g_ucCallgTimers; //记录拨打第几遍电话
185 uchar idata g_ucDTMFPnt = 0xFF;
186
187 uchar idata g_ucDialNextDigit; //向HT9200发送两个数字之间的间隔定时
188
189 uchar idata g_ucTimerPhoneKey; //用户拨入进行远程控制时,允许的按键时间间隔
190 uchar idata g_ucTimerVoiceBlank; //电话报警播放语音之间的间隔计时
191 uchar idata g_ucVoiceTimes; //语音播放遍数
192 uchar idata g_ucLastBackRing;
193 uchar idata g_ucPhnPwdTimes; //拨入电话时密码输入错误次数
194 uchar idata g_ucTelRndTm = 0; ///?????
195
196 bit g_FlagRoundPause; ///????
197
198 //整型变量声明
199 UInt idata g_uiVoiceTimer; //ISD1420 录/放音计时,使用倒计时方式
200 UInt idata g_uiArmDelayTimer; //布防延时和进入延时共用的定时器寄存器,1s减1
201 UInt idata g_uiTrumpTimer; //警号计时,1s减1
202 UInt idata g_uiPhoneTm; //拨号后计时//2006-8-23
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -