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

📄 lesson5_c.lst

📁 6位共阴数码管
💻 LST
📖 第 1 页 / 共 2 页
字号:
 145   3                              case 11:/*B*/
 146   3                                              TH0 = 0x3C;//重新装载数据
 147   3                                              TL0 = 0xB0;
 148   3                                              ET0 = 1;//启动timer0
 149   3                                              TR0 = 1;
 150   3                                              if(uc_disp_cnt == 0)/*取消时钟设置*/
 151   3                                              {
 152   4                                                      display_led();/*显示时钟原来的值*/
 153   4                                                                                                      
 154   4                                              }
 155   3                                              uc_disp_cnt = 7;/*avoid setting incorrectly,the maximal number is 6*/
 156   3                                      break;
 157   3      
 158   3                              default:/*k = 0~9*/
 159   3                                              
 160   3                                              uc_disp_cnt++;
 161   3                                              switch(uc_disp_cnt)
 162   3                                              {
 163   4                                                      case 1:/*hr high*/
 164   4                                                                      uc_hr_cnt = k <<4;
 165   4                                                                      g_hr_disp = uc_hr_cnt;/*using OR can't mask the hr_low,so hr equal to 0*/                                               
 166   4                                                              break;
 167   4                                                      case 2:/*hr low*/
 168   4                                                                      uc_hr_cnt += k;
 169   4                                                                      uc_hr_cnt %= 0x24;//adjust the hr
 170   4                                                                      g_hr_disp = uc_hr_cnt;
 171   4                                                              break;
 172   4                                                      case 3:/*min high*/
 173   4                                                                      uc_min_cnt = k <<4;
 174   4                                                                      g_min_disp = uc_min_cnt;
 175   4                                                              break;
 176   4                                                      case 4:/*min low*/
 177   4                                                                      uc_min_cnt += k;
 178   4                                                                      uc_min_cnt %= 0x60;//adjust the min
C51 COMPILER V7.50   LESSON5_C                                                             06/13/2006 17:10:58 PAGE 4   

 179   4                                                                      g_min_disp = uc_min_cnt;
 180   4                                                              break;
 181   4                                                      case 5:/*sec high*/
 182   4                                                                      uc_sec_cnt = k<<4;
 183   4                                                                      g_sec_disp = uc_sec_cnt;
 184   4                                                              break;
 185   4                                                      case 6:/*sec low*/
 186   4                                                                      uc_sec_cnt += k;
 187   4                                                                      uc_sec_cnt %= 0x60;//adjust the sec
 188   4                                                                      g_sec_disp = uc_sec_cnt;
 189   4      
 190   4                                                                      uc_disp_cnt = 7;/*avoid setting incorrectly*/
 191   4                                                              break;
 192   4                                                      default:
 193   4                                                                      
 194   4                                                              break;
 195   4                                              }
 196   3                                      break;
 197   3                      }
 198   2              }
 199   1              else/*not release the key; continue wait*/
 200   1              {
 201   2                      delay();
 202   2                      goto lab;
 203   2              }
 204   1      
 205   1      }
 206          /*************************************************/
 207          /*
 208          name:display_led
 209          function:display the number
 210          */
 211          /*************************************************/
 212          void display_led(void)
 213          {
 214   1              g_sec_disp = uc_sec_cnt;
 215   1              g_min_disp = uc_min_cnt;
 216   1              g_hr_disp = uc_hr_cnt;
 217   1      }
 218          /*************************************************/
 219          /*
 220          name:delay
 221          function: 
 222          */
 223          /*************************************************/
 224          void delay(void)
 225          {
 226   1              unsigned char i, j;
 227   1              for(i=0;i<2;i++)
 228   1              {
 229   2                      for(j=0;j<255;j++);
 230   2              }
 231   1      }
 232          
 233          /*************************************************/
 234          /*time0_interrupt*/
 235          /*************************************************/
 236          void time0_interrupt(void) interrupt 1 using 3
 237          {
 238   1              TH0 =0x3C   ;//重新装入初值15536
 239   1              TL0 =0xB0   ;//100ms=0.1s
 240   1              
C51 COMPILER V7.50   LESSON5_C                                                             06/13/2006 17:10:58 PAGE 5   

 241   1              uc_ms_cnt++;
 242   1              if(uc_ms_cnt==10)
 243   1              {
 244   2                      uc_ms_cnt = 0;          
 245   2                      uc_sec_cnt++;
 246   2                      if((uc_sec_cnt&0x0F)>9) /*变量uc_sec_cnt为16进制数,显示应该为10进制*/
 247   2                      {
 248   3                              uc_sec_cnt += 6;        /*(uc_sec_cnt&0x0F)按位与运算*/
 249   3                      }                                               /*若没有if语句,则只能是到9以后,继续数到F才进位*/              
 250   2                      display_led();/*显示时钟*/
 251   2                      
 252   2              
 253   2                      if((uc_sec_cnt)>=0x60)
 254   2                      {
 255   3                              uc_sec_cnt = 0;
 256   3                              uc_min_cnt++;
 257   3                              if((uc_min_cnt&0x0F)>9)         /*变量uc_min_cnt为16进制数,显示应该为10进制*/
 258   3                              {
 259   4                                      uc_min_cnt += 6;                /*(uc_min_cnt&0x0F)按位与运算*/
 260   4                              }                                                       /*若没有if语句,则只能是到9以后,继续数到F才进位*/      
 261   3                              display_led();
 262   3      
 263   3                              if((uc_sec_cnt)>=0x60)
 264   3                              {
 265   4                                      uc_min_cnt = 0;
 266   4                                      uc_hr_cnt++;
 267   4      
 268   4                                      if((uc_hr_cnt&0x0F)>9)          /*变量uc_hr_cnt为16进制数,显示应该为10进制*/
 269   4                                      {
 270   5                                              uc_hr_cnt += 6;                 /*(uc_hr_cnt&0x0F)按位与运算*/
 271   5                                      }                                                       /*若没有if语句,则只能是到9以后,继续数到F才进位*/
 272   4      
 273   4                                      display_led();
 274   4                                      
 275   4                                      if((uc_hr_cnt)>=0x24)
 276   4                                      {
 277   5                                              uc_hr_cnt = 0;
 278   5                                      }
 279   4                              }
 280   3                      }
 281   2              }
 282   1      }
 283          


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