📄 main.lst
字号:
256 1 TL1=0x00;
257 1 TR1=1;
258 1 ES=1;
259 1 EA=1;
260 1 }
261 void time2init(void)
262 {
263 1 T2MOD &= 0xFC; /* T2OE=0;定时器2输出不允许 */
264 1 T2MOD |= 0x01; /* DCEN=1;可以设置为向上/下计数:此程序中为向上达到0xff时溢出*/
265 1 EXF2=0; /* reset flag 定时器2外部标志位清除*/
266 1 TCLK=0;
267 1 RCLK=0; /* disable baud rate generator 不用于波特率发生器*/
268 1 EXEN2=0; /* ignore events on T2EX 视T2EX(P1.1)端信号无效*/
269 1 TH2=0xFC;//MSB_reload_value; /* Init msb_value 填入初始化值*/
270 1 TL2=0x66;//LSB_reload_value; /* Init lsb_value */
271 1 RCAP2H=0xFb;//MSB_reload_value; /* reload msb_value重载值 */
272 1 RCAP2L=0x66;//LSB_reload_value; /* reload lsb_value */
273 1 C_T2=0; /* timer mode 定时模式*/
274 1 CP_RL2=0; /* reload mode 重载模式*/
275 1 // EA=1; /* interupt enable 中断允许*/
276 1 ET2=1; /* enable timer2 interrupt 允许T2中断*/
277 1 TR2=1; /* timer2 run 开始计时*/
278 1 }
279
280 void select_500(unsigned char ss1)
281 {
282 1 unsigned char s1;
283 1 s1=ss1;
284 1 switch(s1)
285 1 {
C51 COMPILER V7.06 MAIN 11/07/2008 09:41:02 PAGE 10
286 2 case 0: //第一个500
287 2 A_500=0;
288 2 B_500=0;
289 2 C_500=0;
290 2 break;
291 2 case 1: //第二个500
292 2 A_500=1;
293 2 B_500=0;
294 2 C_500=0;
295 2 break;
296 2 case 2: //第三个500
297 2 A_500=0;
298 2 B_500=1;
299 2 C_500=0;
300 2 break;
301 2 case 3: //第四个500
302 2 A_500=1;
303 2 B_500=1;
304 2 C_500=0;
305 2 break;
306 2 case 4: //第五个500
307 2 A_500=0;
308 2 B_500=0;
309 2 C_500=1;
310 2 break;
311 2 case 5: //第六个500
312 2 A_500=1;
313 2 B_500=0;
314 2 C_500=1;
315 2 break;
316 2 case 6: //第七个500
317 2 A_500=0;
318 2 B_500=1;
319 2 C_500=1;
320 2 break;
321 2 case 7: //第八个500
322 2 A_500=1;
323 2 B_500=1;
324 2 C_500=1;
325 2 break;
326 2 default:
327 2 break;
328 2 }
329 1 }
330 unsigned char readcard(void)
331 {
332 1 uchar i,ss;
333 1 m_readcard();
334 1 TH1=0x20;
335 1 TL1=0xff;
336 1 TF1=0;
337 1 TR1=1;
338 1 ET1=0;
339 1 ES=0;
340 1 while(1)
341 1 {
342 2 if(M_FLAG==1)
343 2 {
344 3 // TMOD=0x12;
345 3 // TR1=0;
346 3 // TH1=TL1=0xfa;
347 3 // TH1=0x00;
C51 COMPILER V7.06 MAIN 11/07/2008 09:41:02 PAGE 11
348 3 // TL1=0xff;
349 3 // TR1=1;
350 3 // ET1=1; //开T1中断
351 3 M_FLAG=0;
352 3 for(i=0;i<4;i++)
353 3 snr[i]=M_IDATA[i+1];
354 3 ss=CMP_STRING(snr,snr4,4);
355 3 if(ss==0)return 0;
356 3 else return 1;
357 3 }
358 2 if(TF1==1)
359 2 {
360 3 return 1;
361 3 }
362 2 // if(error_flag==1)
363 2 // {
364 2 // return 1;
365 2 // }
366 2 }
367 1 }
368 unsigned char readcard1(void)
369 {
370 1 uchar i,ss;
371 1 // TMOD=0x12;
372 1 m_readcard();
373 1
374 1 while(1)
375 1 {
376 2 if(M_FLAG==1)
377 2 {
378 3
379 3 M_FLAG=0;
380 3 for(i=0;i<4;i++)
381 3 snr[i]=M_IDATA[i+1];
382 3 return 0;
383 3 }
384 2 if(error_flag==1)
385 2 {
386 3 return 1;
387 3 }
388 2 }
389 1 }
390
391 void m_readcard(void)
392 {
393 1 uchar i;
394 1 for(i=0;i<5;i++)
395 1 M_IDATA[i]=0;
396 1 error_flag=0;
397 1 TR0=0;
398 1 ET0=0;
399 1 // TCON=1;
400 1 IT0=1;
401 1 PX0=1;
402 1 M_STA=0;
403 1 TH0=0x16; //256uS定时参数,在11.0592MHz的情况下
404 1 // TH0=0xfe;
405 1 // TL0=0x2b;
406 1 // TH0=0x01;
407 1 M_FLAG=0;
408 1 SHORT_FLAG=0;
409 1 R_MRC=0;
C51 COMPILER V7.06 MAIN 11/07/2008 09:41:02 PAGE 12
410 1 EX0=1;
411 1 EA=1;
412 1 }
413 void led_light(unsigned char select)
414 {
415 1 unsigned int i;
416 1 switch(select)
417 1 {
418 2 case 0:
419 2 led_1=0;
420 2 for(i=0;i<30000;i++);
421 2 led_1=1;
422 2 break;
423 2 case 1:
424 2 led_2=0;
425 2 for(i=0;i<30000;i++);
426 2 led_2=1;
427 2 break;
428 2 case 2:
429 2 led_3=0;
430 2 for(i=0;i<30000;i++);
431 2 led_3=1;
432 2 break;
433 2 case 3:
434 2 led_4=0;
435 2 for(i=0;i<30000;i++);
436 2 led_4=1;
437 2 break;
438 2 case 4:
439 2 SECOND_3=0;
440 2 for(i=0;i<30000;i++);
441 2 SECOND_3=1;
442 2 break;
443 2 case 5:
444 2 SECOND_8=0;
445 2 for(i=0;i<30000;i++);
446 2 SECOND_8=1;
447 2 break;
448 2 case 6:
449 2 vvvv=0;
450 2 for(i=0;i<500;i++);
451 2 vvvv=1;
452 2 default:
453 2 break;
454 2 }
455 1 }
456 void timer2(void) interrupt 5 using 1
457 {
458 1 mscounter++;
459 1 mscounter1++;
460 1 if(st_1==1)
461 1 {
462 2 if(mscounter>2200)
463 2 {
464 3 off_led(outnum);
465 3 st_1=0;
466 3 }
467 2 }
468 1 if(st_cance==1)
469 1 {
470 2 if(mscounter1>2200)
471 2 {
C51 COMPILER V7.06 MAIN 11/07/2008 09:41:02 PAGE 13
472 3 SECOND_3=1;
473 3 SECOND_8=1;
474 3 st_cance=0;
475 3 }
476 2 }
477 1 TF2=0;
478 1 }
479 unsigned char CMP_STRING(unsigned char *pt1,
480 unsigned char *pt2,unsigned char len)
481 {
482 1 unsigned char ct; // fixed lenth 4.
483 1 for (ct=0;ct<len;ct++)
484 1 {
485 2 if (*pt1++ != *pt2++)
486 2 return 1;
487 2 }
488 1 return 0; // equal return 0.
489 1 }
490 /////////////////////////////////////////////////////////////////
491 void delay_10ms (uint _10ms)
492 {
493 1
494 1 ET2 = 0; // Disable timer2 interrupt
495 1 T2CON = 0x04; // 16-bit auto-reload, clear TF2, start timer
496 1 while (_10ms--)
497 1 {
498 2 while (!TF2)
499 2 {
500 3 // if (CmdValid || CmdReceived)
501 3 {
502 4 TR2 = FALSE;
503 4 TF2 = FALSE;
504 4 return;
505 4 }
506 3 }
507 2 TF2 = FALSE;
508 2 }
509 1 TR2 = FALSE;
510 1 }
511
512 /****************************************************************************
513 ****************************************************************************/
514 void isr_timer0(void) interrupt 1 using 1
515 {
516 1 // TH0=0xfe;
517 1 // TL0=0x2b;
518 1
519 1
520 1 if(M_FLAG==1)return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -