📄 readermodule.lst
字号:
C51 COMPILER V7.06 READERMODULE 09/05/2006 01:45:27 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE READERMODULE
OBJECT MODULE PLACED IN readermodule.OBJ
COMPILER INVOKED BY: D:\work\development tool\C51\BIN\C51.EXE readermodule.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1
-
-
2 /*****************************************************************************************************
3 This is the source code for keypad reader
4
5 ******************************************************************************************************/
-
-
-
6
-
-
7 #include <REG52.H>
8 #include <stdio.h> /* prototype declarations for I/O functions */
9
10 sbit P00 = P0^0;
11 sbit P01 = P0^1;
12 sbit P02 = P0^2;
13 sbit P03 = P0^3;
14 sbit P04 = P0^4;
15 sbit P05 = P0^5;
16 sbit P06 = P0^6;
17 sbit P07 = P0^7;
18 sbit PUSHBUTTON = P2^0;//P1^0;
19 sbit BUZZER = P1^0;//P1^1;
20 sbit LED0 = P1^2;
21 sbit LED_GREEN = P1^4;//P1^3;
22 //sbit LED_RED = P1^2;//P1^4;
23 sbit DOORSENSOR = P2^1;//P2^0;
24 sbit TAMPER = P2^4;//P2^1;
25 sbit DOORRELAY = P2^2;
26 sbit ALARMRELAY = P2^3;
27 sbit LED3 = P2^7;
-
28 sbit EXT = P3^2;
29 sbit SDA = P3^7;
30 sbit SCL = P3^6;
31 sbit SHD = P3^3;//P3^0;
32
33 #define RELAY_ON 0
34 #define RELAY_OFF 1
35 #define LED_ON 0
36 #define LED_OFF 1
37 #define SLEEP 1
38 #define WAKEUP 0
39 #define BUZZ_CNT 50
40 #define ON 1
41 #define OFF 0
42 #define HIGH 1
43 #define LOW 0
44 #define MAXCARDCHAR 10
45 #define CLOCKINTERVAL 25
46 #define CARDTIMELIMIT 20//22 kk changed 14/4/06 sort of too insensitive
47 #define MAXKEYCHAR 10
C51 COMPILER V7.06 READERMODULE 09/05/2006 01:45:27 PAGE 2
48 #define O_CARDnPIN 0x01 // Normal Card Mode 0x01 = 0
49 #define O_AUTOPIN 0x02 // 1 -> On
50 #define O_LOCKOUT 0x04 // 1 -> LockOut
51 #define O_SECURITYOFF 0x08 // 1 -> off
52 #define O_ARM 0x10 // 1 -> Arm
53 #define O_CARD 0x20 //CARD
54 #define O_CARDorPIN 0x22
55 //#define E_RELEASE 0x01
56 //#define E_FACCODE 0x02
57 //#define E_PIN 0x04
58 #define MAX_LOCK_RELEASE_TIME 0x60 // second
59 #define MAX_DOOR_OPEN_TIME 0x99 // second
60 #define MAX_SOUNDER_TIME 0x30 // minute
61 #define high_byte(x) ((x & 0xFF00) >> 8)// Get high byte macro
62 #define MAX_PINNO 10
63 #define MAX_CARD_ADD 4028 //5027-jah
64 #define EEPROM_LAST_BYTE 9//4032
65 #define TIMER0CNT 0x56;
66 #define START_CARD_ADD 32
67 //#define TESTING
68
69 void put_c(unsigned char buf);
70 void beep (unsigned char duration);
71 void longtos (char* ddata, unsigned long *tno);
72 void beepbeep (unsigned char count);
73 void ClearBuzz(void);
74 void process_button(void);
75 void process_led(void);
76 void process_buzzer(void);
77 void initmcu(void);
78 void ResetUserEvent (void);
79 void I2C_Start(void);
80 void I2C_Stop(void);
81 char I2C_Write(unsigned char byte);
82 unsigned char I2C_Read(void);
83 //void ACK(void);
84 void NAK(void);
85 char write_eeprom_bytes(unsigned int add, unsigned char dataout);
86 unsigned char get_eeprom_bytes (unsigned int add);
87 //char write_block(unsigned char page, unsigned char *dataout, char count);
88 unsigned char get_eeprom_bytes1 (void);
89 void InitDB(void);
90 void WriteSysDB(void);
91 void GetSysDB (void);
92 void ClearUserDB(void);
93 unsigned char InstallThisCard(void);
94 unsigned char DeleteThisCard (void);
95 unsigned char FindThisCard(void);
96 void Process_Input(void);
97 void flush_keypad(void);
98 void turn_relay_on (void);
99 void ReloadKeyTimeOut (void);
100 char write_block(unsigned int startadd, unsigned char *dataout, char count); //12/15/2005 9:24PM
101 void RestoreCardPos(void);
102 //void ProcessUserEvent(void);
103 //void checkcollision(void);
104
105
106 //variable for process_buzzer
107 #define BUZZCOUNTER 90 //10
108 idata char buzzer_type=0;
109 idata unsigned char buzz_duration;
C51 COMPILER V7.06 READERMODULE 09/05/2006 01:45:27 PAGE 3
110 idata unsigned int buzz_counter;
111
112 //variables for card
113 idata unsigned int cardpos=0;
114 unsigned int cardpos_last; //12/18/2005 9:43PM
115 idata unsigned char lockoutcount=0;
116 //idata unsigned char comsinbuffer;
117 idata unsigned char ledcount0=0;
118 char ColdStartCheck=1,tempi;
119 unsigned char door_relay_duration;
120 idata unsigned char dooropentime;
121 //unsigned char EmptyFlag
122
123 /*==============================================================================
124 KEYPAD READER REALATED VARIABLES
125
126 ================================================================================*/
127 struct TOperationFlag
128 {
129 unsigned gnewcard : 1;
130 unsigned WaitingKey : 1;
131 unsigned DoorOpen : 1;
132 unsigned doorwasopened : 1;
133 unsigned char EmptySign; //12/19/2005 10:43PM
134 } ;
135 idata struct TOperationFlag Flags;
136
137 struct DHeader
138 {
139 unsigned char OperationMode;
140 unsigned char MasterPin [3];
141 unsigned char AutoPin [MAX_PINNO][2];
142 unsigned char DoorOpenTime;
143 unsigned char LockReleaseTime;
144
145 };
146 idata struct DHeader SystemDatabase;
147 typedef struct
148 {
149 char CardNo [3];
150 char Lockcount;
151 }TCardRec;
152
153 TCardRec gcrec;
154
155 unsigned char ch=0,bit_keyhold=0,key_count,button_state=1,KeyChar [MAXKEYCHAR];
156 unsigned int keytimeout;
157 unsigned char idata secdly;
158 /*********************************************************************************
159 MENU RELATED VARIABLES
160 *********************************************************************************/
161 unsigned char MainMenuItem;
162 unsigned char SubMenuItem;
163
164 /*=============================================================================
165 CARD RELATED VARIABLES
166 =============================================================================*/
167 unsigned int clock_isr_counter1 = 0,rdr=0;
168 unsigned char card_exist=0, cardbitBufer[10],previousstate,anticollision=0;
169 unsigned char cardtime =18,bitcount=0,cbitcount=0,nibin=0,parity=0,bytecount=0;
170 unsigned char cardbytein[MAXCARDCHAR+2],CardDataIn=0,startpattern=0,columnparity=0;
171 //unsigned int cpin; //12/4/2005 10:34AM
C51 COMPILER V7.06 READERMODULE 09/05/2006 01:45:27 PAGE 4
172 //unsigned int dpin; //12/4/2005 10:34AM
173 /**************************************************************************************
174 MEMORY RELATED VARIABLES
175 **************************************************************************************/
176 char idata temp_masterpin1[3],temp_masterpin2[3],masterpinCount=0;
177 /*
178 data signal 75clock
179 <------->;If data signal interval exceeded 70clocks then refer to previousstate
180 ___ ___ ___ ______ ______
181 | | | | | | | |
182 |___| |___| |___| |______|
183 <---> <---------->
184 32clock 96clock
185 <----->
186 <------> 50clock ; for every 50clock after falling interval of data signal, record the previousst
-ate
187 64clock
188 Remarks:Data read in upon falling edge detection
189 */
190
191 void timer0_ISR (void) interrupt 1 //interrupt every 200us -- 25clock cycles
192 {
193 1 if(++clock_isr_counter1 == 3)//(50/CLOCKINTERVAL) ) //equivalent to 2
194 1 previousstate=EXT;
195 1
196 1 else if(clock_isr_counter1==250)
197 1 {
198 2 clock_isr_counter1=0;
199 2 TR0=0;
200 2 }
201 1 TH0 = 0xff;//(65536 - 146) / 256;
202 1 TL0 = TIMER0CNT;//-123;//(65536 - 146) % 256;
203 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -