⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lesson10.lst

📁 基于8051的生产线记件系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
 530   4                                              break;
 531   4                                      case 0xB5:
 532   4                                              uc_device_addr = 0xA0;//0xA0=1010 0000B, 1010is the device number,000 is the A2A1A0 hard wired, 0 wri
             -te.
 533   4                                              uc_device_sub_addr = 0x00 + ((5) << 3);//EEPROM 首地址
 534   4                                              IRcvStr(uc_device_addr,uc_device_sub_addr,g_uc_data_receive,3);//以页方式读取//读出的数据保存在数组g_
             -uc_data_receive中
 535   4                                              g_uc_hr_cnt = g_uc_data_receive[0];
 536   4                                              g_uc_min_cnt = g_uc_data_receive[1];
 537   4                                              g_uc_sec_cnt = g_uc_data_receive[2];
 538   4                                              display_led(g_uc_hr_cnt ,g_uc_min_cnt ,g_uc_sec_cnt);
 539   4                                              beep = 0;//连续发声
 540   4                                              delay(50,100);
 541   4                                              beep = 1;
 542   4                                              break;
 543   4                                      case 0xB6:
 544   4                                              uc_device_addr = 0xA0;//0xA0=1010 0000B, 1010is the device number,000 is the A2A1A0 hard wired, 0 wri
             -te.
 545   4                                              uc_device_sub_addr = 0x00 + ((6) << 3);//EEPROM 首地址
 546   4                                              IRcvStr(uc_device_addr,uc_device_sub_addr,g_uc_data_receive,3);//以页方式读取//读出的数据保存在数组g_
             -uc_data_receive中
 547   4                                              g_uc_hr_cnt = g_uc_data_receive[0];
 548   4                                              g_uc_min_cnt = g_uc_data_receive[1];
 549   4                                              g_uc_sec_cnt = g_uc_data_receive[2];
 550   4                                              display_led(g_uc_hr_cnt ,g_uc_min_cnt ,g_uc_sec_cnt);
 551   4                                              beep = 0;//连续发声
 552   4                                              delay(50,100);
 553   4                                              beep = 1;
 554   4                                              break;
 555   4                                      case 0xB7:
 556   4                                              uc_device_addr = 0xA0;//0xA0=1010 0000B, 1010is the device number,000 is the A2A1A0 hard wired, 0 wri
             -te.
 557   4                                              uc_device_sub_addr = 0x00 + ((7) << 3);//EEPROM 首地址
 558   4                                              IRcvStr(uc_device_addr,uc_device_sub_addr,g_uc_data_receive,3);//以页方式读取//读出的数据保存在数组g_
             -uc_data_receive中
 559   4                                              g_uc_hr_cnt = g_uc_data_receive[0];
 560   4                                              g_uc_min_cnt = g_uc_data_receive[1];
 561   4                                              g_uc_sec_cnt = g_uc_data_receive[2];
 562   4                                              display_led(g_uc_hr_cnt ,g_uc_min_cnt ,g_uc_sec_cnt);
 563   4                                              beep = 0;//连续发声
 564   4                                              delay(50,100);
 565   4                                              beep = 1;
 566   4                                              break;
 567   4                                      default:
 568   4                                              break;
 569   4                              }
 570   3                      }
 571   2              }       
 572   1              uc_keypad_response_flag = 0;//for single key press
 573   1      }
 574          /*************************************************/
 575          /*name:keypad_response_single()
 576          function:response to the key single number 
 577          input:uc_key_number*/
 578          /*************************************************/
 579          void keypad_response_single(uchar key_number)
 580          {
 581   1              data uchar k;   
C51 COMPILER V7.50   LESSON10                                                              06/19/2006 21:28:10 PAGE 11  

 582   1              while(!(ACC == 0x87))//release the key//P1.7 for beep!
 583   1              {
 584   2                      delay(2,255);
 585   2                      P1 = 0x87;
 586   2                      ACC = P1;
 587   2                      ACC &= 0X87;
 588   2              }
 589   1              for(k=0;k<=11;k++)
 590   1              {
 591   2                      if(key_number == g_uc_key_number_all[k])
 592   2                        break;
 593   2              }
 594   1              switch(k)
 595   1              {
 596   2                      case 10:/*A*/
 597   2                              break;
 598   2                      case 11:/*B*/
 599   2                              break;
 600   2                      default:/*k = 0~9*/
 601   2                                      if(g_uc_disp_cnt < 7)//the maximal number is 6
 602   2                                      {
 603   3                                              g_uc_disp_cnt++;
 604   3                                              switch(g_uc_disp_cnt)
 605   3                                              {
 606   4                                                      case 1:/*hr high*/
 607   4                                                                      g_uc_hr_cnt = k << 4;
 608   4                                                                      g_hr_disp = g_uc_hr_cnt;/*using OR can't mask the hr_low,so hr equal to 0*/                                             
 609   4                                                              break;
 610   4                                                      case 2:/*hr low*/
 611   4                                                                      g_uc_hr_cnt += k;
 612   4                                                                      g_hr_disp = g_uc_hr_cnt;
 613   4                                                              break;
 614   4                                                      case 3:/*min high*/
 615   4                                                                      g_uc_min_cnt = k << 4;
 616   4                                                                      g_min_disp = g_uc_min_cnt;
 617   4                                                              break;
 618   4                                                      case 4:/*min low*/
 619   4                                                                      g_uc_min_cnt += k;
 620   4                                                                      g_min_disp = g_uc_min_cnt;
 621   4                                                              break;
 622   4                                                      case 5:/*sec high*/
 623   4                                                                      g_uc_sec_cnt = k << 4;
 624   4                                                                      g_sec_disp = g_uc_sec_cnt;
 625   4                                                              break;
 626   4                                                      case 6:/*sec low*/
 627   4                                                                      g_uc_sec_cnt += k;
 628   4                                                                      g_sec_disp = g_uc_sec_cnt;
 629   4                                                              break;
 630   4                                                      default:                
 631   4                                                              break;
 632   4                                              }
 633   3                                      }
 634   2                              break;
 635   2              }
 636   1      }
 637          /*************************************************/
 638          /*      name:display_led
 639                  function:display the number*/
 640          /*************************************************/
 641          void display_led(uchar hr, uchar min,uchar sec)
 642          {
 643   1              g_sec_disp = sec;//显示sec
C51 COMPILER V7.50   LESSON10                                                              06/19/2006 21:28:10 PAGE 12  

 644   1              g_min_disp = min;//显示min
 645   1              g_hr_disp = hr;//显示hr
 646   1      }
 647          /*************************************************/
 648          /*      name:delay
 649                  function: */
 650          /*************************************************/
 651          void delay(uchar m, uchar n)
 652          {
 653   1              data uchar i, j;
 654   1              for(i=0;i<m;i++)
 655   1              {
 656   2                      for(j=0;j<n;j++);
 657   2              }
 658   1      }
 659          /*************************************************/
 660          /*time0_interrupt()时钟计数,显示*/
 661          /*************************************************/
 662          void time0_interrupt(void) interrupt 1 using 3
 663          {
 664   1              TH0 =0x3C   ;//重新装入初值15536
 665   1              TL0 =0xB0   ;//100ms=0.1s       
 666   1              g_uc_ms_cnt++;
 667   1              if(g_uc_ms_cnt==10)
 668   1              {
 669   2                      g_uc_ms_cnt = 0;        
 670   2                      g_st_current_time.sec ++;
 671   2                      if((g_st_current_time.sec&0x0F)>9)      /*变量uc_sec_cnt为16进制数,显示应该为10进制*/
 672   2                      {
 673   3                              g_st_current_time.sec += 6;     /*(uc_sec_cnt&0x0F)按位与运算*/
 674   3                      }               /*若没有if语句,则只能是到9以后,继续数到F才进位*/              
 675   2                      display_led(g_st_current_time.hr,g_st_current_time.min,g_st_current_time.sec);/*显示时钟,每秒刷新一次*/
 676   2                      if((g_st_current_time.sec)>=0x60)
 677   2                      {
 678   3                              g_st_current_time.sec = 0;
 679   3                              g_st_current_time.min ++;
 680   3                              if((g_st_current_time.min&0x0F)>9)              /*变量uc_min_cnt为16进制数,显示应该为10进制*/
 681   3                              {
 682   4                                      g_st_current_time.min += 6;             /*(uc_min_cnt&0x0F)按位与运算*/
 683   4                              }                                                       /*若没有if语句,则只能是到9以后,继续数到F才进位*/      
 684   3                              if((g_st_current_time.min)>=0x60)
 685   3                              {
 686   4                                      g_st_current_time.min = 0;
 687   4                                      g_st_current_time.hr ++;
 688   4                                      if((g_st_current_time.hr&0x0F)>9)               /*变量uc_hr_cnt为16进制数,显示应该为10进制*/
 689   4                                      {
 690   5                                              g_st_current_time.hr += 6;                      /*(uc_hr_cnt&0x0F)按位与运算*/
 691   5                                      }                                                       /*若没有if语句,则只能是到9以后,继续数到F才进位*/
 692   4                                      if((g_st_current_time.hr)>=0x24)
 693   4                                      {
 694   5                                              g_st_current_time.hr = 0;
 695   5                                      }
 696   4                              }
 697   3                      }
 698   2              }
 699   1      }
 700          /*************************************************/
 701          /*time1_interrupt段时间计数*/
 702          /*************************************************/
 703          void time1_interrupt(void) interrupt 3 using 0
 704          {
 705   1              uchar uc_device_addr,uc_device_sub_addr;
C51 COMPILER V7.50   LESSON10                                                              06/19/2006 21:28:10 PAGE 13  

 706   1              uchar j;
 707   1      
 708   1              g_ui_timer1_interval_cnt ++;
 709   1              if(g_ui_timer1_interval_cnt >= 600)//6000*0.1s=10min
 710   1              {
 711   2                      TH1 = 0x3C   ;//初值15536

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -