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

📄 main.lst

📁 <基于单片机的数字钟设计> 个人做的毕业设计,带Protel图,源代码用proteus软件仿真通过,附有毕设论文
💻 LST
📖 第 1 页 / 共 2 页
字号:
 148   4                                      Clock[DPMIN]=0;                         //分位清0 
 149   4                                      Clock[DPHOUR]++;                                        //时位加1
 150   4                              if(Clock[DPHOUR]==24)                           //24小时到
 151   4                              {                                                                                       
 152   5                                      Clock[DPHOUR]=0;                                //时位清0       
 153   5                              }                                  
 154   4                      }  
 155   3                      } 
 156   2              }
 157   1      }
 158          void bell(void)
 159          {       
 160   1              BELL=1;delay();delay();delay();delay();delay();
 161   1              BELL=0;delay();delay();delay();delay();delay();
 162   1              BELL=1;delay();delay();delay();delay();delay();
 163   1              BELL=0;delay();delay();delay();delay();delay();
 164   1              BELL=1;
 165   1      }
 166          void intsrl(void) interrupt 0 using 2   //外中断IT0中断服务子函数,K3按键触发
 167          {                        
 168   1              SwitchClockMode=1;                                                                      //置位切换标志位
 169   1              if( ClockMode == CLOCKMODE )                                            //如果在时钟模式下运行
 170   1              {       
 171   2                      ClockMode=1;                                                                    //转到秒表模式下运行
 172   2              }
 173   1              else
 174   1              {
 175   2                      ClockMode= CLOCKMODE;
 176   2              }                                                                                                 
 177   1      }
 178          void time1(void) interrupt 3 using 2
 179          {       
C51 COMPILER V7.50   MAIN                                                                  06/06/2007 14:25:55 PAGE 4   

 180   1      
 181   1              TH1=0Xe0;                
 182   1              TL1=0x10;                                                                               //计时器放入预置时间,大概10毫秒
 183   1              Watch[WHMILSEC]++;                                      //毫秒位减1      
 184   1              if(Watch[WHMILSEC]==99)                                 //0.1秒到 
 185   1              {                                                                                                  
 186   2                      Watch[WHMILSEC]=0;                              //毫秒位清0 
 187   2                      Watch[WHSEC]++;                                         //秒位减1 
 188   2                      if(Watch[WHSEC]==99)                                    //1秒到 
 189   2                      {   Watch[WHSEC]=0;                                               
 190   3                              bell();                                                                 //报警
 191   3                      }  
 192   2              }
 193   1      }        
 194          void time2(void) interrupt 5 using 2                    //定时器T2中断服务子函数         
 195          {       
 196   1              TF2=0;
 197   1              TH2=0Xe0;                
 198   1              TL2=0x00;                                                                               //计时器2放入预置时间,大概10毫秒
 199   1              switch(--Refersh)
 200   1              {       case 0:P2=32;break;        
 201   2                      case 1:P2=16;break;        
 202   2                      case 2:P2=8;break;         
 203   2                      case 3:P2=4;break;         
 204   2                      case 4:P2=2;break;
 205   2                      case 5:P2=1;break;         
 206   2              }
 207   1              P0=TABLE[Buffer[Refersh]];                                              //输入要显示数据
 208   1              if(Refersh==0) Refersh=6; 
 209   1      
 210   1                                                      
 211   1      }
 212          void addTime(uchar mode)                                        //加1子函数     
 213          {                                       
 214   1          switch(mode)                                                //判断当前状态   
 215   1          {                                                                                                     
 216   2              case KEYMIN:                                    //时钟分调整时   
 217   2              {                                                                                                 
 218   3                      Clock[DPMIN]++;                                                 //分位加1               
 219   3                      if(Clock[DPMIN]==60)                                    //到60时           
 220   3                      {                                                                 
 221   4                              Clock[DPMIN]=0;                                 //分位清0          
 222   4                      }                                                               
 223   3              }break;  
 224   2              case KEYHOUR:                                   //时钟时调整    
 225   2              {                                                                                         
 226   3                      Clock[DPHOUR]++;                                                //时位加1
 227   3                      if(Clock[DPHOUR]==24)                                   //24小时到 
 228   3                      {        
 229   4                              Clock[DPHOUR]=0;                                //时位清0       
 230   4                      }
 231   3                      }break;
 232   2          }              
 233   1      }
 234          void clockDisplay( uchar ClockMode )                            //动态显示函数  
 235          {                                                                                                               
 236   1              if(ClockMode == CLOCKMODE)                                              //时钟模式
 237   1              {
 238   2                      Buffer[0]=Clock[DPSEC]%10;                              //数码管显示秒个位
 239   2                      Buffer[1]=Clock[DPSEC]/10;                              //秒十位 
 240   2              Buffer[2]=Clock[DPMIN]%10;                                      //分钟个位  
 241   2              Buffer[3]=Clock[DPMIN]/10;                              //分钟十位  
C51 COMPILER V7.50   MAIN                                                                  06/06/2007 14:25:55 PAGE 5   

 242   2              Buffer[4]=Clock[DPHOUR]%10;                             //小时个位      
 243   2              Buffer[5]=Clock[DPHOUR]/10;                             //小时十位  
 244   2              }
 245   1              else
 246   1              {
 247   2                      Buffer[0]=Watch[WHMILSEC]%10;                                   //数码管显示秒个位
 248   2                      Buffer[1]=Watch[WHMILSEC]/10;                                   //秒十位 
 249   2              Buffer[2]=Watch[WHSEC]%10;                                      //分钟个位  
 250   2              Buffer[3]=Watch[WHSEC]/10;                              //分钟十位  
 251   2              }
 252   1      /*
 253   1          disp=Buffer[--Refersh];                                             //刷新
 254   1              switch(Refersh)
 255   1              {       case 0:P2=32;break;        
 256   1                      case 1:P2=16;break;        
 257   1                      case 2:P2=8;break;         
 258   1                      case 3:P2=4;break;         
 259   1                      case 4:P2=2;break;
 260   1                      case 5:P2=1;break;         
 261   1              }
 262   1              P0=TABLE[disp];                                                 //输入要显示数据
 263   1              delay10ms();
 264   1              if(Refersh==0) Refersh=6; 
 265   1              */
 266   1      }
 267          uchar key(void)                                                         //键盘输入
 268          {       
 269   1              uchar i;
 270   1              i= P1&0x0f;
 271   1              if(i != 0x0f)                                                                   //键盘屏蔽
 272   1              {       
 273   2                      i= P1&0x0f;
 274   2                      if(i != 0x0f)                   
 275   2                      {       return (P1&0x0f);
 276   3                      }
 277   2              }
 278   1              else return 0;
 279   1      }
 280          
 281          void delay(void)                                                //键盘去抖延时
 282          {                
 283   1          uchar j,i;          
 284   1              for(j=0;j<=40;j++)      
 285   1                      for(i=0;i<=200;i++); 
 286   1      }                                
 287          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    663    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     15       4
   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 + -