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

📄 time.lst

📁 用NXP公司P89LPC9401单片机开发液晶显示,包括开发资料,各功能驱动程序.
💻 LST
📖 第 1 页 / 共 2 页
字号:
 138   3                      }
 139   2              }
 140   1      }
 141          
 142          //***********************************************************************
 143          bit             ModifyDay(bit b)                        //天调整函数
 144          {
 145   1              uchar month2;
 146   1              if(b==1)                                                //天加1操作
 147   1              {
 148   2                      if(Day<DayTab[Month]&&Month!=2)
 149   2                      {
 150   3                              Day++;                                  //如果天<当月最大天数,并且不是2月
 151   3                              return(0);                              //则天加1,并且返回进位标志0
 152   3                      }
 153   2                      else if(Month==2)                       //如果当前是2月
 154   2                      {                                                       //取得今年2月的最大天数
 155   3                              month2=((Year&0x03)==0)?29:28;
 156   3                              if(Day<month2)                  //如果小于最大天数
 157   3                              {
 158   4                                      Day++;                          //则加1
 159   4                                      return(0);                      //无进位
 160   4                              }
 161   3                              else                                    //否则
 162   3                              {
 163   4                                      Day=1;                          //天置为1
 164   4                                      return(1);                      //有进位标志
 165   4                              }                               
 166   3              }
 167   2                      else                                            //大于或等于本月最大天数
 168   2                      {
 169   3                              Day=1;                                  //置天数为1
 170   3                      return(1);                              //有进位
 171   3                      }
 172   2              }       
 173   1              else                                                    //天减1操作
 174   1              {
 175   2                      if(Day>1)                                       //如果天大于1
 176   2                              Day--;                                  //则天减1
 177   2                      else if(Month==2)                       //否则,如果当前是2月
 178   2                              Day=((Year&0x03)==0)?29:28;//取今年的2月的最大天数
 179   2                      else                                            
C51 COMPILER V7.06   TIME                                                                  11/09/2004 16:39:45 PAGE 4   

 180   2                              Day=DayTab[Month];              //为其它月,取其对应的最大天数  
 181   2                      return(0);                                      //无进位标志
 182   2              }
 183   1      }
 184          //***********************************************************************
 185          bit             ModifyMonth(bit b)                      //月调整函数
 186          {
 187   1              if(b==1)                                                //月加1操作
 188   1              {
 189   2                      if(Month<12)                            //<12则月加1
 190   2                      {
 191   3                              Month++;
 192   3                              return(0);                              //返回进位标志0
 193   3                      }
 194   2                      else
 195   2                      {
 196   3                              Month=1;                                //否则,月置为1
 197   3                              return(1);                              //返回进位标志1
 198   3                      }
 199   2              }
 200   1              else                                                    //月减1操作
 201   1              {
 202   2                      if(Month>1)                                     //月>1,则减1
 203   2                              Month--;
 204   2                      else                                            //否则月置为12
 205   2                              Month=12;                               
 206   2                      return(0);                                      //返回无进位标志
 207   2              }
 208   1      }
 209          //***********************************************************************
 210          void    ModifyYear(bit b)                       //年调整函数
 211          {
 212   1              if(b==1)                                                //年加1操作
 213   1              {
 214   2                      if(Year<99)                             //年<99则加1
 215   2                              Year++;
 216   2                      else                                            //否则置为0              
 217   2                              Year=0;
 218   2              }
 219   1              else                                                    //年减1操作
 220   1              {
 221   2                      if(Year>0)                                      //年>0则减1
 222   2                              Year--;
 223   2                      else                                            //否则将年置为99
 224   2                              Year=99;
 225   2              }
 226   1      }       
 227          //***********************************************************************
 228          void    TimeAdjuest()                           //时间调整函数
 229          {
 230   1      if(AddSecond())                                         //秒加1,如产生进位标志1,则使分钟加1
 231   1              if(ModifyMinute(1))                             //分加1,如产生进位标志1,则使小时加1
 232   1                      if(ModifyHour(1))                       //小时加1,如产生进位标志1,则使天加1
 233   1                              if(ModifyDay(1))                //天加1,如产生进位标志1,则使月加1
 234   1                                      if(ModifyMonth(1))      //月加1,如产生进位标志1,则使年加1
 235   1                                              ModifyYear(1);           
 236   1      }
 237          //***********************************************************************
 238          void    TimeBeep()                              //时间报警函数
 239          {
 240   1              if(AlarmHour==Hour&&AlarmMinute==Minute&&AlarmAmpm==Ampm)
 241   1              {                                                       //判断是否与闹钟设置值完全符合
C51 COMPILER V7.06   TIME                                                                  11/09/2004 16:39:45 PAGE 5   

 242   2                      BEEP=0;                                 //符合则使BEEP报警
 243   2                      BeepAlarm=1;                    //同时设置闹钟报警标志
 244   2                      Alarm=~Alarm;                   
 245   2                      SendDatTo595(Alarm);    //使8个LED进行闪烁      
 246   2              }
 247   1              else    
 248   1              {
 249   2                      SendDatTo595(0xff<<Mode);//将无闹钟报警,则LED指模式    
 250   2                      BeepAlarm=0;                    //否则清除闹钟报警标志
 251   2                      if(Minute==0&&Second==0)//判断是否是整点
 252   2                              BEEP=0;                         //是,则进行整点提示
 253   2                      else    BEEP=1;                 //不满足任何报警情况,关闭蜂鸣器。
 254   2              }
 255   1      
 256   1      }
 257          
 258          //***********************************************************************
 259          void    RTCINT()  interrupt 10  //RTC中断,中断频率为1Hz
 260          {
 261   1              RTCCON=0x43;                            //清楚RTC中断标志
 262   1              RTCflag=1;                                      //置RTC中断标志
 263   1              HalfSec++;                                      //半秒信号量加1
 264   1      }
 265          //*********************************END***********************************
 266                          
 267          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    433    ----
   CONSTANT SIZE    =     12    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4       7
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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