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

📄 keil.lst

📁 基于单片机的电子钟c语言实现
💻 LST
字号:
C51 COMPILER V7.50   KEIL                                                                  04/02/2009 15:13:15 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE KEIL
OBJECT MODULE PLACED IN keil.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE keil.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include <absacc.h>
   3          #define unit unsigned int
   4          #define uchar unsigned char
   5          
   6          /*定义各管脚*/
   7          sbit P10=P1^0;         /*调整时钟的时位*/
   8          sbit P11=P1^1;         /*调整时钟的分位*/
   9          sbit L0=P1^4;          /*时钟正常运行指示灯,1秒亮一次*/
  10          sbit L1=P1^5;          /*调整时钟的时位指示灯,调整时,灯亮*/                
  11          sbit L2=P1^6;          /*调整时钟的分位指示灯,调整时,灯亮*/
  12           
  13          sbit P20=P2^0;         /*给时钟分位低位送上升沿*/
  14          sbit P21=P2^1;         /*给时钟分位高位送上升沿*/
  15          sbit P22=P2^2;         /*给时钟时位低位送上升沿*/
  16          sbit P23=P2^3;         /*给时钟时位高位送上升沿*/
  17          sbit P27=P2^7;         /*用于配合中断消抖,增强抗干扰能力*/
  18          
  19          uchar data BUFFER[2]={00,12};           /*显示缓冲区(依次为低位,高位)*/
  20          uchar data CLOCK[4]={0,0,0,12};     /*存放时钟时间(依次为百分秒,秒,分和时位)*/
  21          uchar data BUFFER_A[2]={0,0};       /*存放调整时钟时间(分和时位)*/
  22          uchar n;                            /*用来确定时钟的状态,0正常运行,1小时调整,2分钟调整,3数据更新*/
  23          uchar m;                            /*用来表明定时器是否到了1S,若一秒到了,则刷新显示数据*/
  24                  
  25          /*数码管显示编码"0"-"9","A","-"*/
  26          uchar code TABLE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  27          
  28          
  29          void display(void)
  30          {       
  31   1      
  32   1              uchar disp;             
  33   1          disp=BUFFER[0]%10;          
  34   1              P20=0;
  35   1              P0=TABLE[disp];
  36   1              P20=1;P20=0;
  37   1              disp=BUFFER[0]/10;      
  38   1              P21=0;
  39   1              P0=TABLE[disp];
  40   1              P21=1;P21=0;
  41   1              disp=BUFFER[1]%10;              
  42   1              P22=0;
  43   1              P0=TABLE[disp];
  44   1              P22=1;P22=0;
  45   1              disp=BUFFER[1]/10;      
  46   1              P23=0;
  47   1              P0=TABLE[disp];
  48   1              P23=1;P23=0;
  49   1      }
  50          
  51          
  52          
  53          void timer0(void)  interrupt 1 using 1
  54          {
  55   1              /*重置定时初值*/
C51 COMPILER V7.50   KEIL                                                                  04/02/2009 15:13:15 PAGE 2   

  56   1          TH0=0x3c; TL0=0xbc;    /*定时50MS,20次为一分钟*/
  57   1      
  58   1      
  59   1      
  60   1              
  61   1              /*时钟处理*/
  62   1              CLOCK[0]=CLOCK[0]+1;
  63   1              if (CLOCK[0]==10)
  64   1                      {
  65   2                          L0=!L0;          /*L0为正常运行指示灯,一秒闪烁一次*/
  66   2                      }
  67   1              if (CLOCK[0]==20)
  68   1                      {       
  69   2                      L0=!L0;
  70   2                          CLOCK[0]=0;
  71   2                          CLOCK[1]=CLOCK[1]+1;
  72   2                      
  73   2                          if (CLOCK[1]==60) 
  74   2                          {
  75   3                           CLOCK[1]=0;
  76   3                               m=1;
  77   3                       CLOCK[2]=CLOCK[2]+1;
  78   3                       if (CLOCK[2]==60)
  79   3                                   {
  80   4                                           CLOCK[2]=0;
  81   4                               CLOCK[3]=CLOCK[3]+1;
  82   4                                           if (CLOCK[3]==24)
  83   4                                           {  
  84   5                                               CLOCK[3]=0;    
  85   5                                           }
  86   4                                   }
  87   3                           }
  88   2                  }   
  89   1      }
  90          void main()
  91          {
  92   1              EA=1; ET0=1;IT1=1;
  93   1              TMOD=0x01;                              /*T0方式1计时*/
  94   1              TH0=0x3c; TL0=0xbc; 
  95   1              P20=0;P21=0;P22=0;P23=0;
  96   1              TR0=1;
  97   1              display();
  98   1              n=0;
  99   1              m=1;
 100   1          
 101   1      for(;;)
 102   1      {
 103   2      
 104   2              if(n==1)    /*小时,分钟调整,P1.0口为时调整,P1.1口为分调整*/
 105   2              {
 106   3              if(P10==0)
 107   3                      {
 108   4                           delay();   /*延时10MS去抖*/
*** WARNING C206 IN LINE 108 OF KEIL.C: 'delay': missing function-prototype
 109   4                           if (P10==0)
 110   4                       {      
 111   5                               EX1=1;TR0=0;
 112   5                                   while (!P10);   /*如果P10发生翻转,则时加1*/
 113   5                           CLOCK[3]=CLOCK[3]+1;
 114   5                                   if (CLOCK[3]==24)   CLOCK[3]=0;
 115   5                                   BUFFER_A[1]=CLOCK[3];
 116   5                                   BUFFER_A[0]=CLOCK[2];
C51 COMPILER V7.50   KEIL                                                                  04/02/2009 15:13:15 PAGE 3   

 117   5                                   display_t();
*** WARNING C206 IN LINE 117 OF KEIL.C: 'display_t': missing function-prototype
 118   5                               }
 119   4                      }
 120   3              
 121   3      
 122   3      
 123   3                      if(P11==0)
 124   3                      {
 125   4                          delay();
 126   4                          if (P11==0)
 127   4                          {   
 128   5                              EX1=1;TR0=0;
 129   5                                  while (!P11);
 130   5                                  CLOCK[2]=CLOCK[2]+1;
 131   5                                  if (CLOCK[2]==60)   CLOCK[2]=0;
 132   5                                  BUFFER_A[0]=CLOCK[2];
 133   5                      BUFFER_A[1]=CLOCK[3];   
 134   5                              display_t();
 135   5      
 136   5                          }
 137   4                       }
 138   3              }
 139   2              if(n==2)
 140   2              {
 141   3                      n=0;
 142   3                      BUFFER[0]=CLOCK[2];
 143   3                      BUFFER[1]=CLOCK[3];
 144   3                      display();
 145   3                      TH0=0x3c; TL0=0xb0; /*如果更新数据,则重新开始计时下一50MS*/
 146   3                      TR0=1;
 147   3                      CLOCK[0]=0;CLOCK[1]=0;
 148   3                      m=1;
 149   3              }
 150   2              if (m==1)
 151   2              {       
 152   3                      m=0;
 153   3              
 154   3                      EX1=1;  
 155   3                      BUFFER[0]=CLOCK[2];
 156   3                      BUFFER[1]=CLOCK[3];     
 157   3                      display();      
 158   3                              
 159   3              }
 160   2      }
 161   1      }
 162          
 163          
 164          
 165          display_t(void)
 166          {       
 167   1      
 168   1                      uchar disp_t;           
 169   1                      disp_t=BUFFER_A[0]%10;          
 170   1                      P20=0;
 171   1                      P0=TABLE[disp_t];
 172   1                      P20=1;P20=0;
 173   1                      disp_t=BUFFER_A[0]/10;  
 174   1                      P21=0;
 175   1                      P0=TABLE[disp_t];
 176   1                      P21=1;P21=0;
 177   1                  disp_t=BUFFER_A[1]%10;              
C51 COMPILER V7.50   KEIL                                                                  04/02/2009 15:13:15 PAGE 4   

 178   1                      P22=0;
 179   1                      P0=TABLE[disp_t];
 180   1                      P22=1;P22=0;
 181   1                      disp_t=BUFFER_A[1]/10;  
 182   1                      P23=0;
 183   1                      P0=TABLE[disp_t];
 184   1                      P23=1;P23=0;
 185   1      }
 186           delay(void)
 187          {       
 188   1              uchar a,b;
 189   1              for(a=100;a>0;a--);
 190   1              for(b=100;b>0;b--);
 191   1      }
 192                  
 193                          
 194                          
 195          void intsvr1(void)  interrupt 2 using 3
 196          {
 197   1        delay(); /*延时十毫秒,用于消抖*/
 198   1        if (P27==0)
 199   1        {
 200   2       
 201   2        n=n+1;
 202   2        TR0=0;
 203   2        }
 204   1              
 205   1      }
 206                  
 207          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    394    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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