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

📄 clock.lst

📁 该项目在Keil下工作和在PROTEUS测试成功。时钟是用微控制器和3個 2x7段LED 。
💻 LST
字号:
C51 COMPILER V8.09   CLOCK                                                                 12/19/2008 19:37:53 PAGE 1   


C51 COMPILER V8.09, COMPILATION OF MODULE CLOCK
OBJECT MODULE PLACED IN clock.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE clock.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <REG51.h>
   2          #define SECOND_1 0;
   3          #define SECOND_2 1;
   4          #define MINUTE_1 2;
   5          #define MINUTE_2 3;
   6          #define HOUR_1 4;
   7          #define HOUR_2 5;
   8          unsigned char code displayCode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x40};
   9          unsigned long data cnt;
  10          unsigned long data redisplay;
  11          unsigned int data second;
  12          unsigned int data minute;
  13          unsigned int data hour;
  14          unsigned int data type;
  15          unsigned int data displayData;
  16          sbit e0 = P3^2;
  17          sbit add=P1^0;
  18          sbit second_1=P2^0;
  19          sbit second_2=P2^1;
  20          sbit minute_1=P2^2;
  21          sbit minute_2=P2^3;
  22          sbit hour_1=P2^4;
  23          sbit hour_2=P2^5;
  24          void displayWhenChange(bit data changeType);
  25          void display();
  26          void delay_E(long data time);
  27          void timing();
  28          void delay(long data time);
  29          void main(){
  30   1              TH0=56;
  31   1              TL0=56;
  32   1              TMOD=TMOD|0x02;
  33   1              TMOD=TMOD&0xF2;
  34   1              PX0=1;
  35   1              PT0=0;
  36   1              EX0=1;
  37   1              EA=1;
  38   1              ET0=1;
  39   1              TR0=1;
  40   1              cnt=0;
  41   1              second_1=1;
  42   1              second_2=1;
  43   1              minute_1=1;
  44   1              minute_2=1;
  45   1              hour_1=1;
  46   1              hour_2=1;
  47   1              second=59;
  48   1              minute=10;
  49   1              redisplay=0;
  50   1              hour=9;
  51   1              type=SECOND_1;
  52   1              displayData=second;
  53   1              while(1){
  54   2              
  55   2              }       
C51 COMPILER V8.09   CLOCK                                                                 12/19/2008 19:37:53 PAGE 2   

  56   1      }
  57          void ex0() interrupt 0 using 1{
  58   1              int data changeFlag=0;
  59   1              EA=0;
  60   1              delay_E(2000);  
  61   1              while(1){
  62   2                  
  63   2                      delay(100);             
  64   2                      if(e0==0){              
  65   3                              
  66   3                              changeFlag=changeFlag+1;
  67   3                              
  68   3                              delay_E(2000);
  69   3                      }
  70   2                      if(changeFlag==0)displayWhenChange(0);
  71   2                      else if(changeFlag==1)displayWhenChange(1);
  72   2                      else break;             
  73   2                      
  74   2                      if(add==0){
  75   3                              
  76   3                              switch(changeFlag){
  77   4                                      case 0:
  78   4                                              minute=(minute+1)%60;
  79   4                                              break;
  80   4                                      case 1:
  81   4                                              hour=(++hour)%24;
  82   4                                              break;
  83   4                              }
  84   3                      
  85   3                      delay_E(2000);
  86   3                      }
  87   2              }
  88   1              delay_E(2000);
  89   1              EA=1;
  90   1      }
  91          void t0() interrupt 1 using 2{
  92   1               if(1){
  93   2               display();
  94   2               
  95   2               }
  96   1               
  97   1               timing();
  98   1              
  99   1      }
 100          
 101          void display(){
 102   1              switch(type){
 103   2                      case 0: 
 104   2                              hour_2=1;               
 105   2                              P0=displayCode[displayData%10];
 106   2                              second_1=0;
 107   2                              type=SECOND_2;                          
 108   2                              break;
 109   2                      case 1:                 
 110   2                              second_1=1;
 111   2                              P0=displayCode[displayData/10];
 112   2                              second_2=0;
 113   2                              type=MINUTE_1;
 114   2                              displayData=minute;     
 115   2                              break;
 116   2                      case 2:
 117   2                              second_2=1;
C51 COMPILER V8.09   CLOCK                                                                 12/19/2008 19:37:53 PAGE 3   

 118   2                              P0=displayCode[displayData%10];
 119   2                              minute_1=0;
 120   2                              type=MINUTE_2;          
 121   2                              break;
 122   2                      case 3:
 123   2                              minute_1=1;
 124   2                              P0=displayCode[displayData/10];
 125   2                              minute_2=0;
 126   2                              type=HOUR_1;
 127   2                              displayData=hour;
 128   2                              break;
 129   2                      case 4:
 130   2                              minute_2=1;
 131   2                              P0=displayCode[displayData%10];
 132   2                              hour_1=0;
 133   2                              type=HOUR_2;
 134   2                              break;
 135   2                      case 5:
 136   2                              hour_1=1;
 137   2                              P0=displayCode[displayData/10];
 138   2                              hour_2=0;
 139   2                              type=SECOND_1;
 140   2                              displayData=second;
 141   2                              break;
 142   2                      default:
 143   2                              break;                  
 144   2              }
 145   1      }
 146          void timing(){
 147   1              if((cnt++)==4999){
 148   2                      if(second==59){
 149   3                              if(minute==59){
 150   4                                      hour=(++hour)%24;
 151   4                                      minute=0;
 152   4                              }
 153   3                              else minute++;
 154   3                              second=0;
 155   3                      }
 156   2                      else second++;
 157   2                      cnt=0;
 158   2              }       
 159   1      }
 160          void displayWhenChange(bit data changeType){
 161   1               bit data flag=0;
 162   1               if((redisplay++)>=30){
 163   2                      flag=1;
 164   2               }
 165   1      
 166   1              if (changeType==0){
 167   2                              switch(type){
 168   3                              case 0: 
 169   3                                      hour_2=1;               
 170   3                                      P0=displayCode[displayData%10];
 171   3                                      second_1=0;
 172   3                                      type=SECOND_2;                          
 173   3                                      break;
 174   3                              case 1:                 
 175   3                                      second_1=1;
 176   3                                      P0=displayCode[displayData/10];
 177   3                                      second_2=0;
 178   3                                      type=MINUTE_1;
 179   3                                      displayData=minute;     
C51 COMPILER V8.09   CLOCK                                                                 12/19/2008 19:37:53 PAGE 4   

 180   3                                      break;
 181   3                              case 2:
 182   3                                      second_2=1;
 183   3                                      if(flag){                               
 184   4                                              P0=displayCode[displayData%10];
 185   4                                              minute_1=0;
 186   4                                              flag=0;                 
 187   4                                              type=MINUTE_2;
 188   4                                              redisplay=0;
 189   4                                      }
 190   3                                      else {
 191   4                                              type=HOUR_1;
 192   4                                              displayData=hour;
 193   4                                      }
 194   3                                      
 195   3                                      break;
 196   3                              case 3:
 197   3                                      minute_1=1;
 198   3                                      P0=displayCode[displayData/10];
 199   3                                      minute_2=0;
 200   3                                      type=HOUR_1;
 201   3                                      displayData=hour;
 202   3                                      break;
 203   3                              case 4:
 204   3                                      minute_2=1;
 205   3                                      P0=displayCode[displayData%10];
 206   3                                      hour_1=0;
 207   3                                      type=HOUR_2;
 208   3                                      break;
 209   3                              case 5:
 210   3                                      hour_1=1;
 211   3                                      P0=displayCode[displayData/10];
 212   3                                      hour_2=0;
 213   3                                      type=SECOND_1;
 214   3                                      displayData=second;
 215   3                                      break;
 216   3                              default:
 217   3                                      break;                  
 218   3                      }
 219   2                      }
 220   1                      if(changeType==1){
 221   2                              switch(type){
 222   3                      case 0: 
 223   3                              hour_2=1;               
 224   3                              P0=displayCode[displayData%10];
 225   3                              second_1=0;
 226   3                              type=SECOND_2;                          
 227   3                              break;
 228   3                      case 1:                 
 229   3                              second_1=1;
 230   3                              P0=displayCode[displayData/10];
 231   3                              second_2=0;
 232   3                              type=MINUTE_1;
 233   3                              displayData=minute;     
 234   3                              break;
 235   3                      case 2:
 236   3                              second_2=1;
 237   3                              P0=displayCode[displayData%10];
 238   3                              minute_1=0;
 239   3                              type=MINUTE_2;          
 240   3                              break;
 241   3                      case 3:
C51 COMPILER V8.09   CLOCK                                                                 12/19/2008 19:37:53 PAGE 5   

 242   3                              minute_1=1;
 243   3                              P0=displayCode[displayData/10];
 244   3                              minute_2=0;
 245   3                              type=HOUR_1;
 246   3                              displayData=hour;
 247   3                              break;
 248   3                      case 4:
 249   3                              minute_2=1;
 250   3                              if(flag){
 251   4                              P0=displayCode[displayData%10];
 252   4                              hour_1=0;
 253   4                              type=HOUR_2;
 254   4                              redisplay=0;
 255   4                              }
 256   3                              else{
 257   4                                      type=SECOND_1;
 258   4                                      displayData=second;
 259   4                              }
 260   3                              break;
 261   3                      case 5:
 262   3                              hour_1=1;
 263   3                              P0=displayCode[displayData/10];
 264   3                              hour_2=0;
 265   3                              type=SECOND_1;
 266   3                              displayData=second;
 267   3                              break;
 268   3                      default:
 269   3                              break;                  
 270   3              }
 271   2                                      
 272   2                      }               
 273   1      }
 274          
 275          void delay(long data time){
 276   1              long data i=0;
 277   1              for(;i<time;i++);       
 278   1      }
 279          void delay_E(long data time){
 280   1              long data i=0;
 281   1              for(;i<time;i++)display();
 282   1      }


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