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

📄 main.lst

📁 单片机项目19-电子日历(1602显示)
💻 LST
字号:
C51 COMPILER V8.02   MAIN                                                                  12/18/2011 10:29:55 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************/
   2          #include<reg51.h>
   3          #include"lcd1602.c"
   4          #include"ds1302.c"
   5          #include"ds18b20.c"
   6          #include"key.c"
   7          #include"24C04.c"
   8          #define uchar unsigned char
   9          #define uint unsigned int
  10          sbit fmq = P2^7;
  11          uchar cp,flash,ds,df,d;
  12          uint zs,xs,kj;
  13          /*******************************显示函数***************************/
  14          void display(void)
  15          {
  16   1              if(key1_flag >=8)
  17   1              {
  18   2                      gotoxy(1,0);
  19   2                      display_string("*****dingshi*****");
  20   2                      gotoxy(2,0);
  21   2                      display_string("time:");
  22   2                      if(key1_flag == 8)//定时小时的调整值并闪烁
  23   2                      {
  24   3                              if(flash)display_num(time_tmp[7]);
  25   3                              else display_string("  ");
  26   3                      }
  27   2                      else display_num(time_tmp[7]);
  28   2                      if(flash == 0x00)display_string(":");else if(flash == 0xff)display_string(" ");//冒号闪烁
  29   2                      if(key1_flag == 9)//定时分钟的调整值并闪烁
  30   2                      {
  31   3                              if(flash)display_num(time_tmp[8]);
  32   3                              else display_string("  ");
  33   3                      }
  34   2                      else display_num(time_tmp[8]);
  35   2                      display_string("      ");
  36   2              }
  37   1              else
  38   1              {
  39   2                      gotoxy(1,0);    //第一行
  40   2                      display_string("20");//显示20
  41   2                      if(key1_flag == 1)//显示年的调整值并闪烁
  42   2                      {
  43   3                              if(flash)display_num(time_tmp[0]);
  44   3                              else display_string("  ");
  45   3                      }
  46   2                      else display_num(time_tmp[0]);
  47   2                      display_string("/");
  48   2                      if(key1_flag == 2)//显示月的调整值并闪烁
  49   2                      {
  50   3                              if(flash)display_num(time_tmp[1]);
  51   3                              else display_string("  ");
  52   3                      }
  53   2                      else display_num(time_tmp[1]);
  54   2                      display_string("/");
  55   2                      if(key1_flag == 3)//显示日的调整值并闪烁
C51 COMPILER V8.02   MAIN                                                                  12/18/2011 10:29:55 PAGE 2   

  56   2                      {
  57   3                              if(flash)display_num(time_tmp[2]);
  58   3                              else display_string("  ");
  59   3                      }
  60   2                      else display_num(time_tmp[2]);
  61   2                      display_string(" WEEK");
  62   2                      if(key1_flag == 4)//显示星期的调整值并闪烁
  63   2                      {
  64   3                              if(flash)write_data(num[time_tmp[3]]);
  65   3                              else display_string(" ");
  66   3                      }
  67   2                      else write_data(num[time_tmp[3]]);
  68   2                      gotoxy(2,0);    //第二行
  69   2                      if(key1_flag == 5)//显示小时的调整值并闪烁
  70   2                      {
  71   3                              if(flash)display_num(time_tmp[4]);
  72   3                              else display_string("  ");
  73   3                      }
  74   2                      else display_num(time_tmp[4]);
  75   2                      if(flash == 0x00)display_string(":");else if(flash == 0xff)display_string(" ");//冒号闪烁
  76   2                      if(key1_flag == 6)//显示分的调整值并闪烁
  77   2                      {
  78   3                              if(flash)display_num(time_tmp[5]);
  79   3                              else display_string("  ");
  80   3                      }
  81   2                      else display_num(time_tmp[5]);
  82   2                      if(flash == 0x00)display_string(":");else if(flash == 0xff)display_string(" ");//冒号闪烁
  83   2                      if(key1_flag == 7)//显示秒的调整值并闪烁
  84   2                      {
  85   3                              if(flash)display_num(time_tmp[6]);
  86   3                              else display_string("  ");
  87   3                      }
  88   2                      else display_num(time_tmp[6]);
  89   2                      display_string(" T");display_num(zs);display_string(".");write_data(num[xs]);write_data(0xdf);display_st
             -ring("C");
  90   2              }       
  91   1      }
  92          /*****************************************************************************/
  93          void timer0_init(void)
  94          {
  95   1              TMOD = 0x01;
  96   1              TH0 = 0xec;
  97   1              TL0 = 0x78;
  98   1              TR0 = 1;
  99   1              EA  = 1;
 100   1              ET0 = 1;
 101   1      }
 102          /*****************************************************************************/
 103          void timer0_isr(void) interrupt 1
 104          {
 105   1              TH0 = 0xec;
 106   1              TL0 = 0x78;
 107   1              cp++;
 108   1              if(cp >= 100)   //刚好1秒
 109   1         {
 110   2      
 111   2                      cp = 0;
 112   2                      flash = ~flash;
 113   2                      zs = Read_Temperature();
 114   2                      xs = c;
 115   2                      xs = xs * 0.66; 
 116   2              }
C51 COMPILER V8.02   MAIN                                                                  12/18/2011 10:29:55 PAGE 3   

 117   1      }       
 118          /*****************************************************************************/
 119          void main (void)  
 120          {
 121   1              timer0_init();
 122   1              fmq = 0;
 123   1              F1602_init();
 124   1              F1602_clear();
 125   1              gotoxy(1,0);
 126   1              display_string("     welcome     ");
 127   1              gotoxy(2,0);
 128   1              for(kj = 1;kj <= 16;kj++)
 129   1              {
 130   2                      display_string(">");
 131   2                      delay_us(6000);
 132   2              } 
 133   1              ds1302_init();
 134   1              init_24c04();   
 135   1              write_add_dat_24c04(1,0x08);
 136   1          write_add_dat_24c04(2,0x00);        
 137   1              while(1)
 138   1              {       
 139   2                      key();
 140   2                      get_ds1302_time();      
 141   2                      d = read_add_dat_24c04(1);
 142   2                      ds = BCD_DEC_conv(d);   
 143   2                      delay(500);
 144   2                      d = read_add_dat_24c04(2);
 145   2                      df = BCD_DEC_conv(d);   
 146   2                      delay(500);
 147   2                      if(min == df && hour == ds)fmq = 1;
 148   2                      if(min != df || hour != ds)     fmq = 0;
 149   2                      if(hour == time_tmp[7] && min == time_tmp[8])fmq = 1;
 150   2                      if(hour != time_tmp[7] || min != time_tmp[8])fmq = 0;
 151   2                      if(key1_flag == 0)
 152   2                      {
 153   3                              if(key4 == 0)
 154   3                              {
 155   4                                      delay(300);
 156   4                                      if(key4 == 0)
 157   4                                      {       
 158   5                                              delay(300);
 159   5                                              key4_s = 1;
 160   5                                      }
 161   4                              }       
 162   3                              if(key4 == 1 && key4_s == 1)
 163   3                              {
 164   4                                      fmq = 0;
 165   4                                      time_tmp[8] = time_tmp[8]-1; 
 166   4                              }
 167   3                      }
 168   2                      if(key1_flag > 10 || key1_flag < 1)
 169   2                      {
 170   3                              gotoxy(1,0);
 171   3                              display_string("20");
 172   3                              display_num(year);
 173   3                              display_string("/");
 174   3                              display_num(moon);
 175   3                              display_string("/");
 176   3                              display_num(date);
 177   3                              display_string(" WEEK");
 178   3                              write_data(num[xingqi]);
C51 COMPILER V8.02   MAIN                                                                  12/18/2011 10:29:55 PAGE 4   

 179   3                              gotoxy(2,0); 
 180   3                              display_num(hour);
 181   3                              if(flash == 0x00)display_string(":");else if(flash == 0xff)display_string(" ");//冒号闪烁
 182   3                              display_num(min);
 183   3                          if(flash == 0x00)display_string(":");else if(flash == 0xff)display_string(" ");//冒号闪烁
 184   3                              display_num(sec);
 185   3                              display_string(" T");display_num(zs);display_string(".");write_data(num[xs]);write_data(0xdf);display_s
             -tring("C");
 186   3                      }       
 187   2                      else
 188   2                      display();                         
 189   2                              
 190   2              }          
 191   1      }
 192          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2019    ----
   CONSTANT SIZE    =     76    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     56       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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