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

📄 main.lst

📁 用DS12C887RTC芯片实现高精度数字时钟的1602显示
💻 LST
📖 第 1 页 / 共 2 页
字号:
 166   2                              break;
 167   2                      default:
 168   2                              break;
 169   2              }
 170   1      
 171   1              //显示闹钟的控制变量处理
 172   1              if(AdjustMode != ADJUST_DISABLE)                
 173   1                      DisplayAlarm=0; 
 174   1      
 175   1      }
 176          /*********************************************************
 177          函数名称:DeelKey()
 178          函数功能:处理调整按键的加一或减一
 179          入口参数:无
C51 COMPILER V8.08   MAIN                                                                  02/05/2009 15:57:55 PAGE 4   

 180          出口参数:无
 181          备    注:
 182          *********************************************************/
 183          void DeelKey(uchar *temp)
 184          {
 185   1              switch(KeyValue)
 186   1              {
 187   2                      case KEY_INC:                   //如果为"增加"按键
 188   2                              DdaInc(temp);
 189   2                              break;
 190   2                      case KEY_DEC:                   //如果为"减少"按键
 191   2                              DdaDec(temp);
 192   2                              break;
 193   2                      /*case KEY_DISPLAY_ALARM:       //如果为"显示闹钟"按键
 194   2                              DisplayAlarm = 1;
 195   2                              break;  */
 196   2                      default: 
 197   2                              break;
 198   2              }
 199   1      }
 200          /*********************************************************
 201          函数名称:DeelDisplay()
 202          函数功能:根据调整的模式处理显示数据
 203          入口参数:无
 204          出口参数:无
 205          备    注:
 206          *********************************************************/
 207          void DeelDisplay(void)
 208          {
 209   1              //显示闹钟的数值
 210   1              if(DisplayAlarm==1)
 211   1              {
 212   2                      DynamicDisplay(AlmHour,AlmMinute);      
 213   2                      AlarmLedShine();
 214   2                      SecondLedOff();
 215   2              }
 216   1              //根据调整模式显示
 217   1              else
 218   1              {
 219   2                      switch(AdjustMode)
 220   2                      {
 221   3                              case ADJUST_HOUR:                               //显示时钟的时,分灭零处理,一下过程类似
 222   3                                      DynamicDisplay(Hour,0xff);
 223   3                                      SecondLedShine();
 224   3                                      break;  
 225   3                              case ADJUST_MINUTE      :
 226   3                                      DynamicDisplay(0xff,Minute);
 227   3                                      SecondLedShine();
 228   3                                      break;  
 229   3                              case ADJUST_MONTH:      
 230   3                                      DynamicDisplay(Month,0xff);             
 231   3                                      break;  
 232   3                              case ADJUST_DATE:
 233   3                                      DynamicDisplay(0xff,Date);              
 234   3                                      break;  
 235   3                              case ADJUST_YEAR:       
 236   3                                      DynamicDisplay(Year,0xff);              
 237   3                                      break;  
 238   3                              case ADJUST_DAY:
 239   3                                      DynamicDisplay(0xff,Day|0xf0);          
 240   3                                      break;  
 241   3                              case ADJUST_ALARM_HOUR  :                       //显示闹钟的时
C51 COMPILER V8.08   MAIN                                                                  02/05/2009 15:57:55 PAGE 5   

 242   3                                      DynamicDisplay(AlmHour,0xff);
 243   3                                      AlarmLedShine();
 244   3                                      break;  
 245   3                              case ADJUST_ALARM_MINUTE:
 246   3                                      DynamicDisplay(0xff,AlmMinute);
 247   3                                      AlarmLedShine();                        
 248   3                                      break;
 249   3                              case ADJUST_DISABLE:
 250   3                                      if( (Second<0x10) && (Second>=0) )              //显示时钟的时分
 251   3                                      {
 252   4                                              DynamicDisplay(Hour,Minute);
 253   4                                              SecondLedShine();
 254   4                                      }
 255   3                                      if( (Second<0x20) && (Second>=0x10) )   //显示时钟的月日
 256   3                                      {
 257   4                                              DynamicDisplay(Month,Date);//月日
 258   4                                      }
 259   3                                      if( (Second<0x40) && (Second>=0x20) )   //显示时分
 260   3                                      {
 261   4                                              DynamicDisplay(Hour,Minute);
 262   4                                              SecondLedShine();
 263   4                                      }
 264   3                                      if( (Second<0x50) && (Second>=0x40) )   //显示时钟的年星期
 265   3                                      {               
 266   4                                              DynamicDisplay(Year,Day|0xf0);  //星期的十位灭零
 267   4                                      }
 268   3                                      if( (Second<=0x59) && (Second>=0x50) )  //显示时分
 269   3                                      {
 270   4                                              DynamicDisplay(Hour,Minute);
 271   4                                              SecondLedShine();
 272   4                                      }                       
 273   3                                      break;
 274   3                              default:
 275   3                                      break;
 276   3                      }
 277   2              }
 278   1      
 279   1      }
 280          /*********************************************************
 281          函数名称:DdaInc()
 282          函数功能:十六进制数据加1调整成BCD码
 283          入口参数:需要调整的十六进制数值
 284          出口参数:无
 285          备    注:在DS12887中各时间参数采用BCD码,所以需要调整
 286          *********************************************************/
 287          void DdaInc(uchar* temp)
 288          {
 289   1              uchar temp2;
 290   1              temp2 = *temp;
 291   1              (*temp) ++;
 292   1              if( (*temp%16) >= 10)
 293   1              {
 294   2                      *temp = temp2 + 0x10 - (temp2 %0x10);
 295   2              }
 296   1      }
 297          /*********************************************************
 298          函数名称:DdaDec()
 299          函数功能:十六进制数据减1调整成BCD码
 300          入口参数:需要调整的十六进制数值
 301          出口参数:无
 302          备    注:在DS12887中各时间参数采用BCD码,所以需要调整
 303          *********************************************************/
C51 COMPILER V8.08   MAIN                                                                  02/05/2009 15:57:55 PAGE 6   

 304          void DdaDec(uchar* temp)
 305          {
 306   1              uchar temp2;
 307   1              temp2 = *temp;
 308   1              (*temp) --;
 309   1              if( (*temp%16) >= 10)
 310   1              {
 311   2                      *temp = temp2 - 0x10 +9 ;
 312   2              }
 313   1      }
 314          /*********************************************************
 315          函数名称:()
 316          函数功能:
 317          入口参数:
 318          出口参数:无
 319          备    注:
 320          *********************************************************/
 321          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    683    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       3
   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 + -