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

📄 text2.lst

📁 菜鸟板的时钟 第一次学51 师兄们帮小弟看看 还有很多要改进的地方
💻 LST
字号:
C51 COMPILER V7.07   TEXT2                                                                 01/29/2009 01:09:49 PAGE 1   


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

stmt level    source

   1          #include <reg51.h>//加载头文件
   2          #define uchar unsigned char//变量类型的宏定义
   3          #define uint unsigned int//变量类型的宏定义
   4          #define  SET     5
   5          #define  MON   4
   6          #define  DAY   3
   7          #define  HOU   2
   8          #define  MIN   1
   9          uchar SEG7[10]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};/*0~9的数码管段码*/
  10          uchar act[12]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x04,0x08,0x10,0x20};
  11          uchar MS,mon,day,hou,min;
  12          uchar key,discnt;
  13          uint cnt;
  14          sbit MSKEY=P0^5; /*功能键标志*/
  15          sbit MONKEY=P0^4;//月按键
  16          sbit DAYKEY=P0^3;//天按键
  17          sbit HOUKEY=P0^2;//时按键
  18          sbit MINKEY=P0^1;//分按键
  19          //sbit CHECKKEY=P3^0;//查询按键
  20          sbit CLK=P1^0;
  21          sbit  DATA=P1^1;
  22          
  23          void TIMERIni(void);
  24          void menu(void);
  25          void delay(uint k);
  26          void keyboard(void);
  27          void send164(uchar m);
  28          void dis_time(uchar m);
  29          void dis_adjtime(uchar m);
  30          
  31          void menu(void)//扫描按键子函数
  32          {
  33   1      
  34   1             if(key==SET){MS++;if(MS==2)MS=0;}// 调整模式
  35   1             if(MS==1)
  36   1                       {
  37   2                             switch(key)
  38   2                              { 
  39   3                                      case (MIN):{min++;if(min>=60)min=0; }break;
  40   3                                          case (HOU):{hou++;if(hou>23)hou=0; } break;
  41   3                                       case(DAY):{day++;if(day>31)day=1; }break;
  42   3                                        case(MON):{mon++;if(mon>12)mon=1; }break;
  43   3                                              default:break;
  44   3                              }
  45   2              }
  46   1                 key=0;
  47   1                        
  48   1      }
  49          
  50          void delay(uint k)
  51          {
  52   1          uint i,j;
  53   1          for(i=0;i<k;i++)
  54   1                      {
  55   2                       for(j=0;j<1000;j++) ;
C51 COMPILER V7.07   TEXT2                                                                 01/29/2009 01:09:49 PAGE 2   

  56   2                     }
  57   1      }
  58          
  59          void keyboard(void)
  60          {   
  61   1          P0=0X3F;
  62   1           if((P0&0x02)==0)
  63   1               {  delay(5);
  64   2                   while((P0&0x02)==0);
  65   2                         key=MIN;
  66   2                }
  67   1               else 
  68   1                      if((P0&0x04)==0)
  69   1                          {  
  70   2                            delay(5);
  71   2                             while((P0&0x04)==0);
  72   2                              key=HOU;
  73   2                           } 
  74   1                         else 
  75   1                               if((P0&0x08)==0)
  76   1                                     {  
  77   2                                     delay(5);
  78   2                                     while((P0&0x08)==0);
  79   2                                       key=DAY;
  80   2                                      } 
  81   1                                       else
  82   1                                            if((P0&0x10)==0)
  83   1                                              {  
  84   2                                                 delay(5);
  85   2                                                 while((P0&0x10)==0);
  86   2                                                 key=MON;
  87   2                                               } 
  88   1                                                                else
  89   1                                                        if((P0&0x20)==0)
  90   1                                                         {  
  91   2                                                            delay(5);
  92   2                                                            while((P0&0x20)==0);
  93   2                                                             key=SET;
  94   2                                                           } 
  95   1      }
  96          
  97          
  98          void time0(void) interrupt 1 
  99          {
 100   1              TH0=0xF4;TL0=0x48;
 101   1              keyboard();
 102   1             if(discnt>11)discnt=0;// 显示为8位数码管
 103   1             if(cnt>600)cnt=0;// 报警时的闪烁周期
 104   1             switch(MS)
 105   1               {
 106   2                  case 0:{dis_time(discnt);}break;// 显示走时
 107   2                  case 1:{dis_adjtime(discnt);}break;// 显示调时
 108   2                  default: break;
 109   2              }
 110   1                 discnt++;cnt++;
 111   1      
 112   1      }
 113          
 114          
 115          void send164(uchar m)
 116          {uchar k,i,b;
 117   1      k=SEG7[m];
C51 COMPILER V7.07   TEXT2                                                                 01/29/2009 01:09:49 PAGE 3   

 118   1      i=8;
 119   1      CLK=0;
 120   1      while (i--)
 121   1              {b=k>>i;
 122   2          if((b&0x01)==0x01)DATA=1;
 123   2            else  DATA=0;
 124   2           CLK=1; 
 125   2          CLK=0;
 126   2           } 
 127   1              
 128   1      }
 129                                              //P2 KOU                                                 //P1kou
 130          void dis_time(uchar m)
 131          {
 132   1         P1&=0XC3;
 133   1         P2=0X00;
 134   1               {switch(m)
 135   2                   {case 0:{send164(mon/10);P2|=act[m];}break;
 136   3                     case 1:{send164(mon%10);P2|=act[m];}break;
 137   3                     case 2:{send164(day/10);P2|=act[m];}break;
 138   3                     case 3:{send164(day%10);P2|=act[m];}break;
 139   3                     case 4:{send164(hou/10);P2|=act[m];}break;
 140   3                      case 5:{send164(hou%10);P2|=act[m];}break;
 141   3                      case 6:{send164(min/10);P2|=act[m];}break;
 142   3                      case 7:{send164(min%10);P2|=act[m];}break;
 143   3                      case 8:{send164(0);P1|=act[m];P2=0X00;}break;
 144   3                      case 9:{send164(0);P1|=act[m];P2=0X00;}break;
 145   3                      case 10:{send164(0);P1|=act[m];P2=0X00;}break;
 146   3                      case 11:{send164(0);P1|=act[m];P2=0X00;}break;
 147   3                        default:break;}
 148   2                    }
 149   1      
 150   1      }
 151          
 152          
 153          void dis_adjtime(uchar m)
 154          {  
 155   1           if(cnt>200)
 156   1              { 
 157   2                  P1&=0XC3;
 158   2                 P2=0X00;
 159   2                              switch(m)
 160   2                              {case 0:{send164(mon/10);P2|=act[m];P1&=0XC3;}break;
 161   3                            case 1:{send164(mon%10);P2|=act[m];P1&=0XC3;}break;
 162   3                            case 2:{send164(day/10);P2|=act[m];P1&=0XC3;}break;
 163   3                            case 3:{send164(day%10);P2|=act[m];P1&=0XC3;}break;
 164   3                             case 4:{send164(hou/10);P2|=act[m];P1&=0XC3;}break;
 165   3                             case 5:{send164(hou%10);P2|=act[m];P1&=0XC3;}break;
 166   3                              case 6:{send164(min/10);P2|=act[m];P1&=0XC3;}break;
 167   3                              case 7:{send164(min%10);P2|=act[m];P1&=0XC3;}break;
 168   3                              case 8:{send164(0);P1|=act[m];P2=0X00;}break;
 169   3                              case 9:{send164(0);P1|=act[m];P2=0X00;}break;
 170   3                              case 10:{send164(0);P1|=act[m];P2=0X00;}break;
 171   3                             case 11:{send164(0);P1|=act[m];P2=0X00;}break;
 172   3                                default:break;
 173   3                                                }
 174   2                    }
 175   1            else 
 176   1              {  
 177   2                  P1&=0XC3;
 178   2                 P2=0X00;
 179   2              }
C51 COMPILER V7.07   TEXT2                                                                 01/29/2009 01:09:49 PAGE 4   

 180   1      }
 181          
 182          
 183          void TIMERIni(void)
 184          {
 185   1             TMOD=0X01;
 186   1              TH0=0xF4;TL0=0x48;
 187   1             EA=1;
 188   1              ET0=1;
 189   1             TR0=1;
 190   1      }
 191          
 192          void main(void)
 193          {  
 194   1           TIMERIni();
 195   1            while(1)
 196   1              {
 197   2                 // keyboard();
 198   2                    if(key>0)
 199   2                      {
 200   3                        menu();
 201   3                      }
 202   2              }
 203   1      }
 204          
 205          
 206                  
 207          
 208          
 209          
 210                  
 211          
 212                  
 213          
 214                  
 215          
 216          
 217          
 218                  
 219          
 220          
 221                  
 222          
 223          
 224          
 225                  
 226          


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