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

📄 main.lst

📁 用DS12C887RTC芯片实现高精度数字时钟的1602显示
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   MAIN                                                                  02/05/2009 15:57:55 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: F:\安装包\Keilc uv2\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*************************************************************************
   2          文件名  :main.c
   3          作        者:eleclike
   4          修改日期:2008-9-9
   5          版        本:v1.00
   6          编译软件:KEIL uVision2
   7          处理器:  AT89S52
   8          版权说明:本程序只供学习使用,未经作者许可,不得用于其它任何用途
   9          备    注:
  10          **************************************************************************/
  11          
  12          #include "my52.h"
  13          #include "ds12887.h"
  14          #include "mmi.h"
  15          
  16          //时钟闹钟调整模式宏定义
  17          #define ADJUST_DISABLE          0x00
  18          #define ADJUST_HOUR                     0x01
  19          #define ADJUST_MINUTE           0x02
  20          #define ADJUST_MONTH            0x03
  21          #define ADJUST_DATE                     0x04
  22          #define ADJUST_YEAR                     0x05
  23          #define ADJUST_DAY                      0x06
  24          #define ADJUST_ALARM_HOUR       0x07
  25          #define ADJUST_ALARM_MINUTE     0x08
  26          
  27          //全局变量定义
  28          uchar DisplayAlarm = 0;         
  29          uchar AdjustMode = ADJUST_DISABLE;
  30          
  31          //函数声明
  32          void DeelDisplay(void);
  33          void DeelPressKey(void);
  34          void DdaInc(uchar* temp);
  35          void DdaDec(uchar* temp);
  36          void DeelKey(uchar* temp);
  37          void DeelAlarm(void);
  38          
  39          /*********************************************************
  40                                                                  main
  41          *********************************************************/
  42          void main(void)
  43          {       
  44   1      
  45   1              IsInitDs12887();
  46   1              AlarmEnable = 0;
  47   1      
  48   1              while(1)
  49   1              {
  50   2                      ReadDs12887();                          //读DS12887有关时钟的内容
  51   2              
  52   2                      ReadAlarmFlag();                        //读闹钟标志
  53   2      
  54   2                      ReadKey();                                      //读按键值
  55   2                      
C51 COMPILER V8.08   MAIN                                                                  02/05/2009 15:57:55 PAGE 2   

  56   2                      if(KeyValue != 0xff)    
  57   2                      {
  58   3                              DeelPressKey();                 //处理按键
  59   3                      }
  60   2      
  61   2                      DeelAlarm();                            //处理闹钟
  62   2      
  63   2                      DeelDisplay();                          //处理时钟显示                  
  64   2              }
  65   1      
  66   1      }
  67          
  68          /*********************************************************
  69          函数名称:DeelAlarm()
  70          函数功能:处理闹钟
  71          入口参数:无
  72          出口参数:无
  73          备    注:
  74          *********************************************************/
  75          void DeelAlarm(void)
  76          {
  77   1              if(AlarmEnable == 1)            //处理闹钟
  78   1              {
  79   2                      AlarmLedShine();        
  80   2                      AlarmBellShine();
  81   2              }
  82   1              else
  83   1              {
  84   2                      AlarmLedOff();
  85   2                      AlarmBellOff();
  86   2              }
  87   1      }
  88          /*********************************************************
  89          函数名称:DeelPressKey()
  90          函数功能:处理按键
  91          入口参数:无
  92          出口参数:无
  93          备    注:
  94          *********************************************************/
  95          void DeelPressKey(void)
  96          {
  97   1              //调整模式变量处理
  98   1              if (KeyValue == KEY_MODE)                               
  99   1              {
 100   2                      AdjustMode ++;
 101   2                      if(AdjustMode >= 9)
 102   2                      {
 103   3                              AdjustMode = ADJUST_DISABLE;
 104   3                      }
 105   2              }
 106   1              //如果按下显示闹钟键
 107   1              if(KeyValue == KEY_DISPLAY_ALARM)
 108   1              {
 109   2                      DisplayAlarm ++;                
 110   2                      if(DisplayAlarm >= 2)   //按键交替为1或0,使能显示闹钟或其他时间信息
 111   2                      {
 112   3                              DisplayAlarm =0;
 113   3                      }       
 114   2              }
 115   1      
 116   1              //根据调整模式决定调整的参数
 117   1              switch(AdjustMode)                                      
C51 COMPILER V8.08   MAIN                                                                  02/05/2009 15:57:55 PAGE 3   

 118   1              {       
 119   2                      case ADJUST_HOUR:
 120   2                              DeelKey(&Hour);
 121   2                              if(Hour >= 0x24)
 122   2                                      Hour = 0;
 123   2                              TIME_HOUR = Hour;
 124   2                              break;  
 125   2                      case ADJUST_MINUTE:     
 126   2                              DeelKey(&Minute);
 127   2                              if(Minute >= 0x60)
 128   2                                      Minute = 0;     
 129   2                              TIME_MINUTE = Minute;   
 130   2                              break;  
 131   2                      case ADJUST_MONTH       :
 132   2                              DeelKey(&Month);
 133   2                              if(Month >= 0x13)
 134   2                                      Month = 0;      
 135   2                              TIME_MONTH = Month;                             
 136   2                              break;  
 137   2                      case ADJUST_DATE:
 138   2                              DeelKey(&Date);
 139   2                              if(Date >= 0x32)
 140   2                                      Date = 0;       
 141   2                              TIME_DATE = Date;               
 142   2                              break;  
 143   2                      case ADJUST_YEAR:       
 144   2                              DeelKey(&Year);
 145   2                              if(Year >= 0x100)
 146   2                                      Year = 0;
 147   2                              TIME_YEAR = Year;                       
 148   2                              break;  
 149   2                      case ADJUST_DAY:
 150   2                              DeelKey(&Day);
 151   2                              if(Day >= 0x8)
 152   2                                      Day = 0;
 153   2                              TIME_DAY = Day;                 
 154   2                              break;  
 155   2                      case ADJUST_ALARM_HOUR:
 156   2                              DeelKey(&AlmHour);
 157   2                              if(AlmHour >= 0x24)
 158   2                                      AlmHour = 0;
 159   2                              ALARM_HOUR = AlmHour;
 160   2                              break;  
 161   2                      case ADJUST_ALARM_MINUTE: 
 162   2                              DeelKey(&AlmMinute);
 163   2                              if(AlmMinute >= 0x60)
 164   2                                      AlmMinute = 0;                  
 165   2                              ALARM_MINUTE = AlmMinute;

⌨️ 快捷键说明

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