📄 main.lst
字号:
176 3 {
177 4 EEWrite(addr_card, RxBuf[13-m]); //将12字节卡号参数写到FLASH中
178 4 }
C51 COMPILER V7.02a MAIN 07/10/2006 12:05:33 PAGE 4
179 3 }
180 2 EEWrite(config_addr, RxBuf[13]);//将配置参数写到FLASH中
181 2 EEWrite((config_addr+1), RxBuf[14]);//将时间参数写到FLASH中
182 2 }
183 1 //--------------------------------------------//
184 1 //从FLASH中读出12字节的卡号以及配置参数
185 1 for(m=1,addr_card=Addr_Cardno;m<13;m++,addr_card++)
186 1 {
187 2 TxBuf[m]=EERead(addr_card); //读取卡号
188 2 }
189 1 tconf.buf[13]=EERead(config_addr); //读取发送配置参数
190 1 rconf.buf[13]=tconf.buf[13]; //读取接收配置参数
191 1 TIME=EERead(config_addr+1); //读取时间参数
192 1 }
193
194 /*************************************************
195 Function: Config
196 Description: 参数配置
197 1,接收配置读卡器发送过来的卡号,收发功率,收发速率
198 2,返回上述参数给配置读卡器
199 Calls: void Init(void)
200 void Init_Receiver(void)
201 void Receiver(unsigned char *rxbuf)
202 void Transmitter(unsigned char *txbuf)
203 Called By: void main(void)
204 Input:
205 Output:
206 Return:
207 Others:
208 *************************************************/
209 unsigned char Config(void)
210 {
211 1 unsigned char s,Rnum,set_card_sign;
212 1 Init();
213 1 Init_Receiver(); //接收初始化
214 1 set_card_sign=0;
215 1 Rnum=0;
216 1 do{
217 2 Rnum++;
218 2 #ifdef DEBUG
LED3=0;
#endif
221 2 //Init_Receiver(); //接收初始化
222 2 for(s=0;s<RNUM;s++)
223 2 {
224 3 RxBuf[s]=0;
225 3 }
226 2 Receiver(RxBuf);
227 2 //判断是否是设置卡号命令
228 2 if((RxBuf[0]==SetCardNo)&&((RxBuf[1]^RxBuf[2]^RxBuf[3]^RxBuf[4]^RxBuf[5]^RxBuf[6]^RxBuf[7]
229 2 ^RxBuf[8]^RxBuf[9]^RxBuf[10]^RxBuf[11]^RxBuf[12]^RxBuf[13]^RxBuf[14])==RxBuf[15]))
230 2 {
231 3 Rnum=255;
232 3 set_card_sign=1;
233 3 /*
234 3 #ifdef DEBUG
235 3 LED3=1;
236 3 #endif
237 3 */
238 3 }
239 2 Delayms( Setdelaytime); //延时1ms
240 2 /*
C51 COMPILER V7.02a MAIN 07/10/2006 12:05:33 PAGE 5
241 2 #ifdef DEBUG
242 2 LED4=0;
243 2 #endif
244 2 */
245 2 }while(Rnum<250); //连续接受5秒数据
246 1 /*
247 1 #ifdef DEBUG
248 1 LED4=1;
249 1 #endif
250 1 */
251 1 //----------------------------------------------
252 1 //将接收到的卡号和参数返回给设置读卡器
253 1 //----------------------------------------------
254 1 if(set_card_sign)
255 1 { TxBuf[0]=TransmitCardNo;
256 2 TxBuf[1]=RxBuf[1];
257 2 TxBuf[2]=RxBuf[2];
258 2 TxBuf[3]=RxBuf[3];
259 2 TxBuf[4]=RxBuf[4];
260 2 TxBuf[5]=RxBuf[5];
261 2 TxBuf[6]=RxBuf[6];
262 2 TxBuf[7]=RxBuf[7];
263 2 TxBuf[8]=RxBuf[8];
264 2 TxBuf[9]=RxBuf[9];
265 2 TxBuf[10]=RxBuf[10];
266 2 TxBuf[11]=RxBuf[11];
267 2 TxBuf[12]=RxBuf[12];
268 2 TxBuf[13]=RxBuf[15];
269 2 Delayms(5);
270 2 Rnum=0;
271 2 do{
272 3 Rnum++;
273 3 Transmitter(&TxBuf[0]);//发送接收到的数据
274 3 /*
275 3 #ifdef DEBUG
276 3 LED3=0;
277 3 Delayms(5);
278 3 LED3=1;
279 3 #endif
280 3 */
281 3 Delay100us(RCdelaytime);
282 3 }while(Rnum<5); //连续发送5次数据
283 2 }
284 1 return set_card_sign;
285 1 }
286
287 /*************************************************
288 Function: Init
289 Description: CPU的初始化
290 1,I/O口的方向初始化
291 2,I/O口的输出初始化
292 3,SPI初始化
293 3,串口初始化
294 4,发送接收缓冲区初始化
295 Calls:
296 Called By: void main(void);
297 Input:
298 Output:
299 Return:
300 Others:
301 *************************************************/
302 void Init(void)
C51 COMPILER V7.02a MAIN 07/10/2006 12:05:33 PAGE 6
303 {
304 1
305 1 // Port ini
306 1
307 1 P0_ALT = 0x06; // Select alternate functions on pins P0.1 and P0.2, TXD RXD
308 1 // P0_DIR = 0x09; // P0.0, P0.3 is input(S1, S2), the rest output
309 1 // P0 = 0xF0; // P0.7-P0.4 = 1 for OFF LED1-LED4
310 1 P1_DIR = 0x03; // P0.0, P0.3 is input(S3, S4),
311 1
312 1 // LED1=1;
313 1 // LED2=1;
314 1 // LED3=1;
315 1 // LED4=1;
316 1
317 1 PWR_UP = 1; // Turn on Radio
318 1 Delay100us(30); // Wait > 3ms
319 1 SPICLK = 0; // Max SPI clock (XTAL/8)
320 1 SPI_CTRL = 0x02; // Connect internal SPI controller to Radio
321 1
322 1 // serial communication ini
323 1 TH1 = 230; // 9600@16MHz (when T1M=1 and SMOD=1)
324 1 CKCON |= 0x10; // T1M=1 (/4 timer clock)
325 1 PCON = 0x80; // SMOD=1 (double baud rate)
326 1 SCON = 0x52; // Serial mode1, enable receiver
327 1 TMOD = 0x20; // Timer1 8bit auto reload
328 1 TCON = 0x40; // Start timer1
329 1 /*
330 1 //定时器0初始化
331 1 TH0 = 2; //192us
332 1 TL0 = TH0;
333 1 TR0 = 1; //允许定时器0计数
334 1 EA=1; //打开总中断控制位
335 1 ET0=0; //关闭定时中断
336 1
337 1 TRCOUNT=0;
338 1 RxBuf[0]=0;
339 1 RxBuf[1]=0;
340 1 */
341 1 }
342
343
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 643 ----
CONSTANT SIZE = 106 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 19
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -