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

📄 key.lst

📁 万年历系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   KEY                                                                   05/14/2009 00:04:43 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE key.c COMPACT BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg51.h>
   2          #include <absacc.h>
   3          #include <intrins.h>
   4          #include "lcd.h"
   5          #include "ds1302.h"
   6          #include "lcdshow.h"
   7          #include "key.h"
   8          
   9          bit CLKSTOP;
  10          uchar data count,temp,up_flag,down_flag,done;
  11          uint data year;
  12          
  13          /*********************************************/
  14          sbit Set = P3^1;       //模式切换键
  15          sbit Up = P3^2;        //加法按钮
  16          sbit Down = P3^3;      //减法按钮
  17          sbit out = P3^4;       //立刻跳出调整模式按钮
  18          /*********************************************/
  19          void mdelay(uint delay)
  20          {       uint i;
  21   1              for(;delay>0;delay--)
  22   1                      {for(i=0;i<62;i++) //1ms延时.
  23   2                      {;}
  24   2                      }
  25   1      }
  26          
  27          
  28          
  29          
  30          /*********************************************/
  31          
  32          void setting()  //选中后反白显示
  33          {  
  34   1              uchar i;
  35   1              switch(count)
  36   1              {
  37   2              case 1:   //year
  38   2              r_ShowNumber(0,24,date_buf1[0]);
  39   2              r_ShowNumber(0,32,date_buf1[1]);
  40   2              i = date_buf[6]>>4;
  41   2              i &= 0x0f;
  42   2              r_ShowNumber(0,40,i);
  43   2          i = date_buf[6] & 0x0f;
  44   2              r_ShowNumber(0,48,i);
  45   2          break;
  46   2      
  47   2              case 2:  //month
  48   2              show_date();
  49   2              i = date_buf[4]>>4;
  50   2              i &= 0x01;
  51   2              r_ShowNumber(0,64,i);
  52   2              i = date_buf[4] & 0x0f;
  53   2              r_ShowNumber(0,72,i);    
  54   2              break;
  55   2      
C51 COMPILER V7.06   KEY                                                                   05/14/2009 00:04:43 PAGE 2   

  56   2              case 3://day
  57   2              show_date();
  58   2              i = date_buf[3]>>4;
  59   2              i &= 0x03;
  60   2              r_ShowNumber(0,88,i);
  61   2              i = date_buf[3] & 0x0f;
  62   2              r_ShowNumber(0,96,i);
  63   2              break;
  64   2      
  65   2              case 4://week
  66   2              i=date_buf[5]&0x0f;
  67   2              r_ShowChina(4,72,i);
  68   2          break;
  69   2      
  70   2      
  71   2              case 5://hour
  72   2              show_date();
  73   2              i = date_buf[2]>>4;
  74   2              i &= 0x03;
  75   2              r_ShowNumber(2,16,i);
  76   2              i = date_buf[2] & 0x0f;
  77   2              r_ShowNumber(2,24,i);
  78   2              break;
  79   2      
  80   2              case 6://min
  81   2              show_time();
  82   2              i = date_buf[1]>>4;
  83   2              i &= 0x07;
  84   2              r_ShowNumber(2,48,i);
  85   2              i = date_buf[1] & 0x0f;
  86   2              r_ShowNumber(2,56,i);
  87   2          break;
  88   2      
  89   2      
  90   2              case 7://sec
  91   2              show_time();
  92   2              i = date_buf[0]>>4;
  93   2              i &= 0x07;
  94   2              r_ShowNumber(2,80,i);
  95   2              i = date_buf[0] & 0x0f;
  96   2              r_ShowNumber(2,88,i);
  97   2          break;
  98   2      
  99   2              default:
 100   2              show_date();
 101   2              show_time();
 102   2              break;
 103   2              }
 104   1      
 105   1      
 106   1      }
 107          void Setkey()
 108          {
 109   1              Set=1;
 110   1                      if(Set==0)
 111   1                  { 
 112   2                         mdelay(8);
 113   2                 count=count+1;        //Setkey按一次,count就加1
 114   2                         done=1;                       //进入调整模式
 115   2                         setting();
 116   2                 while(Set==0);       //等待按键释放
 117   2                       }
C51 COMPILER V7.06   KEY                                                                   05/14/2009 00:04:43 PAGE 3   

 118   1      }
 119          
 120          void outkey()                    //跳出调整模式,返回默认显示
 121          { uchar Second;
 122   1        if(out==0)         
 123   1        { count=0;
 124   2              Second=read_all_1302(DS1302_SECOND);
 125   2          write_all_1302(0x8e,0x00); //写入允许
 126   2              write_all_1302(0x80,Second&0x7f);
 127   2              write_all_1302(0x8E,0x80);          //禁止写入
 128   2              done=0;
 129   2              ClearScreen(1);
 130   2          ClearScreen(2);
 131   2          mdelay(2);
 132   2              show_date();
 133   2              show_time();
 134   2              show_hz();
 135   2              show_temp();    
 136   2              while(out==0);
 137   2              //TR0=1;
 138   2        }
 139   1      }
 140          /***************************************************************************************************/
 141          
 142          void addtime()
 143          {                        Up=1;
 144   1                              if(Up==0)
 145   1                              {           mdelay(8);
 146   2                                             switch(count)
 147   2                                                {
 148   3                                                 case 1:
 149   3                                        temp=read_all_1302(DS1302_YEAR);  //读取年数
 150   3                                                                        temp=temp+1;  //年数加1
 151   3                                                                        if((temp&0x0f)==0x0a) temp=(((temp>>4)&0x0f)+1)*16;
 152   3                                                                       
 153   3                                                                        up_flag=1;
 154   3                                                                        if(temp>0x85)
 155   3                                                                        temp=0;
 156   3                                                                        break;
 157   3                                                 case 2:
 158   3                                        temp=read_all_1302(DS1302_MONTH);  //读取月数
 159   3                                                                        temp=temp+1;  //月数加1
 160   3                                                                        if (temp==0x0a) temp=0x10;
 161   3                                        up_flag=1;
 162   3                                                                        if(temp>0x12)
 163   3                                                                        temp=1;
 164   3                                                                        break;
 165   3                                                 case 3:
 166   3                                        temp=read_all_1302(DS1302_DAY);  //读取日数
 167   3                                                                        temp=temp+1;  //日数加1
 168   3                                                                        if((temp&0x0f)==0x0a) temp=(((temp>>4)&0x0f)+1)*16;
 169   3                                        up_flag=1;
 170   3                                                                        if(temp>0x31)
 171   3                                                                        temp=1;
 172   3                                                                        break;
 173   3                                                 case 4:
 174   3                                        temp=read_all_1302(DS1302_WEEK);  //读取星期数
 175   3                                                                        temp=temp+1;  //星期数加1
 176   3                                                                        if (temp==0x0a) temp=0x10;
 177   3                                        up_flag=1;
 178   3                                                                        if(temp>0x7)  
 179   3                                                                        temp=1;
C51 COMPILER V7.06   KEY                                                                   05/14/2009 00:04:43 PAGE 4   

 180   3                                                                        break;
 181   3                                                 case 5:
 182   3                                        temp=read_all_1302(DS1302_HOUR);  //读取小时数
 183   3                                                                        temp=temp+1;  //小时数加1
 184   3                                                                        if((temp&0x0f)==0x0a) temp=(((temp>>4)&0x0f)+1)*16;
 185   3                                        up_flag=1;
 186   3                                                                        if(temp>0x23)   //超过23小时,清零
 187   3                                                                        temp=0;
 188   3                                                                        break;
 189   3                                                 case 6:
 190   3                                        temp=read_all_1302(DS1302_MINUTE);  //读取分数
 191   3                                                                        temp=temp+1;  //分数加1
 192   3                                                                        if((temp&0x0f)==0x0a) temp=(((temp>>4)&0x0f)+1)*16;
 193   3                                        up_flag=1;
 194   3                                                                        if(temp>0x59)          //超过59分,清零
 195   3                                                                        temp=0;
 196   3                                                                        break;
 197   3                                 case 7:
 198   3                                        temp=read_all_1302(DS1302_SECOND);  //读取秒数
 199   3                                                                        temp=temp+1;  //秒数加1
 200   3                                                                        if((temp&0x0f)==0x0a) temp=(((temp>>4)&0x0f)+1)*16;
 201   3                                        up_flag=1;    //数据调整后更新标志
 202   3                                                                        if((temp&0x7f)>0x59)   //超过59秒,清零
 203   3                                        temp=0;                                                                 
 204   3                                                                        break;
 205   3                                                     default:break;
 206   3                                                         }
 207   2                                while(Up==0);
 208   2                        }
 209   1      // flag=1;
 210   1      }
 211          
 212          /***************************************************************************************************/
 213          
 214          

⌨️ 快捷键说明

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