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

📄 secondtimer.lst

📁 通过C语言控制数码管动态扫描显示
💻 LST
字号:
C51 COMPILER V7.50   SECONDTIMER                                                           04/05/2009 11:15:40 PAGE 1   


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

line level    source

   1          #include <reg52.h>
   2          #define uchar unsigned char
   3          #define uint  unsigned int
   4          
   5          
   6          uchar code dutable[]={    //段选表
   7                                                          0xc0,0xf9,0xa4,0xb0,0x99,
   8                                                          0x92,0x82,0xf8,0x80,0x90,
   9                                                          0x88,0x83,0xc6,0xa1,0x86,0xbf}; 
  10          /*
  11          uchar code dutable[]={    //共阴极段选表
  12                                                          0x3f,0x06,0x5b,0x4f,
  13                                                          0x66,0x6d,0x7d,0x07,
  14                                                          0x7f,0x6f,0x77,0x7c,
  15                                                          0x39,0x5e,0x79,0x71};*/
  16          
  17          uchar code wetable[]={0xfe,0xfd,0xfb,0xf7};    //位选表
  18          
  19          uchar Time_num;
  20          uint fen,miao;
  21          uint Set_key_num;        //设置按钮的按下次数
  22          sbit Set_key=P1^5;   //设置按钮
  23          sbit Inc_key=P1^6;   //增1按钮
  24          sbit Dec_key=P1^7;   //减1按钮
  25          
  26          sbit D0 = P3^1;
  27          
  28          
  29          void delay(uchar z)
  30          {
  31   1              uchar x,y;
  32   1              for(x=110;x>0;x--)
  33   1                      for(y=z;y>0;y--);
  34   1      }
  35          
  36          ////////////////////
  37          //  数码管显示函数
  38          void display(uint ifen,uint imiao)
  39          {
  40   1              uint shi_fen,ge_fen,shi_miao,ge_miao;
  41   1      
  42   1              shi_fen = ifen/10;
  43   1              ge_fen = ifen%10;
  44   1              shi_miao = imiao/10;
  45   1              ge_miao = imiao%10;
  46   1      
  47   1              P2=wetable[0];
  48   1              P0=dutable[shi_fen];
  49   1              delay(1);
  50   1              
  51   1              P2=wetable[1];
  52   1              P0=dutable[ge_fen];
  53   1              delay(1);
  54   1              
  55   1              P2=wetable[2];
C51 COMPILER V7.50   SECONDTIMER                                                           04/05/2009 11:15:40 PAGE 2   

  56   1              P0=dutable[shi_miao];
  57   1              delay(1);
  58   1      
  59   1              P2=wetable[3];
  60   1              P0=dutable[ge_miao];
  61   1              delay(1);       
  62   1      }
  63          
  64          
  65          void init()
  66          {
  67   1              P2 = 0xff;
  68   1              Time_num=0;
  69   1      
  70   1              fen = 0;
  71   1              miao = 5;
  72   1      
  73   1              Set_key_num = 0;
  74   1      
  75   1              TMOD=0X01;
  76   1              TH0=(65536-50000)/256;
  77   1              TL0=(65536-50000)%256;
  78   1              EA=1;
  79   1              ET0=1;
  80   1              TR0=1;  
  81   1      
  82   1              
  83   1      }
  84          
  85          
  86          void main()
  87          {
  88   1              init();
  89   1              while(1)
  90   1              {
  91   2                      ////////////////////
  92   2                      //倒计时处理
  93   2                      if(Time_num == 20)
  94   2                      {
  95   3                              Time_num = 0;
  96   3                              if(fen==0)
  97   3                              {
  98   4                                      if(miao==1)     //倒计时完毕
  99   4                                      {
 100   5                                              D0=!D0;
 101   5                                              TR0=0;          //关闭定时器
 102   5                                      }
 103   4                                              
 104   4                              }
 105   3                              
 106   3                              if(miao==-1)
 107   3                              {
 108   4                                      miao=59;
 109   4                                      if(fen != 0)
 110   4                                              fen--;
 111   4                              }
 112   3                              miao--; 
 113   3                                                      if(miao==-1)
 114   3                              {
 115   4                                      miao=59;
 116   4                                      if(fen != 0)
 117   4                                              fen--;
C51 COMPILER V7.50   SECONDTIMER                                                           04/05/2009 11:15:40 PAGE 3   

 118   4                              }
 119   3                                      
 120   3                      }
 121   2                              
 122   2      
 123   2                      ////////////////////
 124   2                      //  "设置"键按下        
 125   2                      if(Set_key!= 1)             
 126   2                      {   
 127   3                              delay(10);        
 128   3                              if(Set_key!= 1)
 129   3                              {   
 130   4                                      while(Set_key!= 1); 
 131   4                                      ET0=0;
 132   4                                      TR1=0;                                  //停止走动
 133   4      
 134   4                                      Set_key_num++;          //次数加1
 135   4                                      if(Set_key_num == 3)    //按了3次
 136   4                                      {
 137   5                                              Set_key_num = 0;
 138   5                                              ET0=1;
 139   5                                              TR0=1;                          //开始倒计时    
 140   5                                      }
 141   4                              }
 142   3                      }   
 143   2                      ////////////////////
 144   2                      //  "增加"键按下
 145   2                      if(Inc_key!= 1)              
 146   2                      {   
 147   3                              delay(10);       
 148   3                              if(Inc_key!= 1)            
 149   3                              {   
 150   4                                      while(Inc_key!= 1); 
 151   4                                      if(Set_key_num==1)      //按了1次,调分钟
 152   4                                      {
 153   5                                              if(fen==60)
 154   5                                                      fen=0;
 155   5                                              else
 156   5                                                      fen++;
 157   5                                      }
 158   4                                      if(Set_key_num==2)
 159   4                                      {
 160   5                                              if(miao==60)
 161   5                                                      miao=0;
 162   5                                              else
 163   5                                                      miao++;
 164   5                                              if(miao==60)
 165   5                                                      miao=0;
 166   5                                      }
 167   4                              }
 168   3                      }   
 169   2                      ////////////////////
 170   2                      //  "降低"键按下
 171   2                      if(Dec_key!= 1)               
 172   2                      {   
 173   3                              delay(10);      
 174   3                              if(Dec_key!= 1)         
 175   3                              {   
 176   4                                      while(Dec_key!= 1); 
 177   4                                      if(Set_key_num==1)      //按了1次,调秒钟
 178   4                                      { 
 179   5                                              if(fen==-1)
C51 COMPILER V7.50   SECONDTIMER                                                           04/05/2009 11:15:40 PAGE 4   

 180   5                                                      fen=60;
 181   5                                              else 
 182   5                                                      fen--;                                                          
 183   5                                              if(fen == -1)
 184   5                                                      fen=60;
 185   5                                      }
 186   4                                      if(Set_key_num==2)
 187   4                                      {
 188   5                                              if(miao==-1)
 189   5                                                      miao=0;
 190   5                                              else
 191   5                                                      miao--; 
 192   5                                              if(miao == -1)
 193   5                                                      miao=59;
 194   5                                      }
 195   4                              }
 196   3                      }
 197   2              display(fen,miao);      
 198   2              }       
 199   1      
 200   1      }
 201          
 202          
 203          void timer0() interrupt 1       //时钟中断
 204          {
 205   1              TH0=(65536-50000)/256;
 206   1              TL0=(65536-50000)%256;
 207   1              Time_num++;     
 208   1      }
 209          
 210          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    539    ----
   CONSTANT SIZE    =     20    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7       6
   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 + -