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

📄 text1.lst

📁 proteus下仿真的电子钟
💻 LST
字号:
C51 COMPILER V8.02   TEXT1                                                                 04/18/2006 09:24:23 PAGE 1   


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

line level    source

   1          #include <AT89X52.H>
   2          unsigned char code SEG7[11]={0xC0,/*0*/
   3                                                           0xF9,/*1*/
   4                                                           0xA4,/*2*/
   5                                       0xB0,/*3*/
   6                                       0x99,/*4*/
   7                                       0x92,/*5*/
   8                                       0x82,/*6*/
   9                                       0xF8,/*7*/
  10                                       0x80,/*8*/
  11                                       0x90,/*9*/
  12                                                                   0xbf,/*-*/
  13                                                                   };
  14          
  15          unsigned short int tcount;
  16          
  17          struct time
  18          {
  19                  unsigned char second;
  20                  unsigned char minute;
  21                  unsigned char hour;
  22          }time1;
  23          
  24          void delay(k)
  25          unsigned int k;           //延时子程序
  26          {
  27   1              unsigned char j;
  28   1              while((k--)!=0)
  29   1              for(j=0;j<125;j++);
  30   1      }
  31          
  32          TimeUpDown(n,x,y)                //时钟调整子程序
  33          unsigned char n,x,y;
  34          {
  35   1              if(P1_1==0)
  36   1              {
  37   2                      delay(50);
  38   2                      if(P1_1==0)
  39   2                      {
  40   3                              n++;
  41   3                              if(n==x)
  42   3                              n=0;
  43   3                              while(P1_1==0);
  44   3                      }
  45   2              }
  46   1      
  47   1              if(P1_2==0)
  48   1              {
  49   2                      delay(50);
  50   2                      if(P1_2==0)
  51   2                      {
  52   3                              if(n==0)
  53   3                              n=y;
  54   3                              else
  55   3                              n--;                                            
C51 COMPILER V8.02   TEXT1                                                                 04/18/2006 09:24:23 PAGE 2   

  56   3                              while(P1_2==0);
  57   3                      }
  58   2              }
  59   1              return n;
  60   1      }                               
  61          
  62          void display(DisSecondH,DisSecondL,DisMinutH,DisMinutL,DisHourH,DisHourL)
  63          unsigned char DisSecondH,DisSecondL,DisMinutH,DisMinutL,DisHourH,DisHourL;                //显示子程序
  64          {       
  65   1              P0=SEG7[DisSecondH];    //显示秒钟的十位
  66   1              P2=0x80;
  67   1              delay(2);
  68   1      
  69   1              P0=SEG7[DisSecondL];    //显示分钟的个位
  70   1              P2=0x40;
  71   1              delay(2);
  72   1      
  73   1              P0=0xbf;                        //显示-
  74   1              P2=0x20;
  75   1              delay(2);
  76   1              
  77   1              P0=SEG7[DisMinutH];             //显示秒钟的十位
  78   1              P2=0x10;
  79   1              delay(2);
  80   1      
  81   1              P0=SEG7[DisMinutL];             //显示分钟的个位
  82   1              P2=0x08;
  83   1              delay(2);
  84   1              
  85   1              P0=0xbf;                                //显示-
  86   1              P2=0x04;
  87   1              delay(2);
  88   1              
  89   1              P0=SEG7[DisHourH];              //显示小时的个位
  90   1              P2=0x02;
  91   1              delay(2);
  92   1      
  93   1              if(DisHourL==0)
  94   1              P0=0xff;
  95   1              else
  96   1              P0=SEG7[DisHourL];              //显示小时的十位
  97   1              P2=0x01;
  98   1              delay(2);
  99   1      }
 100          
 101          main()
 102          {
 103   1               unsigned char Flag;
 104   1              TMOD = 0x01; 
 105   1              TH0 = (65536-50000)/256; 
 106   1              TL0 = (65536-50000)%256; 
 107   1              ET0 = 1; 
 108   1              EA = 1;
 109   1              
 110   1      
 111   1              while(1)
 112   1              {       
 113   2                      if(P1_0 == 0)                                     //设置标志位 Flag
 114   2                      {
 115   3                              delay(50);
 116   3                              if(P1_0 == 0)
 117   3                              {
C51 COMPILER V8.02   TEXT1                                                                 04/18/2006 09:24:23 PAGE 3   

 118   4                                      TR0 = 0;
 119   4                                      Flag++;
 120   4                                      if(Flag > 3)
 121   4                                      Flag = 0;
 122   4                              }
 123   3                              while(P1_0 == 0);       
 124   3                      }
 125   2      
 126   2                      switch(Flag)
 127   2                      {
 128   3                              case 0:
 129   3                                      TR0=1; 
 130   3                                      display(time1.second%10,time1.second/10,time1.minute%10,time1.minute/10,time1.hour%10,time1.hour/10);
 131   3                                      break;
 132   3      
 133   3                              case 1:                                                                  //时钟小时调整
 134   3                                      TR0=0;                  
 135   3                                  time1.hour=TimeUpDown(time1.hour,24,23);
 136   3                                      display(10,10,10,10,time1.hour%10,time1.hour/10);
 137   3                                      break;
 138   3      
 139   3                              case 2:                                                                  //时钟分钟调整
 140   3                                      time1.minute=TimeUpDown(time1.minute,60,59);
 141   3                                      display(10,10,time1.minute%10,time1.minute/10,10,10);                                   
 142   3                                      break;
 143   3      
 144   3                              case 3:                                                                  //时钟秒调整
 145   3                                      time1.second=TimeUpDown(time1.second,60,59);
 146   3                                      display(time1.second%10,time1.second/10,10,10,10,10);   
 147   3                                      break;
 148   3      
 149   3                              default:
 150   3                                      break;
 151   3                      }
 152   2      
 153   2              }
 154   1      }
 155                  
 156                          
 157          
 158            void t0(void) interrupt 1 using 0   
 159          
 160          {
 161   1              
 162   1              tcount++; 
 163   1              if(tcount==10) 
 164   1              { 
 165   2                      tcount=0; 
 166   2                  time1.second++;
 167   2              }
 168   1      
 169   1              if (time1.second>=60)
 170   1              {
 171   2                       time1.second=0;
 172   2                       time1.minute++;
 173   2              }
 174   1      
 175   1              if (time1.minute>=60)
 176   1              {
 177   2                      time1.minute=0;
 178   2                      time1.hour++;
 179   2              }
C51 COMPILER V8.02   TEXT1                                                                 04/18/2006 09:24:23 PAGE 4   

 180   1      
 181   1              if(time1.hour>=24)
 182   1                      time1.hour=0;
 183   1      
 184   1              TH0=(65536-50000)/256;
 185   1              TL0=(65536-50000)%256;
 186   1      }       
 187          
 188          


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