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

📄 ds1302kt.lst

📁 RZ-51V20 实例程序
💻 LST
字号:
C51 COMPILER V8.18   DS1302KT                                                              01/04/2010 16:36:09 PAGE 1   


C51 COMPILER V8.18, COMPILATION OF MODULE DS1302KT
OBJECT MODULE PLACED IN DS1302KT.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DS1302KT.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <at89x52.h>
   2          #include <DS1302.h>
   3          //定义共阳极字型码0123456789-
   4          unsigned char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
   5          unsigned char time[]={0,0,0,0,0,0,0,0};//用来储存时间
   6          unsigned char date[]={0,0,0,0,0,0,0,0};//用来储存日期
   7          SYSTEMTIME  time1;   //在ds1302.h文件中已经定义了一个名字为SYSTEMTIME的结构体,在这里我们定义一个变量名
   8                               //为time的SYSTEMTIME结构体        
   9          void delay(unsigned char i)     //延时子程序  
  10          {
  11   1        unsigned char j;
  12   1        while((i--)!=0)
  13   1        {
  14   2          for(j=123;j>0;j--);
  15   2        }
  16   1      }
  17          unsigned char button_time(n,x,y)        //时钟调整子程序
  18          unsigned char n,x,y;
  19          {
  20   1          if(P1_7==0)
  21   1          {
  22   2              delay(50);
  23   2              if(P1_7==0)
  24   2              {
  25   3                      n++;
  26   3                  if(n==x)
  27   3                      n=0;
  28   3                  while(P1_7==0);
  29   3              }
  30   2          }
  31   1      
  32   1          if(P1_5==0)
  33   1          {
  34   2              delay(50);
  35   2              if(P1_5==0)
  36   2              {
  37   3                  if(n==0)
  38   3                      n=y;
  39   3                      else
  40   3                  n--;                                                
  41   3                  while(P1_5==0);
  42   3              }
  43   2          }
  44   1          return n;
  45   1      }
  46          
  47          unsigned char button_date(n,x,y)        //日期调整子程序
  48          unsigned char n,x,y;
  49          {
  50   1          if(P1_7==0)
  51   1          {
  52   2              delay(50);
  53   2              if(P1_7==0)
  54   2              {
  55   3                      n++;
C51 COMPILER V8.18   DS1302KT                                                              01/04/2010 16:36:09 PAGE 2   

  56   3                  if(n==x)
  57   3                      n=1;
  58   3                  while(P1_7==0);
  59   3              }
  60   2          }
  61   1      
  62   1          if(P1_5==0)
  63   1          {
  64   2              delay(50);
  65   2              if(P1_5==0)
  66   2              {
  67   3                  if(n==1)
  68   3                      n=y;
  69   3                      else
  70   3                  n--;                                                
  71   3                  while(P1_5==0);
  72   3              }
  73   2          }
  74   1          return n;
  75   1      }
  76          
  77          void display(second10,second1,minute10,minute1,hour10,hour1)    //显示子程序
  78          unsigned char second10,second1,minute10,minute1,hour10,hour1;  
  79          {
  80   1        P2=0xfe;
  81   1        P0=dispcode[second10];//显示秒的十位
  82   1        delay(1);
  83   1      
  84   1        P2=0xfd;
  85   1        P0=dispcode[second1]; //显示秒的个位
  86   1        delay(1);
  87   1      
  88   1        P2=0xfb;
  89   1        P0=dispcode[10];              //显示"-"
  90   1        delay(1);
  91   1      
  92   1        P2=0xf7;
  93   1        P0=dispcode[minute10];//显示分的十位
  94   1        delay(1);
  95   1      
  96   1        P2=0xef;
  97   1        P0=dispcode[minute1]; //显示分的个位
  98   1        delay(1);
  99   1      
 100   1        P2=0xdf;
 101   1        P0=dispcode[10];              //显示"-"
 102   1        delay(1);
 103   1      
 104   1        P2=0xbf;
 105   1        P0=dispcode[hour10];  //显示时的十位
 106   1        delay(1);
 107   1      
 108   1        P2=0x7f;
 109   1        P0=dispcode[hour1];   //显示时的个位
 110   1        delay(1);
 111   1      }       
 112          
 113          void main()
 114          {  
 115   1         unsigned char flag;
 116   1         Initial_DS1302();                                //初始化DS1302这个时钟芯片,   
 117   1         while(1)                                                         
C51 COMPILER V8.18   DS1302KT                                                              01/04/2010 16:36:09 PAGE 3   

 118   1         {
 119   2             DS1302_GetTime(&time1);                  //读取时间参数            
 120   2             time[5]=(time1.Second)%10;               //把秒的个位数据存入time[5]
 121   2             time[4]=(time1.Second)/10;               //把秒的十位数据存入time[4]
 122   2             time[3]=(time1.Minute)%10;               //把分的个位数据存入time[3]
 123   2             time[2]=(time1.Minute)/10;               //把分的十位数据存入time[2]
 124   2             time[1]=(time1.Hour)%10;                 //把时的个位数据存入time[1]
 125   2             time[0]=(time1.Hour)/10;             //把时的十位数据存入time[0]
 126   2                 date[5]=(time1.Day)%10;
 127   2                 date[4]=(time1.Day)/10;
 128   2                 date[3]=(time1.Month)%10;
 129   2                 date[2]=(time1.Month)/10;
 130   2                 date[1]=(time1.Year)%10;
 131   2                 date[0]=(time1.Year)/10;             
 132   2      
 133   2                 if(P1_4==0)          //如果按下Time Start键一下,时钟开始正常显示时间,再按一下,显示日期
 134   2                 {
 135   3                              delay(50);
 136   3                              if(P1_4==0)
 137   3                              {
 138   4                                      flag++;
 139   4                                      if(flag>1)
 140   4                                      {
 141   5                                              flag=0;
 142   5                                      }
 143   4                              }
 144   3                              while(P1_4==0);
 145   3                      }
 146   2                 if(P1_6==0)          //如果按下Time Set键一下,开始显示日期,再按一下进入日期跟时钟的调节模式
 147   2                 {
 148   3                              delay(50);
 149   3                              if(P1_6==0)
 150   3                              {
 151   4                                      flag++;
 152   4                                      if(flag>7)
 153   4                                      {
 154   5                                              flag=0;
 155   5                                      }
 156   4                              }
 157   3                              while(P1_6==0);
 158   3                      }
 159   2      
 160   2                      switch(flag)
 161   2                      {
 162   3                              case 0:display(time[0],time[1],time[2],time[3],time[4],time[5]);                //调用子函数display,把存入数组time的

⌨️ 快捷键说明

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