📄 lesson10.lst
字号:
356 4 beep = 0;//提示键盘按下
357 4 delay(50,100);
358 4 beep = 1;
359 4 uc_device_addr = 0xA0;//0xA0=1010 0000B, 1010is the device number,000 is the A2A1A0 hard wired, 0 wri
-te.
360 4 for(j = 1;j < 7;j++)
361 4 {
362 5 uc_device_sub_addr = 0x00 + ((j) << 3);//EEPROM 首地址
363 5 IRcvStr(uc_device_addr,uc_device_sub_addr,g_uc_data_receive,3);//以页方式读取//读出的数据保存在数组g
-_uc_data_receive中
364 5 temp += g_uc_data_receive[2];
365 5 }
366 4 g_uc_hr_cnt = 0xFF;//不显示
367 4 g_uc_min_cnt = temp >> 8;//显示数据的高8位
368 4 g_uc_sec_cnt = temp & 0x00FF;//显示数据的低8位
369 4 if((g_uc_sec_cnt&0x0F) > 9)//总和的结果应该以10进制的形式显示给用户
370 4 {
371 5 temp = (g_uc_sec_cnt&0xF0) + 1;
372 5 g_uc_sec_cnt = (temp << 4) + ((g_uc_sec_cnt&0x0F) - 10);
373 5 }
374 4 display_led(g_uc_hr_cnt ,g_uc_min_cnt ,g_uc_sec_cnt);
375 4 break;
376 4 case 0xA4://模拟断电保存//断电时保存地址:0x40
377 4 ET0 = 0;//禁止T0
378 4 ET1 = 0;
379 4 TR0 = 0;//停止T0
380 4 TR1 = 0;
381 4 EX0 = 0;//禁止外部中断0
382 4
383 4 beep = 0;//提示键盘按下
384 4 delay(50,100);
385 4 beep = 1;
386 4 uc_device_addr = 0xA0;//0xA0=1010 0000B, 1010is the device number,000 is the A2A1A0 hard wired, 0 wri
-te.
387 4 uc_device_sub_addr = 0x40;//断电保存数据的EEPROM地址
388 4 g_uc_data_send[0] = g_st_current_time.min;//断电时间
389 4 g_uc_data_send[1] = g_st_current_time.sec;
390 4 g_uc_data_send[2] = g_uc_log_number;//断电时刻的记录
391 4 ISendStr(uc_device_addr,uc_device_sub_addr,g_uc_data_send,3);//以页方式读取//读出的数据保存在数组g_uc
-_data_receive中
392 4 break;
393 4 case 0xA5:
394 4 ET0 = 0;//禁止T0
395 4 ET1 = 0;
396 4 TR0 = 0;//停止T0
397 4 TR1 = 0;
398 4 EX0 = 0;//禁止外部中断0
399 4 time1_serial_init();
400 4 for(j = 0;j < 7;j++)
401 4 {
402 5 uc_device_addr = 0xA0;//0xA0=1010 0000B, 1010is the device number,000 is the A2A1A0 hard wired, 0 wr
-ite.
403 5 uc_device_sub_addr = 0x00 + ((g_uc_recv_serial_cnt) << 3);
404 5 IRcvStr(uc_device_addr,uc_device_sub_addr,g_uc_data_receive,3);
405 5 memcpy(uc_temp_receive[j],g_uc_data_receive,3);
406 5 }
407 4 TR1 = 1;//start the timer1, not enable T1 interrupt
408 4 ES = 1;//enable serial interrupt
409 4 g_uc_sec_cnt = 0xAA;
410 4 g_uc_min_cnt = 0xAA;
C51 COMPILER V7.50 LESSON10 06/19/2006 21:28:10 PAGE 8
411 4 g_uc_hr_cnt = 0xA2;
412 4 display_led(g_uc_hr_cnt,g_uc_min_cnt,g_uc_sec_cnt);//display "1",ready for receive the serial data
413 4 while(g_uc_recv_serial_cnt < 7)//waiting for 11 times serial interrupt
414 4 {
415 5 _nop_();
416 5 }
417 4 g_uc_recv_serial_cnt = 0;
418 4 ES = 0;//mask the serial interrupt
419 4 EA = 0;//mask all interrupt
420 4 g_uc_sec_cnt = 0xA3;
421 4 g_uc_min_cnt = 0xAA;
422 4 g_uc_hr_cnt = 0xAA;
423 4 display_led(g_uc_hr_cnt,g_uc_min_cnt,g_uc_sec_cnt);//display "1",ready for receive the serial data
424 4
425 4 beep = 0;//提示键盘按下
426 4 delay(50,100);
427 4 beep = 1;
428 4 /*for(j = 1;j < 7;j++)//send data to IBM
429 4 {
430 4 //uc_device_addr = 0xA0;//0xA0=1010 0000B, 1010is the device number,000 is the A2A1A0 hard wired, 0
-write.
431 4 //uc_device_sub_addr = 0x00 + ((j) << 3);
432 4 //IRcvStr(uc_device_addr,uc_device_sub_addr,g_uc_data_receive,3);
433 4 //SBUF = g_uc_data_receive[0];
434 4 SBUF = 0x30;
435 4 while(TI == 0)
436 4 {
437 4 delay(3,255);
438 4 }
439 4 TI = 0;
440 4 SBUF = 0x31;
441 4 while(TI == 0)
442 4 {
443 4 delay(3,255);
444 4 }
445 4 TI = 0;
446 4 SBUF = 0x32;
447 4 while(TI == 0)
448 4 {
449 4 delay(3,255);
450 4 }
451 4 TI = 0;
452 4 beep = 0;
453 4 delay(50,100);
454 4 beep = 1;
455 4 }*/
456 4 /*SBUF = 0x21;//发送回车,提示PC数据发送完毕
457 4 while(TI == 0)
458 4 {
459 4 delay(3,255);
460 4 }
461 4 TI = 0;*/
462 4
463 4 beep = 0;//提示键盘按下
464 4 delay(50,100);
465 4 beep = 1;
466 4 break;
467 4 case 0xB0://显示当前记录
468 4 TR0 = 0;//暂停T0
469 4 beep = 0;//提示键盘按下
470 4 delay(50,100);
471 4 beep = 1;
C51 COMPILER V7.50 LESSON10 06/19/2006 21:28:10 PAGE 9
472 4 g_uc_hr_cnt = 0xFF;
473 4 g_uc_min_cnt = 0xFF;
474 4 g_uc_sec_cnt = g_uc_log_number;
475 4 display_led(g_uc_hr_cnt ,g_uc_min_cnt ,g_uc_sec_cnt);
476 4
477 4 delay(255,255);
478 4 delay(255,255);
479 4 delay(255,255);
480 4 g_st_current_time.sec += 2;//给时钟进行时间补偿2s
481 4 TR0 = 1;//重新启动T0
482 4 break;
483 4 case 0xB1://第1段存放密码,从第2段开始存放采集的记录值
484 4 uc_device_addr = 0xA0;//0xA0=1010 0000B, 1010is the device number,000 is the A2A1A0 hard wired, 0 wri
-te.
485 4 uc_device_sub_addr = 0x00 + ((1) << 3);//EEPROM 首地址
486 4 IRcvStr(uc_device_addr,uc_device_sub_addr,g_uc_data_receive,3);//以页方式读取//读出的数据保存在数组g_
-uc_data_receive中
487 4 g_uc_hr_cnt = g_uc_data_receive[0];
488 4 g_uc_min_cnt = g_uc_data_receive[1];
489 4 g_uc_sec_cnt = g_uc_data_receive[2];
490 4 display_led(g_uc_hr_cnt ,g_uc_min_cnt ,g_uc_sec_cnt);
491 4 beep = 0;//连续发声
492 4 delay(50,100);
493 4 beep = 1;
494 4 break;
495 4 case 0xB2:
496 4 uc_device_addr = 0xA0;//0xA0=1010 0000B, 1010is the device number,000 is the A2A1A0 hard wired, 0 wri
-te.
497 4 uc_device_sub_addr = 0x00 + ((2) << 3);//EEPROM 首地址
498 4 IRcvStr(uc_device_addr,uc_device_sub_addr,g_uc_data_receive,3);//以页方式读取//读出的数据保存在数组g_
-uc_data_receive中
499 4 g_uc_hr_cnt = g_uc_data_receive[0];
500 4 g_uc_min_cnt = g_uc_data_receive[1];
501 4 g_uc_sec_cnt = g_uc_data_receive[2];
502 4 display_led(g_uc_hr_cnt ,g_uc_min_cnt ,g_uc_sec_cnt);
503 4 beep = 0;//连续发声
504 4 delay(50,100);
505 4 beep = 1;
506 4 break;
507 4 case 0xB3:
508 4 uc_device_addr = 0xA0;//0xA0=1010 0000B, 1010is the device number,000 is the A2A1A0 hard wired, 0 wri
-te.
509 4 uc_device_sub_addr = 0x00 + ((3) << 3);//EEPROM 首地址
510 4 IRcvStr(uc_device_addr,uc_device_sub_addr,g_uc_data_receive,3);//以页方式读取//读出的数据保存在数组g_
-uc_data_receive中
511 4 g_uc_hr_cnt = g_uc_data_receive[0];
512 4 g_uc_min_cnt = g_uc_data_receive[1];
513 4 g_uc_sec_cnt = g_uc_data_receive[2];
514 4 display_led(g_uc_hr_cnt ,g_uc_min_cnt ,g_uc_sec_cnt);
515 4 beep = 0;//连续发声
516 4 delay(50,100);
517 4 beep = 1;
518 4 break;
519 4 case 0xB4:
520 4 uc_device_addr = 0xA0;//0xA0=1010 0000B, 1010is the device number,000 is the A2A1A0 hard wired, 0 wri
-te.
521 4 uc_device_sub_addr = 0x00 + ((4) << 3);//EEPROM 首地址
522 4 IRcvStr(uc_device_addr,uc_device_sub_addr,g_uc_data_receive,3);//以页方式读取//读出的数据保存在数组g_
-uc_data_receive中
523 4 g_uc_hr_cnt = g_uc_data_receive[0];
524 4 g_uc_min_cnt = g_uc_data_receive[1];
525 4 g_uc_sec_cnt = g_uc_data_receive[2];
C51 COMPILER V7.50 LESSON10 06/19/2006 21:28:10 PAGE 10
526 4 display_led(g_uc_hr_cnt ,g_uc_min_cnt ,g_uc_sec_cnt);
527 4 beep = 0;//连续发声
528 4 delay(50,100);
529 4 beep = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -