📄 keypad.lst
字号:
C51 COMPILER V7.01 KEYPAD 03/08/2007 12:09:34 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE KEYPAD
OBJECT MODULE PLACED IN keypad.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE keypad.c OPTIMIZE(7,SPEED) REGFILE(.\fingerPRJ.ORC) BROWSE FLOATFUZZY(0) NO
-AREGS DEBUG OBJECTEXTEND CODE
stmt level source
1 #include "reg58.h"
2 #include "intrins.h"
3
4 #define _KEYPAD_C_
5 #include "keypad.h"
6 #include "lcd.h"
7 #include "define.h"
8 #include "rxd.h"
9 #include "373.h"
10 #include "timer.h"
11 #include "system.h"
12 #include "finger.h"
13 #include "event.h"
14 #include "setup.h"
15 #include "sram.h"
16 #include "user.h"
17 #include "ts.h"
18 #include "inout.h"
19
20
21 bit idinflag,passinflag,keydownflag;
22 unsigned char idata keybuff[8];
23 unsigned char data keynumber,keycounter,keyinputtimer;
24 unsigned char data keytype,cardnumhigh;
25 //unsigned char xdata password[2];
26 //bit keyackflag,keypackflag;
27 //////////////////////////////////////////////////////////////////////////
28 void numberfun()
29 {
30 1
31 1
32 1 //if(key>NUMBER9)return;
33 1 //beepon();
34 1 keyinputtimer=timerh; //fresh the keyinputtimer,
35 1
36 1 if(setflag)
37 1 {
38 2 switch (setupitem)
39 2 {
40 3 case SETMODE:setmode( );break;
41 3 case SETTIME:settime( );break;
42 3 case SETAPB:setapb( );break;
43 3 case SETCOMMID:setcommid( );break;
44 3 case SETDURESS:setduress( );break;
45 3 case SETDURESSPW:setduresspw( );break;
46 3 case SETBAUDRATE:setbaudrate( );break;
47 3 case SETEVENTCLEAR:seteventclear( );break;
48 3 case SETMASTERCHANGE:setmasterchange( );break;
49 3 case SETSYSINIT:setsysinit( );break;
50 3 case SETCLEARID:setidclear( );break;
51 3 case SETCLEARTS:settsclear( );break;
52 3 case SETKEYIN:setkeyin( );break;
53 3 case SETTS:setts( );break;
54 3 case SETHOLDEF:setholdef( );break;
C51 COMPILER V7.01 KEYPAD 03/08/2007 12:09:34 PAGE 2
55 3 case SETIODEF:setiodef( );break;
56 3 case SETHOLINDEX:setholindex( );break;
57 3 case SETMODEINDEX:setmodeindex( );break;
58 3 case SETIDREGISTER:setidregister( );break;
59 3 case SETIDDELETE:setiddelete( );break;
60 3 case SETIDLIST:setidlist( );break;
61 3 case SETIDCOUNT:setidcount( );break;
62 3 case SETEVENTCOUNT:seteventcount( );break;
63 3 case SETFWVER:setfwver( );break;
64 3 case SETRAMTEST:setramtest( );break;
65 3 case SETOUTTEST:setouttest( );break;
66 3 case SETLCDTEST:setlcdtest( );break;
67 3 case SETKEYTEST:setkeytest( );break;
68 3 case SETREADERTEST:setreadertest( );break;
69 3 case SETINTEST:setintest( );break;
70 3 case SETMASTERPASS:setmasterpass( );break;
71 3 case SETTYPE:settype();break;
72 3 case SETCOMMTEST:setcommtest();break;
73 3 case SETPOWERINITPASS:setpowerinitpass();break;
74 3 default: break;
75 3
76 3 }
77 2 }
78 1 else if(idinflag)
79 1 {
80 2 if(keycounter<MAXUSERIDLEN)
81 2 {
82 3 keybuff[keycounter]=keynumber;
83 3 keycounter++;
84 3 }
85 2 }
86 1 else if(passinflag)
87 1 {
88 2 keybuff[keycounter]=keynumber;
89 2 keycounter++;
90 2 if(keycounter>=4)
91 2 {
92 3 passinflag=0;
93 3 keybuff[0]=(keybuff[0]<<4)+keybuff[1];
94 3 keybuff[1]=(keybuff[2]<<4)+keybuff[3];
95 3
96 3 if((keybuff[0]!=tempbuff[12])||(keybuff[1]!=tempbuff[13]))
97 3 accessevent(eventtype|MESSAGEPASSWORDERR);
98 3 else
99 3 //accessevent(EVENTKEYPAD|ACCESSGRANTED);
100 3 accessok();
101 3 }
102 2 }
103 1 else
104 1 {
105 2 if(!idinflag)
106 2 {
107 3 //duressflag=0;
108 3 idinflag=1;
109 3 keycounter=1;
110 3 keybuff[0]=keynumber;
111 3 }
112 2 }
113 1 //set_373(BELLRELAY); //start a 100ms's beep
114 1 }
115 /////////////////////////////////////////////////////////////////////////////////
116 void cancelfun()
C51 COMPILER V7.01 KEYPAD 03/08/2007 12:09:34 PAGE 3
117 {
118 1 if(idinflag||passinflag)
119 1 {
120 2 idinflag=0;
121 2 passinflag=0;
122 2 keycounter=0;
123 2 //displaymessage(LMMAIN,LINE1);
124 2 displayMain();
125 2 displaytime();
126 2 }
127 1 else if(setflag)
128 1 {
129 2
130 2 }
131 1 }
132 /////////////////////////////////////////////////////////////////////////////////
133 void getidfromkeybuff()
134 {
135 1 tempbuff[0]=0;
136 1 tempbuff[1]=0;
137 1 tempbuff[2]=0;
138 1 tempbuff[3]=0;
139 1 tempbuff[4]=0;
140 1 tempbuff[5]=0;
141 1 tempbuff[6]=0;
142 1 tempbuff[7]=0;
143 1
144 1 idata2idata(keybuff,tempbuff+8-keycounter,keycounter);
145 1
146 1 userid[0]=(tempbuff[0]<<4)+tempbuff[1];
147 1 userid[1]=(tempbuff[2]<<4)+tempbuff[3];
148 1 userid[2]=(tempbuff[4]<<4)+tempbuff[5];
149 1 userid[3]=(tempbuff[6]<<4)+tempbuff[7];
150 1
151 1 }
152 /////////////////////////////////////////////////////////////////////////////////
153 void checkthrough()
154 {
155 1 unsigned char secumode;
156 1 //struct userdata idata* puserdata;
157 1
158 1 secumode =readsecumode();
159 1 if(secumode==IDONLY)accessok();//accessevent(EVENTKEYPAD|ACCESSGRANTED);
160 1 else if(eventtype==EVENTREADER2)accessok();
161 1 else
162 1 {
163 2 if((tempbuff[15]&0xf)&&readfpmode())
164 2 {
165 3 if(captureandmatchuser())
166 3 {
167 4 if((secumode==IDFP)||(secumode==FPONLY))
168 4 {
169 5 accessok();
170 5 }
171 4 else
172 4 {
173 5 displaymessage(LMBLANK,LINE1);
174 5 displayuserid();
175 5 displaymessage(LMINPUTPASS,LINE2);
176 5 passinflag=1;
177 5 keycounter=0;
178 5 }
C51 COMPILER V7.01 KEYPAD 03/08/2007 12:09:34 PAGE 4
179 4 }
180 3 else
181 3 {
182 4 //access event fp error
183 4 accessevent(eventtype|MESSAGEFINGERERR);
184 4 }
185 3 }
186 2 else
187 2 {
188 3 displaymessage(LMBLANK,LINE1);
189 3 displayuserid();
190 3 displaymessage(LMINPUTPASS,LINE2);
191 3 passinflag=1;
192 3 keycounter=0;
193 3 }
194 2 }
195 1 }
196 ////////////////////////////////////////////////////////////////////////////
197 void enterfun()
198 {
199 1 //unsigned short userid;
200 1 unsigned short duresspw;
201 1 unsigned char tempdata;
202 1 unsigned short tempsn;
203 1
204 1
205 1 // beepon();
206 1 keyinputtimer=timerh; //fresh the keyinputtimer,
207 1
208 1 if(idinflag)
209 1 {
210 2
211 2 if(keycounter<MINUSERIDLEN)
212 2 {
213 3 idinflag=0;
214 3
215 3 if(keycounter==2)
216 3 {
217 4 if(readduress())
218 4 {
219 5 duresspw=readduresspw();
220 5 if((keybuff[0]==duresspw/10)&&(keybuff[1]==duresspw%10))duressflag=1;
221 5 }
222 4 }
223 3 keycounter=0;
224 3 }
225 2 else if(keycounter<=MAXUSERIDLEN)
226 2 {
227 3 //for(i=0;i<8;i++)tempbuff[i]=0;
228 3 eventtype=keytype<<5;
229 3 getidfromkeybuff();
230 3
231 3 if(checkismaster())
232 3 {
233 4 clearsetup();
234 4 masterpassdisp();
235 4 passinflag=1;
236 4 keycounter=0;
237 4 }
238 3
239 3 else
240 3 {
C51 COMPILER V7.01 KEYPAD 03/08/2007 12:09:34 PAGE 5
241 4 if(!getuserbyid())
242 4 accessevent(eventtype|MESSAGEDENIED);
243 4 else
244 4 {
245 5 tempdata=(tempbuff[15]>>4);
246 5 if(!tempdata)
247 5 {
248 6 accessevent(eventtype|MESSAGEDOORERR);
249 6 }
250 5 else if((tempdata==INONLY)&&(eventtype>=2))
251 5 {
252 6 accessevent(eventtype|MESSAGEDOORERR);
253 6 }
254 5 else if((tempdata==OUTONLY)&&(eventtype<2))
255 5 {
256 6 accessevent(eventtype|MESSAGEDOORERR);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -