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

📄 时钟2.lst

📁 基于8051的单片机时钟源代码
💻 LST
字号:
C51 COMPILER V7.06   蔩钟2                                                                 11/01/2006 17:13:00 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 蔩钟2
OBJECT MODULE PLACED IN 时钟2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 时钟2.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

*** WARNING C500 IN LINE 1 OF 时钟2.C: MISSING DEVICE (SECURITY KEY NOT FOUND)
   1          //////////////////////////////////////////////////
   2          //                                              //           
   3          //              AT89C51时钟程序                 //
   4          //                                              //
   5          //                    作者: 吴鹏                //
   6          //                    时间;2006年2月3日        //
   7          //                              大年初六  完成  //
   8          //////////////////////////////////////////////////    
   9          #include <reg52.H>
  10          #define uchar unsigned char
  11          //typedef  unsigned char  uchar
  12          sbit P3_6=P3^6;
  13          sbit P3_7=P3^7;
  14          sbit P2_6=P2^6;
  15          sbit P2_7=P2^7;
  16          
  17          //sbit rect_wave=P1^0;
  18          //void timelover(void);
  19          
  20          uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//  0-9 十个数字显示
  21          uchar code dispbit[]={0x7f,0xbf,0xf7,0xfb,0xfd,0xfe};//   点亮 数码管
  22          uchar code rjg[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//   点亮  跑马灯
  23          uchar buffer[]={0,0,0,0,0,0};//   时钟显示置0
  24          //uchar dbuffer[]={0,0,0,0,0,0};//闹钟显示置0
  25          uchar hour,minute,second,count;
  26          uchar dhour=0,dminute=0,dsecond=0;
  27          uchar i,a,b,j=0,R,T;
  28          void ding(void) ;
  29          void delay(uchar c,uchar d)       //延时程序
  30          {for(a=c;a>0;a--)
  31   1        for(b=d;b>0;b--);
  32   1      }
  33          
  34          void warning(void)               //闹钟报警程序
  35          {
  36   1         uchar p=2;
  37   1      //   TR0=0;
  38   1         while(p--!=0)
  39   1          { P1=0;
  40   2            P0=0;
  41   2            delay(100,100);
  42   2            P1=0xff;
  43   2            P0=0xff;
  44   2            delay(100,100);
  45   2            }   
  46   1      //   TR0=1;
  47   1      } 
  48          void main(void)
  49          {
  50   1        TMOD=0x11;//选择定时器的模式
  51   1        TH0=0xd8; //定的时间高8位     
  52   1        TL0=0xf0; //定的时间低8位
  53   1      //  TH1=0xff; //定的时间高8位,想想为什么?
  54   1      //  TL1=0xff; //定的时间低8位,想想为什么?
C51 COMPILER V7.06   蔩钟2                                                                 11/01/2006 17:13:00 PAGE 2   

  55   1        IE=0x82;  //中断触发的设定
  56   1      //IP=0X04;
  57   1        TR0=1;    //TIMER0开始计时
  58   1        count=0;
  59   1        second=0;
  60   1        minute=0;
  61   1        hour=0;
  62   1       while(1)
  63   1        {if(P3_7==0)     //按下P3_7?
  64   2          {delay(1,100); //延时
  65   3            hour++;
  66   3             if(hour==24)
  67   3               hour=0;
  68   3              while(P3_7==0);//判断是否被按下
  69   3           }
  70   2         if(P2_7==0)
  71   2           {delay(1,100);
  72   3              minute++;
  73   3               if(minute==60)
  74   3                 {minute=0;}
  75   3               while(P2_7==0);
  76   3            }
  77   2          if(P2_6==0)
  78   2            {delay(1,100);
  79   3                second++;
  80   3                if(second==60)
  81   3                   {second=0;}
  82   3                while(P2_6==0);
  83   3             }
  84   2      
  85   2               if(P3_6==0)    
  86   2           {delay(1,100);
  87   3      //       TR0=0;   //???????????????
  88   3            while(P3_6==0);
  89   3              T=1;
  90   3              R=1;
  91   3            }
  92   2           if(T==1)
  93   2            ding(); 
  94   2         }
  95   1      }
  96          
  97          void tim(void) interrupt 1 //int0    t0  int1  t1   rs
  98          {                          //  0     1    2     3    4
  99   1       TH0=0xd8;                 
 100   1       TL0=0xf0;
 101   1       count++;        //由于其是全局函数,当程序运行100次后,秒加1
 102   1       R=0;
 103   1      
 104   1       if (count==100)
 105   1         {
 106   2           count=0;
 107   2           second++;
 108   2           j++;
 109   2           P1=rjg[j%8];  //由于有8个LED所以对8取余,使其逐个且有序的亮起来,很巧吧!!
 110   2          if(second>=60)
 111   2            {
 112   3                  second=0;
 113   3              minute++;
 114   3             if (minute>=60)
 115   3               {
 116   4                         minute=0;
C51 COMPILER V7.06   蔩钟2                                                                 11/01/2006 17:13:00 PAGE 3   

 117   4                 hour++;
 118   4                if (hour>=24)
 119   4                    {
 120   5                                 second=0;
 121   5                     hour=0;
 122   5                     minute=0;
 123   5                     }
 124   4                }
 125   3             }
 126   2      
 127   2          if(R==0)
 128   2           {
 129   3            buffer[0]=second%10;
 130   3            buffer[1]=second/10;
 131   3            buffer[2]=minute%10;
 132   3            buffer[3]=minute/10;
 133   3            buffer[4]=hour%10;
 134   3            buffer[5]=hour/10;
 135   3               }
 136   2         }
 137   1          if(R==0)  
 138   1           {for(i=0;i<6;i++)
 139   2             {
 140   3              P2=dispbit[i];
 141   3              P0=table[buffer[i]];
 142   3               for(a=4;a>0;a--)
 143   3                for(b=248;b>0;b--);
 144   3              }
 145   2            }     
 146   1      if((hour==dhour && minute==dminute && second==dsecond)&&(hour!=0||minute!=0||second!=0))
 147   1         {warning();}    //闹钟报警部分
 148   1      }
 149          
 150          void ding(void) //interrupt 3 //int0    t0  int1  t1   rs
 151          {  int ii,aa,bb;                        //  0     1    2     3    4
 152   1        //R=1;
 153   1        P2=0xff;
 154   1        while(1)                //闹钟调时
 155   1        {
 156   2           if(P3_7==0)
 157   2            {delay(1,100);
 158   3               dhour++;
 159   3                if(dhour==24)
 160   3                {dhour=0;}
 161   3               while(P3_7==0);
 162   3             }
 163   2           if(P2_7==0)
 164   2             {delay(1,100);
 165   3                dminute++;
 166   3                 if(dminute==60)
 167   3                 {dminute=0;}
 168   3                while(P2_7==0);
 169   3              }
 170   2            if(P2_6==0)
 171   2              {delay(1,100);
 172   3                 dsecond++;
 173   3                if(dsecond==60)
 174   3                 {dsecond=0;}
 175   3                while(P2_6==0);
 176   3               }
 177   2      //    display();
 178   2          if(R==1)
C51 COMPILER V7.06   蔩钟2                                                                 11/01/2006 17:13:00 PAGE 4   

 179   2           {
 180   3             buffer[0]=dsecond%10;
 181   3             buffer[1]=dsecond/10;
 182   3             buffer[2]=dminute%10;
 183   3             buffer[3]=dminute/10;
 184   3             buffer[4]=dhour%10;
 185   3             buffer[5]=dhour/10;
 186   3            }
 187   2          for(ii=0;ii<6;ii++)
 188   2            {
 189   3             P2=dispbit[ii];
 190   3             P0=table[buffer[ii]];
 191   3             for(aa=4;aa>0;aa--)
 192   3               for(bb=248;bb>0;bb--);
 193   3             }
 194   2            
 195   2        if (P3_6==0)           //定时退出部分
 196   2          {delay(1,100);
 197   3           while (P3_6==0);
 198   3               T=0;
 199   3           R=0;
 200   3           break;
 201   3          }
 202   2        }   //TR0=1; //TIME0开始计时
 203   1      }
 204             
 205          
 206          
 207          
 208          /*void timelover(void)
 209          {
 210             TH1=0xff;
 211             TL1=0xff;
 212             TF1=0;
 213             rect_wave=!rect_wave;
 214          }*/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    602    ----
   CONSTANT SIZE    =     24    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     19    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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