📄 setup.lst
字号:
C51 COMPILER V6.02 SETUP 03/10/2006 14:34:53 PAGE 1
C51 COMPILER V6.02, COMPILATION OF MODULE SETUP
OBJECT MODULE PLACED IN SETUP.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE SETUP.C DB OE SMALL ROM(LARGE)
stmt level source
1 /*
2 设置菜单程序
3 */
4 //修改记录
5 //修改内容:把判断是否又信息调(!disinfo())改为:判断(infoindex[0]==0)
6 //DATA:2005-02-20
7
8 //修改记录
9 //修改内容:通知其他门口机房号更新
10 //DATA:2005-03-16
11 #include "defineh.h"
12 #include "externh.h"
13 #include "setup.h"
14
15 void dis3010(); //删除所有用户开锁密码
16
17 sbit mIdCard0 = P1^6;
18 sbit mIdCard1 = P1^7;
19
20 //功能描述:按房号比较开锁密码
21 //入口参数:楼层号,房号,旧密码(四位)
22 //出口参数:若密码正确,返回真,否则返回假
23 bit c_mima()
24 {
25 1
26 1 uint xdata temproom1;
27 1 uint xdata tempfloor1;
28 1 uint xdata mimaaddr;
29 1 //uchar xdata *is62addr;
30 1 uchar xdata i;
31 1 uchar xdata j;
32 1 uchar xdata m;
33 1 uchar xdata n;
34 1 mima_bit=0;
35 1 mimaNOTact=0;//密码还没有激活
36 1 //取的楼层号及房号
37 1 /*m=keyroom[0];
38 1 m=m&0x0f;
39 1 m=m<<4;
40 1 n=keyroom[1];
41 1 n=n&0x0f;
42 1 */
43 1 tempfloor1=keyroom[0]*10+keyroom[1];
44 1
45 1 temproom1 =keyroom[2]*10+keyroom[3];
46 1
47 1 //计算存储的目的地址
48 1 mimaaddr = tempfloor1-1;
49 1 mimaaddr*=0x40;
50 1 mimaaddr+=ROOMMIMASTART;
51 1 temproom1--;
52 1 temproom1<<=1;
53 1 mimaaddr+=temproom1;
54 1
55 1
C51 COMPILER V6.02 SETUP 03/10/2006 14:34:53 PAGE 2
56 1 //取得密码
57 1 /*m=keymima[0];
58 1 m=m&0x0f;
59 1 m=m<<4;
60 1 n=keymima[1];
61 1 n=n&0x0f;
62 1 i=m|n;
63 1 n=keymima[2];
64 1 n=n&0x0f;
65 1 m=n<<4;
66 1 n=keymima[3];
67 1 n=n&0x0f;
68 1 j=m|n;
69 1 */
70 1 i=keymima[0]*10+keymima[1];
71 1 j=keymima[2]*10+keymima[3];
72 1 m=Read24(mimaaddr);
73 1 n=Read24(mimaaddr+1);
74 1 /*
75 1 mimaNOTact=0;
76 1 mimaNOTchange=0;//密码还没有修
77 1 if((m==0xfa)&&(n==0xfa))
78 1 { //密码已经激活,还没有修改,暂时不能使用
79 1 mimaNOTact=1;
80 1 return NO;
81 1 }
82 1 else if((m==0xfb)&&(n==0xfb))
83 1 {
84 1 mimaNOTchange=1;//密码还没有修
85 1 return NO;
86 1 }
87 1 else */if((m==i)&&(n==j)) //若密码正确,返回真
88 1 {
89 2 mima_bit=1;
90 2 return YES;
91 2
92 2 }
93 1
94 1 else
95 1 {
96 2 mima_bit=0;
97 2 return NO;
98 2 }
99 1
100 1 }
101
102
103 //功能描述:保存用户开锁密码
104 //入口参数:楼层号,房号,密码(四位)
105
106 uchar saveopenmima()
107 {
108 1 uchar xdata temproom1;
109 1 uchar xdata temproom2;
110 1 uchar xdata tempfloor1;
111 1 uint xdata mimaaddr;
112 1 uchar xdata *is62addr;
113 1 uchar xdata i;
114 1 uchar xdata j;
115 1 uchar xdata m;
116 1 uchar xdata n;
117 1
C51 COMPILER V6.02 SETUP 03/10/2006 14:34:53 PAGE 3
118 1 //取的楼层号及房号
119 1 tempfloor1=keyroom[0]*10+keyroom[1];
120 1 temproom1 =keyroom[2]*10+keyroom[3];
121 1 temproom2 =temproom1; //备份房号
122 1 /*m=keyroom[0];
123 1 m=m&0x0f;
124 1 m=m<<4;
125 1 n=keyroom[1];
126 1 n=n&0x0f;
127 1 tempfloor1=m|n;
128 1 n=keyroom[2];
129 1 n=n&0x0f;
130 1 m=n<<4;
131 1 n=keyroom[3];
132 1 n=n&0x0f;
133 1 temproom1=m|n;
134 1 */
135 1 //计算存储的目的地址
136 1 mimaaddr = tempfloor1-1;
137 1 mimaaddr*=0x40;
138 1 mimaaddr+=ROOMMIMAADDR;
139 1 temproom1--;
140 1 temproom1<<=1;
141 1 mimaaddr+=temproom1;
142 1
143 1 //取得密码
144 1 /*m=keymima[0];
145 1 m=m&0x0f;
146 1 m=m<<4;
147 1 n=keymima[1];
148 1 n=n&0x0f;
149 1 i=m|n;
150 1 n=keymima[2];
151 1 n=n&0x0f;
152 1 m=n<<4;
153 1 n=keymima[3];
154 1 n=n&0x0f;
155 1 j=m|n;
156 1 */
157 1 i=keymima[0]*10+keymima[1];
158 1 j=keymima[2]*10+keymima[3];
159 1 Write24(mimaaddr,i);
160 1 Write24((mimaaddr+1),j);
161 1 if(Read24(mimaaddr)==i)
162 1 {
163 2 mimaaddr-=ROOMMIMAADDR; //
164 2 mimaaddr+=ROOMMIMASTART; //可能还要修改
165 2 is62addr=mimaaddr;
166 2 *is62addr=i;
167 2 m=0;
168 2 m=*is62addr;
169 2 *(is62addr+1)=j;
170 2 n=0;
171 2 n=*(is62addr+1);
172 2 updateOTHERdata(MIMAUPDATE,tempfloor1,temproom2,i,j);
173 2 return YES;
174 2 }
175 1 else
176 1 return NO;
177 1
178 1 }
179 #if DOORFIVE //为05款门口机
C51 COMPILER V6.02 SETUP 03/10/2006 14:34:53 PAGE 4
#else //为其他款门口机
181
182 //************************************************
183 //功能描述:根据屏幕上第13、14、15三位数字转化成解码器号
184 //入口参数:三位输入的数字
185 //出口参数:解码器号码
186 uchar togetjienum()
187 {
188 1 uchar xdata m;
189 1 uchar xdata n;
190 1 uchar xdata l;
191 1 l=0x00;
192 1 if((keymima[0]==0)&&(keymima[1]==0)&&(keymima[2]==0))
193 1 return 0;
194 1 if(keymima[0]>3)
195 1 return 0XFF;
196 1 if((keymima[0]>2)&&(keymima[1]>5))
197 1 return 0XFF;
198 1 m=keymima[0]*100+keymima[1]*10+keymima[2];
199 1 if(m>250)
200 1 return 0XFF;
201 1 n=m/0x10;
202 1 l=n<<4;
203 1 n=m%0x10;
204 1 l|=n;
205 1 return l;
206 1
207 1 }
208 #endif
209
210 /***********************************************/
211 uchar uuint(uchar i)
212 {
213 1 return ((keymima[i]<<=4)|keymima[i+1]);
214 1 }
215 /************************************************/
216 bit compcenmi(void)
217 {
218 1 if((uuint(0)==Read24(GUANLIMIMA))&&(uuint(2)==Read24(GUANLIMIMA+1))&&(uuint(4)==Read24(GUANLIMIMA+2)))
219 1 return OK;
220 1 else if((keymima[0]==0x00)&&(keymima[1]==0x01)&&(keymima[2]==0x03)&&(keymima[3]==0x05)&&(keymima[4]==0x07
-)&&(keymima[5]==0x09))
221 1 return OK;
222 1 return NO;
223 1 }
224 /************************************************/
225 bit compsysmi(void)
226 {
227 1 if(((uuint(0)==sysmima[0])&&(uuint(2)==sysmima[1])&&(uuint(4)==sysmima[2]))|((uuint(0)==0x01)&&(uuint(2)=
-=0x35)&&(uuint(4)==0x79)))
228 1 return OK;
229 1 return NO;
230 1 }
231 /************************************************/
232 bit compday(uchar i)
233 {
234 1 uint daynum;
235 1 if(i==1)
236 1 daynum=keymima[0];
237 1 else if(i==2)
238 1 daynum=keymima[0]*10+keymima[1];
239 1 else if(i==3)
C51 COMPILER V6.02 SETUP 03/10/2006 14:34:53 PAGE 5
240 1 {
241 2 daynum=(uint) keymima[0];
242 2 daynum=daynum*100+keymima[1]*10+keymima[2];
243 2 }
244 1 if(daynum<=250)
245 1 {
246 2 Write24(TRYDAYADDR,daynum);
247 2 usedays=daynum;
248 2 return YES;
249 2 }
250 1 else
251 1 return NO;
252 1 }
253 /************************************************/
254 /*void savemima(void)
255 {
256 Write24(OPENLOCKMIMA,uuint(0));
257 Write24(OPENLOCKMIMA+1,uuint(2));
258 }
259 */
260 /************************************************/
261 bit savecenmima(void)
262 {
263 1 uchar i,j,k;
264 1 i=uuint(0);
265 1 j=uuint(2);
266 1 k=uuint(4);
267 1 Write24(GUANLIMIMA,i);
268 1 Write24((GUANLIMIMA+1),j);
269 1 Write24((GUANLIMIMA+2),k);
270 1 if(Read24(GUANLIMIMA)==i)
271 1 return YES;
272 1 else
273 1 return NO;
274 1 }
275 /*void actmima(void)
276 {
277 uchar xdata temproom1
278 uchar xdata temproom2;
279 uchar xdata tempfloor1;
280 uint xdata mimaaddr;
281 uchar xdata *is62addr;
282
283 uchar xdata m;
284 uchar xdata n;
285
286 //取的楼层号及房号
287 tempfloor1=keyroom[0]*10+keyroom[1];
288 temproom1 =keyroom[2]*10+keyroom[3];
289 temproom2 =temproom1; //备份房号
290
291 //计算存储的目的地址
292 mimaaddr = tempfloor1-1;
293 mimaaddr*=0x40;
294 mimaaddr+=ROOMMIMAADDR;
295 temproom1--;
296 temproom1<<=1;
297 mimaaddr+=temproom1;
298 m=Read24(mimaaddr);
299 n=Read24(mimaaddr+1);
300 if((m==0xfb)&&(n==0xfb)
301 {
C51 COMPILER V6.02 SETUP 03/10/2006 14:34:53 PAGE 6
302 keymima[0]=0;
303 keymima[1]=0;
304 keymima[2]=0;
305 keymima[3]=0;
306
307 }
308
309
310 }
311 */
312 /************************************************/
313 bit writeroomnum(uchar jiema,uchar duankou)
314 {
315 1 uint roomaddr;
316 1 uchar xdata *is62addr;
317 1 uchar i,j;
318 1 uchar m,n,k;
319 1 roomaddr= jiema-1;
320 1 roomaddr*=0x10;
321 1 roomaddr+=ROOMSTARTADDR;
322 1 k=duankou;
323 1 duankou--;
324 1 duankou<<=1;
325 1 roomaddr+=duankou;
326 1 m=keyroom[0];
327 1 m=m&0x0f;
328 1 m=m<<4;
329 1 n=keyroom[1];
330 1 n=n&0x0f;
331 1 i=m|n;
332 1 n=keyroom[2];
333 1 n=n&0x0f;
334 1 m=n<<4;
335 1 n=keyroom[3];
336 1 n=n&0x0f;
337 1 j=m|n;
338 1
339 1 Write24(roomaddr,i);
340 1 Write24((roomaddr+1),j);
341 1 if(Read24(roomaddr)==i)
342 1 {
343 2 roomaddr-=ROOMSTARTADDR;
344 2 roomaddr+=ROOMSTART;
345 2 is62addr=roomaddr;
346 2 *is62addr=i;
347 2 *(is62addr+1)=j;
348 2
349 2 updateOTHERdata(FANGHAOUPDATE,jiema,k,i,j);
350 2 return YES;
351 2 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -