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

📄 clock.lst

📁 用1片164动态驱动6个数码管
💻 LST
字号:
C51 COMPILER V8.02   CLOCK                                                                 07/21/2008 17:28:25 PAGE 1   


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

line level    source

   1          //时钟实验
   2          //功能:第一,二位数码管显示时
   3          //三,四位数码管显示分
   4          //五,六位数码管显示秒
   5          #include <reg52.h>
   6          #define const_time 400;   //100x5ms=500ms=0.5s
   7          unsigned int buff_time;  //buffer for storing the counts
   8          unsigned char data time;
   9          sbit light0 = P1^0; //the light0 bit
  10          sbit DAT164 =P0^6;  //the bit of HC164's data
  11          sbit CLK164 =P0^7;  //the bit of HC164's clock
  12          sbit onebit=P0^0;   //one of the "8bit led" 
  13          sbit twobit=P0^1; 
  14          sbit thrbit=P0^2;   //one of the "8bit led" 
  15          sbit foubit=P0^3; 
  16          sbit fivbit=P0^4;   //one of the "8bit led" 
  17          sbit sixbit=P0^5; 
  18          
  19          bit LED_Buffer;
  20          unsigned char data wei;
  21          unsigned char data hour;
  22          unsigned char data min;
  23          unsigned char data sec;
  24          unsigned char data hour_hi;
  25          unsigned char data min_hi;
  26          unsigned char data sec_hi;
  27          unsigned char data hour_low;
  28          unsigned char data min_low;
  29          unsigned char data sec_low;
  30          
  31          unsigned char data LED;
  32          code unsigned char LEDMAP[] =  // define the table of the "8bit led" 
  33          {
  34          0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E
  35          };
  36          
  37          void send164() //the function of send the data to the "74HC164"
  38          {
  39   1               unsigned char data j;
  40   1               for (j = 0; j < 8; j++) 
  41   1                 {
  42   2                   if (LED & 0x80) DAT164 = 1; 
  43   2                               else DAT164 = 0;
  44   2                    CLK164 = 1;
  45   2                    CLK164 = 0;
  46   2                    LED <<= 1;
  47   2             } 
  48   1      }
  49          
  50          void main() 
  51          { 
  52   1                TMOD=0x01;   //set the timer's mode
  53   1                TH0=(65536-2500)/256; //fill the timer0's higher register 
  54   1                TL0=(65536-2500)%256; //fill the timer0's lower register
  55   1                IE=0x82;   //EA=1,IT0=1
C51 COMPILER V8.02   CLOCK                                                                 07/21/2008 17:28:25 PAGE 2   

  56   1                LED_Buffer=0;
  57   1                light0=0;
  58   1                buff_time=const_time;
  59   1                TR0=1;     //start the timer!
  60   1                hour=0;
  61   1                min=0;
  62   1                sec=0;
  63   1                while(1)
  64   1                {
  65   2                   light0=LED_Buffer;
  66   2            }  
  67   1      }
  68          
  69          
  70          void T0Int() interrupt 1 using 3
  71          {
  72   1               TH0=(65536-2500)/256; //fill the timer0's higher register 
  73   1               TL0=(65536-2500)%256; //fill the timer0's lower register 
  74   1               buff_time--;
  75   1               wei=buff_time%6;
  76   1               hour_hi=hour/10;
  77   1               hour_low=hour%10;
  78   1               min_hi=min/10;
  79   1               min_low=min%10;
  80   1               sec_hi=sec/10;
  81   1               sec_low=sec%10;
  82   1      
  83   1           switch(wei)
  84   1              {
  85   2               case 5:
  86   2               onebit=0;   
  87   2               twobit=1; 
  88   2               thrbit=1;   
  89   2               foubit=1; 
  90   2               fivbit=1;  
  91   2               sixbit=1; 
  92   2               LED=LEDMAP[hour_hi];
  93   2               send164();
  94   2               break;
  95   2              
  96   2               case 4:
  97   2                       onebit=1;   
  98   2                       twobit=0; 
  99   2                       thrbit=1;   
 100   2                       foubit=1; 
 101   2                       fivbit=1;  
 102   2                       sixbit=1; 
 103   2                       LED=LEDMAP[hour_low];
 104   2                       LED=LED&0x7f;
 105   2                       send164();
 106   2                       break;
 107   2              
 108   2               case 3:
 109   2                       onebit=1;   
 110   2                       twobit=1; 
 111   2                       thrbit=0;   
 112   2                       foubit=1; 
 113   2                       fivbit=1;  
 114   2                       sixbit=1; 
 115   2                       LED=LEDMAP[min_hi];
 116   2                       send164();
 117   2                       break;
C51 COMPILER V8.02   CLOCK                                                                 07/21/2008 17:28:25 PAGE 3   

 118   2              
 119   2              //////////////
 120   2              case 2:
 121   2                       onebit=1;   
 122   2                       twobit=1; 
 123   2                       thrbit=1;   
 124   2                       foubit=0; 
 125   2                       fivbit=1;  
 126   2                       sixbit=1; 
 127   2                       LED=LEDMAP[min_low];
 128   2                       LED=LED&0x7f;
 129   2                       send164();
 130   2                       break;
 131   2              
 132   2               case 1:
 133   2                       onebit=1;   
 134   2                       twobit=1; 
 135   2                       thrbit=1;   
 136   2                       foubit=1; 
 137   2                       fivbit=0;  
 138   2                       sixbit=1; 
 139   2                       LED=LEDMAP[sec_hi];
 140   2                       send164();
 141   2                       break;
 142   2              
 143   2               case 0:
 144   2                       onebit=1;   
 145   2                       twobit=1; 
 146   2                       thrbit=1;   
 147   2                       foubit=1; 
 148   2                       fivbit=1;  
 149   2                       sixbit=0; 
 150   2                       LED=LEDMAP[sec_low];
 151   2                       send164();
 152   2                       break;
 153   2              }
 154   1              
 155   1                
 156   1               if (buff_time==0)
 157   1                {
 158   2                       buff_time=const_time; // refill the buffer
 159   2                       LED_Buffer=!LED_Buffer;  // opposite the LED display
 160   2                       sec++;
 161   2                       if (sec==60) 
 162   2                         {
 163   3                                      min++;
 164   3                                      sec=0;
 165   3                                      if (min==60)
 166   3                                         {
 167   4                                                      hour++;
 168   4                                                      min=0;
 169   4                                                      
 170   4                                                      if (hour==60)
 171   4                                                      hour=0;
 172   4                                          }
 173   3                  
 174   3                      }
 175   2          }
 176   1      
 177   1      }
 178          

C51 COMPILER V8.02   CLOCK                                                                 07/21/2008 17:28:25 PAGE 4   


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    348    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     14    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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