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

📄 1602.lst

📁 C语言单片机编程的代码及教程文献
💻 LST
字号:
C51 COMPILER V7.20   1602                                                                  08/02/2007 20:53:59 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN .\1602.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\..\LCD1602\new_clock\App\1602.c INCDIR(E:\子程序\LCD1602\new_clock\Inclu
                    -de\) DEBUG OBJECTEXTEND PRINT(.\1602.lst) OBJECT(.\1602.obj)

line level    source

   1          #include"INCLUDE.H"
   2          //函数声明
   3           void Up_date();
   4           void Up_disp();
   5           void To_almarray();
   6           extern void Song_delay();
   7           void Play();
   8          
   9           //定义新旧日期/时间变量
  10           struct date new_date,old_date;
  11           struct time new_time,old_time,alm_time;
  12          
  13            //定义软件延时计数变量
  14             uchar secount=0;
  15          
  16            //定义闹钟开关变量
  17            bit on=0;
  18            bit K1=1;
  19          
  20            //定义扬声器引脚
  21            sbit speaker=P1^0; 
  22          code uchar menu3[16]="--Made by Zheng@";
  23          code uchar menu4[16]="Kunlong &Lorise@";
  24           code uchar dispweek[7][4]={"Mon@","Tus@","Wes@","Thu@","Fir@","Sat@","Sun@"};
  25           code uchar menu1[16]="1.Time 2.Alarm @";
  26           code uchar menu2[16]="3.manufacturer@";
  27           code uchar alarm_menu[]="Alarm time@";
  28           code uchar onoff[2][4]={"OFF@","ON @"};
  29          
  30           //定义时间、日期显示数组
  31           struct disptime disp_time,disp_almtime;
  32           struct dispdate disp_date;
  33          void time() interrupt 1
  34           {
  35   1          TH0=0x3c;
  36   1          TL0=0xd3;
  37   1          secount++;
  38   1          if(secount==20)
  39   1            {
  40   2                   secount=0;
  41   2               new_time.second++;
  42   2               if(new_time.second>=60)
  43   2                     {
  44   3                            new_time.second=0;
  45   3                        new_time.minute++;
  46   3                        if(new_time.minute>=60)
  47   3                          {
  48   4                                         new_time.minute=0;
  49   4                                 new_time.hour++;
  50   4                                 if(new_time.hour>=24)
  51   4                                  {
  52   5                                                 new_time.hour=0;
  53   5                                                 Up_date();
  54   5                                              }
C51 COMPILER V7.20   1602                                                                  08/02/2007 20:53:59 PAGE 2   

  55   4                              }
  56   3                      }
  57   2             }
  58   1       }
  59           /***********************把显示数组的值转换为十进制数值 *************/
  60          void To_value()
  61           {
  62   1         new_date.year=(disp_date.year[0]-'0')*1000+(disp_date.year[1]-'0')*100
  63   1                            +(disp_date.year[2]-'0')*10+(disp_date.year[3]-'0');
  64   1         new_date.month=(disp_date.month[0]-'0')*10+(disp_date.month[1]-'0');
  65   1         new_date.day=(disp_date.day[0]-'0')*10+(disp_date.day[1]-'0');
  66   1      
  67   1         new_time.hour=(disp_time.hour[0]-'0')*10+(disp_time.hour[1]-'0');
  68   1         new_time.minute=(disp_time.minute[0]-'0')*10+(disp_time.minute[1]-'0');
  69   1         new_time.second=(disp_time.second[0]-'0')*10+(disp_time.second[1]-'0');
  70   1       }
  71           /***********************把十进制的值转换为显示数组数值 *************/
  72          void To_almarray()
  73           {
  74   1              disp_almtime.hour[0]=alm_time.hour/10+'0';
  75   1              disp_almtime.hour[1]=alm_time.hour%10+'0';
  76   1              disp_almtime.minute[0]=alm_time.minute/10+'0';
  77   1              disp_almtime.minute[1]=alm_time.minute%10+'0';
  78   1              disp_almtime.second[0]=alm_time.second/10+'0';
  79   1              disp_almtime.second[1]=alm_time.second%10+'0';   
  80   1       }
  81          void To_array()
  82           {
  83   1          disp_date.year[0]=old_date.year/1000+'0';
  84   1              disp_date.year[1]=(old_date.year/100)%10+'0';
  85   1              disp_date.year[2]=(old_date.year/10)%10+'0';
  86   1              disp_date.year[3]=old_date.year%10+'0';
  87   1              disp_date.month[0]=old_date.month/10+'0';
  88   1              disp_date.month[1]=old_date.month%10+'0';
  89   1              disp_date.day[0]=old_date.day/10+'0';
  90   1              disp_date.day[1]=old_date.day%10+'0';
  91   1      
  92   1              disp_time.hour[0]=old_time.hour/10+'0';
  93   1              disp_time.hour[1]=old_time.hour%10+'0';
  94   1              disp_time.minute[0]=old_time.minute/10+'0';
  95   1              disp_time.minute[1]=old_time.minute%10+'0';
  96   1              disp_time.second[0]=old_time.second/10+'0';
  97   1              disp_time.second[1]=old_time.second%10+'0';
  98   1       }
  99          /***********************日期更新函数************************/
 100          void Up_date()
 101           {
 102   1          new_date.week++;
 103   1          if(new_date.week==8) 
 104   1                 new_date.week=1;
 105   1          new_date.day++;
 106   1          if(new_date.day>=29)
 107   1            {
 108   2                   switch(new_date.month)
 109   2                 {
 110   3                           case 2:
 111   3                         {
 112   4                                    if(new_date.year%4==0&&new_date.year%100!=0||new_date.year%400==0)
 113   4                                          { 
 114   5                               if(new_date.day==30) 
 115   5                                     {
 116   6                                                    new_date.day=0;
C51 COMPILER V7.20   1602                                                                  08/02/2007 20:53:59 PAGE 3   

 117   6                                        new_date.month++;
 118   6                                     }
 119   5                                 else 
 120   5                                            {
 121   6                                                   new_date.day=0;
 122   6                                                       new_date.month++;
 123   6                                                }
 124   5                                               }
 125   4                               break;
 126   4                         }
 127   3                        case 1:case 3:case 5:case 7:case 8:case 10:case 12:
 128   3                           {
 129   4                                         if(new_date.day==32)
 130   4                                   {
 131   5                                                  new_date.day=0;
 132   5                                                      new_date.month++;
 133   5                                               }
 134   4                                 break;
 135   4                               }
 136   3                       case 4:case 6:case 9:case 11:
 137   3                         {
 138   4                                   if(new_date.day==31)
 139   4                                 {
 140   5                                            new_date.day=0;
 141   5                                                new_date.month++;
 142   5                                         }
 143   4                               break;
 144   4                             }
 145   3                     }
 146   2                  if(new_date.month==13) 
 147   2                    {
 148   3                       new_date.month=0;
 149   3                           new_date.year++;
 150   3                    }
 151   2                  if(new_date.year==6000) 
 152   2                     new_date.year=0;
 153   2            }
 154   1        }
 155          /******************更新日期,时间显示函数****************************/
 156          void Up_disp()
 157           {
 158   1         if(new_date.year!=old_date.year||new_date.month!=old_date.month
 159   1            ||new_date.day!=old_date.day||new_date.week!=old_date.week)
 160   1               {
 161   2                 old_date.year=new_date.year;
 162   2                 old_date.month=new_date.month;
 163   2                 old_date.day=new_date.day;
 164   2                 old_date.week=new_date.week;      
 165   2               }
 166   1          if(old_time.hour!=new_time.hour||old_time.minute!=new_time.minute||old_time.second!=new_time.second)
 167   1                {
 168   2                   old_time.hour=new_time.hour;
 169   2               old_time.minute=new_time.minute;
 170   2               old_time.second=new_time.second;
 171   2                }
 172   1       }
 173           //初始化函数
 174          void Init()
 175           {
 176   1         //初始化时间变量
 177   1         new_time.second=old_time.second=0;
 178   1         new_time.minute=old_time.minute=0;
C51 COMPILER V7.20   1602                                                                  08/02/2007 20:53:59 PAGE 4   

 179   1         new_time.hour=old_time.hour=0;
 180   1      
 181   1         //初始化闹钟时间变量
 182   1         alm_time.second=30;
 183   1         alm_time.minute=50;
 184   1         alm_time.hour=7;
 185   1      
 186   1         //初始化日期变量
 187   1         new_date.year=old_date.year=2007;
 188   1         new_date.month=old_date.month=5;
 189   1         new_date.day=old_date.day=10;
 190   1         new_date.week=old_date.week=3;
 191   1      
 192   1         //初始化时间显示数组
 193   1         disp_time.hour[2]='@';
 194   1         disp_time.minute[2]='@';
 195   1         disp_time.second[2]='@';
 196   1      
 197   1         //初始化闹钟时间显示数组
 198   1         disp_almtime.hour[2]='@';
 199   1         disp_almtime.minute[2]='@';
 200   1         disp_almtime.second[2]='@';
 201   1      
 202   1         //初始化日期显示数组
 203   1         disp_date.year[4]='@';
 204   1         disp_date.month[2]='@';
 205   1         disp_date.day[2]='@';
 206   1      
 207   1         To_almarray();
 208   1         Init_LCD();
 209   1      
 210   1         TMOD=0x11;
 211   1         TH0=0x3c;
 212   1         TL0=0xd3;
 213   1         IE=0x8a;
 214   1         speaker=1;
 215   1         TR0=1;
 216   1       }
 217           main()
 218           {
 219   1              Init();
 220   1                      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1964    ----
   CONSTANT SIZE    =    112    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     49      37
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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