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

📄 main.lst

📁 用C语言写的一个时钟程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 157   2                      if(disptime.sec != curtime.sec)
 158   2                      {
 159   3                              disptime.sec = curtime.sec;
 160   3                              flash_clr(FLASH_ADDR_SEC);//flash扇区擦除
 161   3                              flash_write(FLASH_ADDR_SEC,curtime.sec);//flash写
 162   3                              i = disptime.sec / 10;
 163   3                              j = disptime.sec % 10;
 164   3                              write_char(7,i);
 165   3                              write_char(8,j);
 166   3                      }
 167   2                      if(disptime.min != curtime.min)
 168   2                      {
 169   3                              disptime.min = curtime.min;
 170   3                              flash_clr(FLASH_ADDR_MIN);//flash扇区擦除
 171   3                              flash_write(FLASH_ADDR_MIN,curtime.min);//flash写
 172   3                              i = disptime.min / 10;
 173   3                              j = disptime.min % 10;
 174   3                              write_char(5,i);
 175   3                              write_char(6,j);
 176   3                      }
 177   2                      if(disptime.hour != curtime.hour)
 178   2                      {
 179   3                              disptime.hour = curtime.hour;
C51 COMPILER V7.50   MAIN                                                                  01/23/2007 22:31:40 PAGE 4   

 180   3                              flash_clr(FLASH_ADDR_HOUR);//flash扇区擦除
 181   3                              flash_write(FLASH_ADDR_HOUR,curtime.hour);//flash写
 182   3                              i = disptime.hour / 10;
 183   3                              j = disptime.hour % 10;
 184   3                              write_char(3,i);
 185   3                              write_char(4,j);
 186   3                      }
 187   2      //              disptime = curtime;//把系统时间送去显示.为什么用这句话代码大了266字节,而且刷新LCD太不及时???
 188   2      
 189   2                      if(bmsw_temp != BMSW1)
 190   2                      {
 191   3                              if(bmsw_temp == BMSW2)
 192   3                              {
 193   4                                      switch(stat)
 194   4                                      {
 195   5                                              case 1: curtime.hour++;//顺时针加
 196   5                                                              delayN33ms = 10;//333毫秒,调节时闪烁
 197   5                                                              delayNs = 6;
 198   5                                                              if(curtime.hour >= 24)curtime.hour = 0;
 199   5                                                              break;
 200   5                                              case 2: curtime.min++;//顺时针加
 201   5                                                              delayN33ms = 10;//333毫秒,调节时闪烁
 202   5                                                              delayNs = 6;
 203   5                                                              if(curtime.min >= 60)curtime.min = 0;
 204   5                                                              break;
 205   5                                              case 3: curtime.sec++;//顺时针加
 206   5                                                              delayN33ms = 10;//333毫秒,调节时闪烁
 207   5                                                              delayNs = 6;
 208   5                                                              if(curtime.sec >= 60)curtime.sec = 0;
 209   5                                                              break;
 210   5                                              default:break;
 211   5                                      }
 212   4                              }
 213   3                              else
 214   3                              {
 215   4                                      switch(stat)
 216   4                                      {
 217   5                                              case 1: curtime.hour--;//逆时针减
 218   5                                                              delayN33ms = 10;//333毫秒,调节时闪烁
 219   5                                                              delayNs = 6;
 220   5                                                              if(curtime.hour >= 24)curtime.hour = 23;
 221   5                                                              break;
 222   5                                              case 2: curtime.min--;//逆时针减
 223   5                                                              delayN33ms = 10;//333毫秒,调节时闪烁
 224   5                                                              delayNs = 6;
 225   5                                                              if(curtime.min >= 60)curtime.min = 59;
 226   5                                                              break;
 227   5                                              case 3: curtime.sec--;//逆时针减
 228   5                                                              delayN33ms = 10;//333毫秒,调节时闪烁
 229   5                                                              delayNs = 6;
 230   5                                                              if(curtime.sec >= 60)curtime.sec = 59;
 231   5                                                              break;
 232   5                                              default:break;
 233   5                                      }
 234   4                              }
 235   3      //                      while(BMSW1 == BMSW2);
 236   3                              bmsw_temp = BMSW1;
 237   3                      }
 238   2                      if(!BMSW)
 239   2                      {
 240   3                              stat++;
 241   3                              if(stat > 3)stat = 0;
C51 COMPILER V7.50   MAIN                                                                  01/23/2007 22:31:40 PAGE 5   

 242   3                              wink = 0;//调时闪烁标记
 243   3                              disptime.hour = 24;//为了防止退出调节时间时显示空
 244   3                              disptime.min = 60;
 245   3                              disptime.sec = 60;
 246   3      /*                      switch(stat)
 247   3                              {
 248   3                                      case 1: write_char(1,'H');//第一位显示H代表当前调节时
 249   3                                                      delayNs = 6;
 250   3                                                      break;
 251   3                                      case 2: write_char(1,'M');//第一位显示M代表当前调节分
 252   3                                                      delayNs = 6;
 253   3                                                      break;
 254   3                                      case 3: write_char(1,'S');//第一位显示S代表当前调节秒
 255   3                                                      delayNs = 6;
 256   3                                                      break;
 257   3                                      default:write_char(1,37);//第一位全显代表当前不在调节状态
 258   3                                                      break;
 259   3                              }*/
 260   3                      }
 261   2                      while(!BMSW){delayNs = 6;delayN33ms = 0;}
 262   2                      if(!delayN33ms && stat)
 263   2                      {
 264   3                              wink = !wink;
 265   3                              delayN33ms = 10;//333毫秒,调节时闪烁
 266   3                              switch(stat)
 267   3                              {
 268   4                                      case 1: if(wink)
 269   4                                                      {       disptime.hour = 24;}
 270   4                                                      else
 271   4                                                      {
 272   5                                                              write_char(3,10);
 273   5                                                              write_char(4,10);
 274   5                                                      }
 275   4                                                      break;
 276   4                                      case 2: if(wink)
 277   4                                                      {       disptime.min = 60;}
 278   4                                                      else
 279   4                                                      {
 280   5                                                              write_char(5,10);
 281   5                                                              write_char(6,10);
 282   5                                                      }
 283   4                                                      break;
 284   4                                      case 3: if(wink)
 285   4                                                      {       disptime.sec = 60;}
 286   4                                                      else
 287   4                                                      {
 288   5                                                              write_char(7,10);
 289   5                                                              write_char(8,10);
 290   5                                                      }
 291   4                                                      break;
 292   4                                      default:break;
 293   4                              }
 294   3                      }
 295   2                      if(!delayNs)
 296   2                      {
 297   3                              stat = 0;
 298   3                              disptime.hour = 24;//为了退出调节时间时刷新显示
 299   3                              disptime.min = 60;
 300   3                              disptime.sec = 60;
 301   3                      }
 302   2              }
 303   1              while(1);
C51 COMPILER V7.50   MAIN                                                                  01/23/2007 22:31:40 PAGE 6   

 304   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    683    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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