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

📄 时钟.lst

📁 单片机开发板配套52个程序(c语言源代码)
💻 LST
字号:
C51 COMPILER V7.06   蔩钟                                                                  07/02/2009 14:37:40 PAGE 1   


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

stmt level    source

   1          /*
   2          1、按键可以调整当时时间
   3          2、按键可以调节定时时间
   4          3、定时时间到继电器吸合
   5          
   6          *8位数码管显示 时间格式格式 12-08-00 标示12点08分00秒
   7          
   8          S1 用于小时 加1操作  
   9          S2 用于小时减1操作
  10          S3 用于分钟 加1操作
  11          S4 用于分钟减1操作
  12          */
  13          
  14          /*-----------------------------------------------
  15            名称:普通时钟
  16            公司:上海浩豚电子科技有限公司
  17            网站:www.doflye.cn
  18            编写:师访
  19            日期:2009.5
  20            修改:无
  21            内容:
  22          ------------------------------------------------*/
  23          #include<reg52.h>     //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
  24          
  25          
  26          sbit KEY1=P3^0;       //定义端口参数
  27          sbit KEY2=P3^1;
  28          sbit KEY3=P3^2;
  29          sbit KEY4=P3^3;
  30          
  31          sbit LED=P1^2;       //定义指示灯参数
  32          code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 
  33                                           //共阴数码管 0-9
  34          unsigned char StrTab[8];                 //定义缓冲区
  35          unsigned char minute=30,hour=12,second;  //定义并且初始化值 12:30:00
  36          /******************************************************************/
  37          /*                    延时函数                                    */
  38          /******************************************************************/
  39          void delay(unsigned int cnt)
  40          {
  41   1       while(--cnt);
  42   1      }
  43          
  44          /******************************************************************/
  45          /*                    显示处理函数                                      */
  46          /******************************************************************/
  47          void Displaypro(void)
  48          {
  49   1      
  50   1                      StrTab[0]=tab[hour/10];    //显示小时
  51   1                              StrTab[1]=tab[hour%10];
  52   1                              StrTab[2]=0x40;            //显示"-"
  53   1                              StrTab[3]=tab[minute/10];  //显示分钟
  54   1                              StrTab[4]=tab[minute%10];
  55   1                              StrTab[5]=0x40;            //显示"-"
C51 COMPILER V7.06   蔩钟                                                                  07/02/2009 14:37:40 PAGE 2   

  56   1                  StrTab[6]=tab[second/10];  //显示秒
  57   1                              StrTab[7]=tab[second%10];
  58   1              
  59   1      }
  60          /******************************************************************/
  61          /*                    主函数                                      */
  62          /******************************************************************/
  63          main()//主函数
  64          {
  65   1          TMOD |=0x01;//定时器0 10ms in 12M crystal 用于计时
  66   1              TH0=0xd8;   //初值
  67   1              TL0=0xf0;
  68   1              ET0=1;
  69   1              TR0=1;
  70   1      
  71   1          TMOD |=0x10; //定时器1用于动态扫描
  72   1              TH1=0xF8;    //初值
  73   1              TL1=0xf0;
  74   1              ET1=1;
  75   1              TR1=1;
  76   1          EA =1;
  77   1          
  78   1      
  79   1          Displaypro();   //调用显示处理
  80   1      
  81   1      while(1)//主循环
  82   1        {
  83   2         
  84   2      
  85   2        if(!KEY1) //按键1去抖以及动作
  86   2          {
  87   3          delay(10000);
  88   3          if(!KEY1)
  89   3                 {          
  90   4                   hour++;if(hour==24)hour=0;     //正常时间 小时 加1
  91   4               Displaypro();
  92   4                 }
  93   3              }
  94   2      
  95   2         if(!KEY2) //按键2去抖以及动作
  96   2          {
  97   3          delay(10000);
  98   3          if(!KEY2)
  99   3                 {
 100   4             hour--;if(hour==255)hour=23;   //正常时间 小时减1
 101   4             
 102   4                 Displaypro();
 103   4                }
 104   3              }
 105   2        if(!KEY3) //按键去抖以及动作
 106   2          {
 107   3          delay(10000);
 108   3          if(!KEY3)
 109   3                 {
 110   4                  minute++;if(minute==60)minute=0;//分加1
 111   4                  Displaypro();
 112   4                }
 113   3              }
 114   2        if(!KEY4) //按键去抖以及动作
 115   2          {
 116   3          delay(10000);
 117   3          if(!KEY4)
C51 COMPILER V7.06   蔩钟                                                                  07/02/2009 14:37:40 PAGE 3   

 118   3                 {
 119   4                  minute--;if(minute==255)minute=59;  //分减1
 120   4                  Displaypro();
 121   4                }
 122   3              }
 123   2        }
 124   1      }
 125          /******************************************************************/
 126          /*                  定时器1中断                                   */
 127          /******************************************************************/
 128          void time1_isr(void) interrupt 3 using 0//定时器1用来动态扫描
 129          {
 130   1          static unsigned char num;
 131   1          TH1=0xF8;//重入初值
 132   1              TL1=0xf0;
 133   1      
 134   1              switch (num){
 135   2           case 0:P2=0;P0=StrTab[num];break; //分别调用缓冲区的值进行扫描
 136   2               case 1:P2=1;P0=StrTab[num];break;
 137   2               case 2:P2=2;P0=StrTab[num];break;
 138   2               case 3:P2=3;P0=StrTab[num];break;
 139   2               case 4:P2=4;P0=StrTab[num];break;
 140   2               case 5:P2=5;P0=StrTab[num];break;
 141   2           case 6:P2=6;P0=StrTab[num];break;
 142   2               case 7:P2=7;P0=StrTab[num];break;
 143   2               default:break;
 144   2      }
 145   1      num++;     //扫描8次,使用8个数码管
 146   1      if(num==8)
 147   1         num=0;
 148   1      }
 149          /******************************************************************/
 150          /*                    定时器0中断                                 */
 151          /******************************************************************/
 152          void tim(void) interrupt 1 using 1
 153          {
 154   1      static unsigned char count;//定义内部静态变量
 155   1      
 156   1      TH0=0xd8;                  //重新赋值
 157   1      TL0=0xf0;
 158   1      count++;
 159   1         switch (count)
 160   1                {
 161   2                 case 0:
 162   2                 case 20:
 163   2                 case 40:
 164   2                 case 60:
 165   2                 case 80:Displaypro(); //隔一定时间调用显示处理
 166   2                         break;
 167   2                 case 50:P1=~P1;     //半秒 LED闪烁
 168   2                         break;
 169   2                 default:break;
 170   2                }
 171   1      
 172   1      if (count==100)
 173   1          {
 174   2          count=0;
 175   2          second++;             //秒加1
 176   2              if(second==60)
 177   2                 {
 178   3                 second=0;
 179   3                 minute++;          //分加1
C51 COMPILER V7.06   蔩钟                                                                  07/02/2009 14:37:40 PAGE 4   

 180   3                 if(minute==60)
 181   3                        {
 182   4                         minute=0;
 183   4                         hour++;        //时加1
 184   4                         if(hour==24)
 185   4                            hour=0;
 186   4                        }  
 187   3            
 188   3                 }
 189   2          
 190   2         } 
 191   1       
 192   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    426    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     13    ----
   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 + -