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

📄 memory clockί

📁 基于51单片机的万年历
💻
字号:
C51 COMPILER V9.00   TIMERSINIT                                                            10/29/2012 15:18:34 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE TIMERSINIT
OBJECT MODULE PLACED IN TimersInit.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TimersInit.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include"24c02.h"
   3          #include "MacroAndConst.h"
   4          #include "Key.h"
   5          #include "Lcd.h"
   6          #include "Assistance.h"
   7          
   8          char flag=0;
   9          uint year;
  10          uchar time;
  11          uchar count,s1num;
  12          char a,b,c,d,year1,year2;
  13          
  14          void yearConvert(uint Year)
  15          {
  16   1          a=Year/1000;
  17   1              b=Year/100%10;
  18   1              c=Year/10%10;
  19   1              d=Year%10;
  20   1              year1=c*10+d;
  21   1              year2=a*10+b;
  22   1              if(year1==100)
  23   1              {
  24   2                      year1=0;
  25   2                      year2++;
  26   2              }
  27   1      
  28   1      }
  29          
  30          void timer0Init()
  31          {
  32   1              TMOD = 0x11;//设置定时器0和定时器1为工作方式1
  33   1              TH0 = (65536 - 45872) / 256;
  34   1              TL0 = (65536 - 45872) % 256;  //20ms延时
  35   1              EA = 1;//开总中断
  36   1              ET0 = 1;//开定时器0中断
  37   1              TR0 = 1;
  38   1      }
  39          
  40          void timer1Init()
  41          {
  42   1              TH1 = (65536 - 32110) / 256;
  43   1              TL1 = (65536 - 32110) % 256;  //20ms延时
  44   1              ET1 = 1;//开定时器0中断
  45   1              TR1 = 1;
  46   1      }
  47          
  48          void timer0() interrupt 1//定时器0中断服务程序
  49          {
  50   1              TH0=(65536-45872)/256;//再次装定时器初值
  51   1              TL0=(65536-45872)%256;
  52   1              count++;                //中断次数累加
  53   1              if(count==20) //20次50毫秒为1秒
  54   1              {
  55   2                      count=0;
C51 COMPILER V9.00   TIMERSINIT                                                            10/29/2012 15:18:34 PAGE 2   

  56   2                      miao++;
  57   2                      if(miao==60)//秒加到60则进位分钟
  58   2                      {
  59   3                              miao=0;//同时秒数清零
  60   3                              fen++;
  61   3                              if(fen==60)//分钟加到60则进位小时
  62   3                              {
  63   4                                      fen=0;//同时分钟数清零
  64   4                                      shi++;
  65   4                                      if(shi==24)//小时加到24则小时清零
  66   4                                      {
  67   5                                              shi=0;
  68   5                                              day++;
  69   5                                              weekDay++;
  70   5                                              if(weekDay==7)
  71   5                                              {
  72   6                                                      weekDay=0;
  73   6                                              }
  74   5                                          if( (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month == 12) && day=
             -=32 )
  75   5                                              {
  76   6                                                      month++;
  77   6                                                      day=1;
  78   6                                                      flag=1;
  79   6                                              }
  80   5                                              if( (month==4 || month==6 || month==9 || month==11) && day==31 )
  81   5                                              {
  82   6                                                      month++;
  83   6                                                      day=1;
  84   6                                                      flag=1;
  85   6                                              }
  86   5                                              if( month==2 && ((year%4 == 0 && year%100 != 0) || (year%400 == 0)) && day==30 )
  87   5                                              {
  88   6                                                      month++;
  89   6                                                      day=1;
  90   6                                                      flag=1;
  91   6                                              }
  92   5                                              if( month==2 && ((year%4 == 0 && year%100 != 0) || (year%400 == 0)) == 0 && day==29)
  93   5                                              {                                                                                                                                               
  94   6                                                       month++;
  95   6                                                       day=1;
  96   6                                                       flag=1;
  97   6                                              }
  98   5                                              if(month==13)
  99   5                                              {
 100   6                                                      year++;
 101   6                                                      month=1;
 102   6                                                      yearConvert(year);
 103   6                                                      write_year(4,year1);
 104   6                                                      write_addbyte(7,year1);
 105   6                                                      write_year(2,year2);
 106   6                                                      write_addbyte(8,year2);                                                                         
 107   6                              }
 108   5                                              if(flag==1)
 109   5                                              {
 110   6                                                      write_month(7,month);
 111   6                                                      write_addbyte(6,month);
 112   6                                                      flag=0;
 113   6                                              }
 114   5                                              write_day(10,day);
 115   5                                              write_addbyte(5,day);
 116   5                                              write_weekDay(13,weekDay);
C51 COMPILER V9.00   TIMERSINIT                                                            10/29/2012 15:18:34 PAGE 3   

 117   5                                              write_addbyte(4,weekDay);
 118   5                                }
 119   4                      write_sfm(4,shi);//小时若变化则重新写入
 120   4                                      write_addbyte(3,shi);//数据改变立即存入24C02
 121   4                              }
 122   3                              write_sfm(7,fen);//分钟若变化则重新写入
 123   3                              write_addbyte(2,fen);//数据改变立即存入24C02
 124   3                      }
 125   2                      write_sfm(10,miao);//秒若变化则重新写入 
 126   2                      write_addbyte(1,miao);//数据改变立即存入24C02
 127   2              }
 128   1      }
 129          
 130          void timer1() interrupt 3
 131          {
 132   1              time=1;
 133   1      }                        


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    609    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     12    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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