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

📄 key_ultmate.lst

📁 本程序为单片机对四相步进电机的控制
💻 LST
字号:
C51 COMPILER V8.08   KEY_ULTMATE                                                           05/15/2009 19:15:14 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE KEY_ULTMATE
OBJECT MODULE PLACED IN key_ultmate.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key_ultmate.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include <stdio.h>
   3          #define uchar unsigned char 
   4          #include <math.h> 
   5          
   6          uchar key_all=0;
   7          uchar in_number=0;
   8          
   9          uchar data12[9]={0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f};
  10          int speed=4;int jieju;
  11          const uchar data_void[9]={0x00,0x00,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f};
  12          unsigned char anticlock[8]=  {  0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};
  13          unsigned char     clock[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; 
  14          
  15           uchar in_status;
  16             int temp;
  17             uchar m;
  18          
  19          sbit DIN=P3^5;
  20          sbit LOAD=P3^6;
  21          sbit CLP=P3^7;
  22          bit yes;
  23          //sbit my=P1^7;
  24          
  25          
  26          void delay(void);
  27          void send(uchar add,uchar );
  28          void s_seg(uchar *p);
  29          void  keyscan(void);      //键盘扫描函数
  30          void clear_all(void);
  31          void my_delay(void);
  32          
  33          void zhengzhuan(int );
  34          void fanzhuan(int ) ;
  35          void key_process(void);
  36          
  37          
  38          void main()
  39          {  
  40   1       //uchar key_get=15;
  41   1        in_status=0;
  42   1      while(1)
  43   1      {
  44   2              keyscan();
  45   2              key_process();
  46   2              if(yes){        zhengzhuan(speed);       yes=0;}
  47   2      
  48   2      }
  49   1      }
  50          
  51          void key_process(void)
  52            {
  53   1      
  54   1              //  in_number=0;
  55   1        
C51 COMPILER V8.08   KEY_ULTMATE                                                           05/15/2009 19:15:14 PAGE 2   

  56   1        
  57   1        if((key_all==13       )||( key_all==14)) 
  58   1      {
  59   2               if(key_all==13) in_status=1;
  60   2               else   in_status= 2;  
  61   2               clear_all();
  62   2       }
  63   1              if((in_status!=0)&&(key_all>=1)&&(key_all<=10)) 
  64   1              {
  65   2                      for(m=8;m>1;m--)
  66   2              {
  67   3                  data12[m]=data12[m-1];
  68   3              }       
  69   2                        data12[1]=key_all-1;
  70   2               
  71   2                                       in_number++;
  72   2      
  73   2                                      s_seg(data12);
  74   2      
  75   2      
  76   2              if(     in_number >7 )    in_number=0;
  77   2      
  78   2              }
  79   1              if(key_all==11) 
  80   1              {
  81   2                      temp=0;
  82   2              for(m=1;m<=in_number;m++)
  83   2                      {
  84   3              temp+=data12[m]*pow(10,(m-1));
  85   3                      //      temp=data12[1];
  86   3                      }
  87   2                      switch(in_status)
  88   2                      {
  89   3                              case 1:  speed=temp;break;
  90   3                              case 2:  jieju=temp;break;
  91   3                      }
  92   2               yes=1;
  93   2                      
  94   2              }
  95   1                      if(key_all==12) 
  96   1                      {
  97   2                      clear_all();
  98   2      
  99   2                      }
 100   1      
 101   1      }
 102          void clear_all(void)
 103          {
 104   1                      uchar j;
 105   1      
 106   1              in_number=0;
 107   1              for( j=1;j<9;j++)
 108   1              {
 109   2                      data12[j]=0x0f; 
 110   2      
 111   2              }       
 112   1      
 113   1                      s_seg(data_void);
 114   1      
 115   1      }
 116              void delay(void)    //延时函数
 117            {
C51 COMPILER V8.08   KEY_ULTMATE                                                           05/15/2009 19:15:14 PAGE 3   

 118   1              int i;
 119   1                  for (i=4800;i>0;i--);
 120   1         }
 121          
 122          void keyscan(void)        //键盘扫描函数
 123             {
 124   1               uchar scan,tep;
 125   1                       key_all=0;
 126   1                       P2=0xf0;
 127   1                   if((P2&0xf0)!=0xf0)          //若有键盘按下
 128   1                       {
 129   2                                delay();
 130   2                            if((P2&0xf0)!=0xf0)         //若有键盘按下
 131   2      
 132   2                              {
 133   3                               P2=0xfe;                  // 发全0扫描码
 134   3               
 135   3                     if((P2&0xf0)!=0xf0)        //若有键盘按下
 136   3                      { 
 137   4                                delay();
 138   4                            if((P2&0xf0)!=0xf0)         //若有键盘按下
 139   4                          {
 140   5                                         scan=P2&0xf0;
 141   5                                         switch( scan)
 142   5                                         {
 143   6                                         case 0xe0:    key_all= 1;break;
 144   6                                         case 0xd0:    key_all= 2;break;
 145   6                                         case 0xb0:    key_all= 3;break;
 146   6                                         case 0x70:    key_all= 4;break;
 147   6                                         }
 148   5                                       while((P2&0xf0)!=0xf0);
 149   5      
 150   5                                       }
 151   4                              return ;
 152   4                              }
 153   3      
 154   3                       P2=0xfd;                  // 发全0扫描码
 155   3               
 156   3                     if((P2&0xf0)!=0xf0)        //若有键盘按下
 157   3                      { 
 158   4                                delay();
 159   4                            if((P2&0xf0)!=0xf0)         //若有键盘按下
 160   4                          {
 161   5                                         scan=P2&0xf0;
 162   5                                         switch( scan)
 163   5                                         {
 164   6                                         case 0xe0:    key_all= 5;break;
 165   6                                         case 0xd0:    key_all= 6;break;
 166   6                                         case 0xb0:    key_all= 7;break;
 167   6                                         case 0x70:    key_all= 8;break;
 168   6                                         }
 169   5                                                                          while(( P2&0xf0)!=0xf0);
 170   5      
 171   5      
 172   5                                        }
 173   4                                      return ;
 174   4                              }
 175   3                       P2=0xfb;                  // 发全0扫描码
 176   3               
 177   3                     if((P2&0xf0)!=0xf0)        //若有键盘按下
 178   3                      { 
 179   4                                delay();
C51 COMPILER V8.08   KEY_ULTMATE                                                           05/15/2009 19:15:14 PAGE 4   

 180   4                            if((P2&0xf0)!=0xf0)         //若有键盘按下
 181   4                          {
 182   5                                         scan=P2&0xf0;
 183   5                                         switch( scan)
 184   5                                         {
 185   6                                         case 0xe0:    key_all= 9;break;
 186   6                                         case 0xd0:    key_all= 10;break;
 187   6                                         case 0xb0:    key_all= 11;break;
 188   6                                         case 0x70:    key_all= 12;break;
 189   6                                         }
 190   5                                                                                  while(( P2&0xf0)!=0xf0);
 191   5      
 192   5                                       }
 193   4                              return;
 194   4                              }
 195   3                       P2=0xf7;                  // 发全0扫描码
 196   3               
 197   3                     if((P2&0xf0)!=0xf0)        //若有键盘按下
 198   3                      { 
 199   4                                delay();
 200   4                            if((P2&0xf0)!=0xf0)         //若有键盘按下
 201   4                          {
 202   5                                         scan=P2&0xf0;
 203   5                                         switch( scan)
 204   5                                         {
 205   6                                         case 0xe0:    key_all= 13;break;
 206   6                                         case 0xd0:    key_all= 14;break;
 207   6                                         case 0xb0:    key_all= 15;break;
 208   6                                         case 0x70:    key_all= 16;break;
 209   6                                         }
 210   5                                                                                  while(( P2&0xf0)!=0xf0);
 211   5      
 212   5                                       }
 213   4                                       return;
 214   4                              }
 215   3                        }
 216   2                        }
 217   1      }
*** WARNING C280 IN LINE 124 OF KEY_ULTMATE.C: 'tep': unreferenced local variable
 218          
 219              void send(uchar add,uchar dat)
 220          {
 221   1              uchar ADS,i,j;
 222   1              CLP=0;
 223   1              LOAD=0;
 224   1              DIN=0;
 225   1              i=4;
 226   1              while(i<16)
 227   1              {
 228   2               if(i<8)
 229   2                      {
 230   3                              ADS=add;
 231   3                      }
 232   2                else
 233   2                      {
 234   3                              ADS=dat;
 235   3                      }
 236   2                for(j=8;j>=1;j--)
 237   2                      {
 238   3      
 239   3                              if((ADS&0x80)==0)
 240   3                              {       DIN=0 ;}
C51 COMPILER V8.08   KEY_ULTMATE                                                           05/15/2009 19:15:14 PAGE 5   

 241   3                              else 
 242   3                              {       DIN=1;}
 243   3                              ADS=ADS<<1;
 244   3                      
 245   3                      CLP=1;
 246   3                      CLP=0;  
 247   3                       }
 248   2                i=i+8;
 249   2         }
 250   1         LOAD=1;
 251   1      }
 252          
 253          void s_seg(uchar *p)
 254          {
 255   1               send(0x0c,0x01);//正常状态
 256   1         send(0x0b,0x07);//设置扫描范围DIG0-7
 257   1               send(0x0a,0x05);//设置亮度11/32
 258   1         send(0x09,0xff);//采用译码方式
 259   1      
 260   1         send(0x01,p[8]);
 261   1         send(0x02,p[7]);
 262   1         send(0x03,p[6]);
 263   1         send(0x04,p[5]);
 264   1         send(0x05,p[4]);
 265   1         send(0x06,p[3]);
 266   1         send(0x07,p[2]);
 267   1         send(0x08,p[1]);     
 268   1      }
 269          
 270          
 271          
 272          
 273          
 274          /*void zhengzhuan(int step)
 275          {
 276             int i; unsigned char pos;
 277          
 278             for (i=0;i<step;i++)
 279             {
 280                if(pos>7) pos=0;
 281                    P1=clock[pos];
 282                    pos++;
 283                    my_delay();
 284                  }
 285          }
 286          void fanzhuan(int step)
 287          {
 288             int i; unsigned char pos;
 289                                    my_delay();
 290          
 291          
 292             for (i=0;i<step;i++)
 293             {
 294                if(pos>7) pos=0;
 295                    P1=anticlock[pos];
 296                    pos++;
 297                    my_delay();
 298                  }
 299          }
 300          */
 301          
 302          void zhengzhuan(int step)
C51 COMPILER V8.08   KEY_ULTMATE                                                           05/15/2009 19:15:14 PAGE 6   

 303          {
 304   1         int i; unsigned char pos;
 305   1       for (pos=0;pos<step;pos++)
 306   1         {
 307   2      
 308   2         for (i=0;i<8;i++)
 309   2         {
 310   3                P1=clock[i];
 311   3                my_delay();
 312   3              }
 313   2              }
 314   1      }
 315          void fanzhuan(int step)
 316          {
 317   1         int i; unsigned char pos;
 318   1       for (pos=0;pos<step;pos++)
 319   1         {
 320   2      
 321   2         for (i=0;i<8;i++)
 322   2         {
 323   3                P1=anticlock[i];
 324   3                my_delay();
 325   3              }
 326   2              }
 327   1      }
 328          
 329          
 330          
 331          
 332          void my_delay(void)
 333          {
 334   1          int i,j;
 335   1              for (i=0;i<10000;i++);
 336   1              { 
 337   2                 for(j=0;j<10000;j++);
 338   2              }
 339   1      }
 340          
 341          
 342          
 343          
 344          
 345          
 346          
 347          
 348          
 349          
 350          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    984    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     44      14
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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