📄 main.lst
字号:
C51 COMPILER V7.20 MAIN 06/02/2005 11:16:07 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe main.C DB OE SMALL ROM(LARGE)
line level source
1 /*********************************************************************
2 MAIN function for vx1818 (Copyright(c) HuaLong Inc. 2005)
3 v1.0
4 Data:2005.03.04
5 by Ljj422
6 *********************************************************************/
7 #include <intrins.h>
8 #include <stdio.h>
9 #include <string.h>
10 #include "reg52.h"
11 #include "delay.h"
12 #include "MCUIO.H"
13 #include "EERAM.H"
14 #include "resetmcu.h"
15
16
17 void GetEmCardID(void);
18 void McuIni(void);
19 bit CardIDCheck(void);
20 void ioCheck(void);
21
22 unsigned char idata EmCardID[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
23 unsigned int idata TimerLoop=0,Timer0=0,LightTimer=0,WarningTimer=0,LEDTimer=0;
24 unsigned int LEDCount=0;
25 unsigned char code CardID1[8]={0xaa,0xff,0x05,0x00,0xfa,0xb8,0xfe,0xec};
26 unsigned char code CardID2[8]={0xaa,0xff,0x02,0x00,0x32,0xbd,0x9b,0x43};
27 unsigned char SystemState=0;
28 bit MCU_ACC = 0;
29 bit MCU_Brake =0;
30 bit MCU_Door =0;
31 bit MCU_Start =0;
32 bit IDCardPassFlag=0;
33 bit LEDOpenFlag=0;
34 //----------------------
35 bit Start30sFlag=0;
36 #define CarPowerClose 0
37 #define CarCardCheck 1
38 #define CarPowerOpen 2
39 #define CarDoorOpen 3
40 #define CarWarning 4
41 #define CarStart 5
42 //----------------------------
43 bit GetACardIDFlag=0;
44 bit IniCarWarning=0;
45
46
47
48
49 /*************************************************************************************/
50 void main(void)using 0
51 {
52 1 delay200ms();
53 1 P0=0x00;
54 1 JStart_Clr;
55 1 delay20ms();
C51 COMPILER V7.20 MAIN 06/02/2005 11:16:07 PAGE 2
56 1 McuIni();
57 1 LEDOpenFlag=1;
58 1 LEDCount=1000; // 1s
59 1 while(1){
60 2 ioCheck();
61 2 //car no opration mode
62 2 if( (MCU_ACC==0) && (MCU_Start==0) ){
63 3 //input
64 3 if(Start30sFlag==0){
65 4 WarningTimer=30000;
66 4 Start30sFlag=1;
67 4 }//30s
68 3 else if(WarningTimer==0){
69 4 if(Start30sFlag==1){
70 5 SystemState=CarPowerClose;
71 5 Start30sFlag=0;
72 5 IDCardPassFlag=0;
73 5 LEDCount=1000;
74 5 ResetMcu();
75 5 }
76 4 else {;}
77 4 }
78 3 }
79 2 else if(Start30sFlag==1)Start30sFlag=0;
80 2 //Car Card ID Check
81 2 if( (SystemState!=CarPowerOpen) && (SystemState!=CarStart) && (!MCU_Brake) ){
82 3 if(LEDCount==1000){
83 4 LEDCount=200;
84 4 SystemState=CarCardCheck;
85 4 }
86 3 }
87 2 if( ( GetACardIDFlag) && (SystemState==CarCardCheck) ){
88 3 GetACardIDFlag=0;
89 3 if( (CardIDCheck()) && (SystemState!=CarPowerOpen) && (SystemState!=CarStart) ){
90 4 LEDCount=1000;
91 4 LEDOpenFlag=0;
92 4 JCarOil=1;
93 4 delay20ms();
94 4 JStart_Set;
95 4 delay20ms();
96 4 JSpeaker=0;delay20ms();
97 4 IDCardPassFlag=1;
98 4 JLED=0;delay20ms();
99 4
100 4 }
101 3 }
102 2 //Car Power Open
103 2 if( MCU_ACC ){
104 3 if(IDCardPassFlag)SystemState=CarPowerOpen;
105 3 else if(SystemState!=CarWarning)IniCarWarning=1;
106 3 }
107 2 //Car Start
108 2 if( MCU_Start ){
109 3 if(IDCardPassFlag)SystemState=CarStart;
110 3 else if(SystemState!=CarWarning)IniCarWarning=1;
111 3 }
112 2 //Car Warning
113 2 if(IniCarWarning){
114 3 SystemState=CarWarning;
115 3 IniCarWarning=0;
116 3 delay1s();
117 3 JSpeaker=1;
C51 COMPILER V7.20 MAIN 06/02/2005 11:16:07 PAGE 3
118 3 delay20ms();
119 3 JCarOil=0;
120 3 delay20ms();
121 3 JStart_Clr;
122 3 delay20ms();
123 3 }
124 2 //Car Door Open
125 2 if( (MCU_Door==0) && (MCU_ACC==1) ){
126 3 if(LightTimer==0){
127 4 LightTimer=500;
128 4 JTurnLight=~JTurnLight;
129 4 delay20ms();
130 4 }
131 3 }
132 2 else JTurnLight=0;
133 2 }
134 1 }
135
136
137
138
139
140 void Timer0_1ms(void) interrupt 1 using 1
141 {
142 1
143 1 //0.270ms
144 1 if(TimerLoop<3)TimerLoop++;
145 1 else{
146 2 TimerLoop=0;
147 2 if(WarningTimer!=0)WarningTimer--;
148 2 if(Timer0!=0)Timer0--;
149 2 if(LightTimer!=0)LightTimer--;
150 2 //------LED CONTROL
151 2 if(LEDTimer!=0)LEDTimer--;
152 2 else if(LEDOpenFlag){
153 3 LEDTimer=LEDCount;
154 3 if(P0&0x10)P0 &=0xef;
155 3 else P0 |=0x10;
156 3 }
157 2 else P0 &=0xef;
158 2 }
159 1 }
160
161
162
163
164 void McuIni(void){
165 1
166 1 // set timer 0
167 1 TMOD &= 0xf0;
168 1 TMOD |= 0x02;
169 1 TL0 = -250;
170 1 TH0 = -250;
171 1 TCON &= 0xcf;
172 1 TCON |= 0x10;
173 1
174 1 // set timer 1
175 1 TMOD &= 0x0f;
176 1 TMOD |= 0x20;
177 1 TL1 = 0xfa; //0xf3;
178 1 TH1 = 0xfa; //0xf3;
179 1 TCON &= 0x3f;
C51 COMPILER V7.20 MAIN 06/02/2005 11:16:07 PAGE 4
180 1 TCON |= 0x40;
181 1
182 1 SCON = 0x50;
183 1 PCON |= 0x80;
184 1 TR1=1;
185 1 // set interrupt
186 1 PT0=1;
187 1 EA=1;
188 1 ES=1;
189 1 ET0=1;
190 1 REN=1;
191 1
192 1 // P4CONA=0x00;
193 1 //P4CONB=0x00;
194 1 //IO INI
195 1 P0=0;
196 1 P1=0xFF;
197 1 P2=0xff;
198 1 P3=0xff;
199 1 JStart_Clr;
200 1
201 1 }
202
203
204 void GetEmCardID(void) interrupt 4 using 2{
205 1 unsigned char temp;
206 1
207 1 //------first byte
208 1 if(RI==0)return;
209 1 RI=0;
210 1 if(SBUF!=0xaa){TI=0;return;}
211 1 EmCardID[0]=SBUF;
212 1
213 1 //------second byte
214 1 Timer0=5; //wait
215 1 while(RI==0){
216 2 if(Timer0==0)return;
217 2 }
218 1 if(SBUF!=0xff)return;
219 1 EmCardID[1]=SBUF;
220 1 //------ID NO.1 byte
221 1 Timer0=5; //wait
222 1 RI=0;
223 1 while(RI==0){
224 2 if(Timer0==0)return;
225 2 }
226 1 EmCardID[2]=SBUF;
227 1 //------ID NO.2 byte
228 1 Timer0=5; //wait
229 1 RI=0;
230 1 while(RI==0){
231 2 if(Timer0==0)return;
232 2 }
233 1 EmCardID[3]=SBUF;
234 1 //------ID NO.3 byte
235 1 Timer0=5; //wait
236 1 RI=0;
237 1 while(RI==0){
238 2 if(Timer0==0)return;
239 2 }
240 1 EmCardID[4]=SBUF;
241 1 //------ID NO.4 byte
C51 COMPILER V7.20 MAIN 06/02/2005 11:16:07 PAGE 5
242 1 Timer0=5; //wait
243 1 RI=0;
244 1 while(RI==0){
245 2 if(Timer0==0)return;
246 2 }
247 1 EmCardID[5]=SBUF;
248 1 //------ID NO.5 byte
249 1 Timer0=5; //wait
250 1 RI=0;
251 1 while(RI==0){
252 2 if(Timer0==0)return;
253 2 }
254 1 EmCardID[6]=SBUF;
255 1 //------CHECK SUM
256 1 Timer0=5; //wait
257 1 RI=0;
258 1 while(RI==0){
259 2 if(Timer0==0)return;
260 2 }
261 1 EmCardID[7]=SBUF;
262 1
263 1
264 1 //-------XOR CHECK----
265 1 temp=EmCardID[0]^
266 1 EmCardID[1]^
267 1 EmCardID[2]^
268 1 EmCardID[3]^
269 1 EmCardID[4]^
270 1 EmCardID[5]^
271 1 EmCardID[6];
272 1 if(temp!=EmCardID[7])return;
273 1 else GetACardIDFlag=1;
274 1 }
275
276
277 void ioCheck(void){
278 1 unsigned char temp;
279 1
280 1 temp=P2 & 0x1E;
281 1 delay1ms();delay1ms();delay1ms();delay1ms();delay1ms();
282 1 if(temp== (P2 & 0x1E)){
283 2 MCU_ACC=~ioMCU_ACC;
284 2 MCU_Brake=~ioMCU_Brake;
285 2 MCU_Door=~ioMCU_Door;
286 2 MCU_Start=~ioMCU_Start;
287 2 }
288 1 }
289
290
291 bit CardIDCheck(void){
292 1 if( (EmCardID[0]==CardID1[0]) || (EmCardID[0]==CardID2[0]) ){
293 2 if( (EmCardID[1]==CardID1[1]) || (EmCardID[1]==CardID2[1]) ){
294 3 if( (EmCardID[2]==CardID1[2]) || (EmCardID[2]==CardID2[2]) ){
295 4 if( (EmCardID[3]==CardID1[3]) || (EmCardID[3]==CardID2[3]) ){
296 5 if( (EmCardID[4]==CardID1[4]) || (EmCardID[4]==CardID2[4]) ){
297 6 if( (EmCardID[5]==CardID1[5]) || (EmCardID[5]==CardID2[5]) ){
298 7 if( (EmCardID[6]==CardID1[6]) || (EmCardID[6]==CardID2[6]) ){
299 8 if( (EmCardID[7]==CardID1[7]) || (EmCardID[7]==CardID2[7]) ){
300 9 return 1;
301 9 }
302 8 }
303 7 }
C51 COMPILER V7.20 MAIN 06/02/2005 11:16:07 PAGE 6
304 6 }
305 5 }
306 4 }
307 3 }
308 2 }
309 1 return 0;
310 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 940 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 1
IDATA SIZE = 18 ----
BIT SIZE = 9 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -