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

📄 main.lst

📁 51单片机控制产生4路标准舵机PWM(周期20ms
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  05/17/2007 23:04:22 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Program Files\keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<REG51F.H>
   2          #include<KEY.h>
   3          #include<LED.h>
   4          #include<communicate.h>
   5          
   6          sbit pwms=P1^6;
   7          sbit pwmout=P1^7;
   8          sbit key1=P1^0;
   9          sbit key2=P1^1;
  10          sbit key3=P1^2;
  11          sbit key4=P1^3;
  12          unsigned char pkey;     
  13          unsigned int pwmset[4];
  14          unsigned char highTh[4],highTl[4],lowTh[4],lowTl[4],mode,i,Mtoset;
  15          float ftemp;
  16          unsigned int temp;
  17          bit pwmhigh;
  18          /////
  19                                                                     
  20          ////
  21          
  22          
  23          
  24          void delay()
  25          {unsigned i;
  26   1      for(i=0;i<200;i++);
  27   1      }
  28           void INIT_PWM()
  29          {
  30   1      TMOD=0x01;                                                                         
  31   1      IP=0x08;
  32   1      IE|=0x02;
  33   1      EA=1;
  34   1      TH0=0xee;  //20us;
  35   1      TL0=0xee;
  36   1      TR0=1;
  37   1      }
  38          
  39          #if 0
              void init_serialcomm( void ) 
              { 
                  SCON  = 0x50;                       /* SCON: mode 1, 8-bit UART, enable receive     */
                  TMOD |= 0x20;               /* TMOD: timer 1, mode 2, 8-bit reload        */
                  TH1   = 0xF4;                /* TH1:  reload value for 2400 baud @ 11.0592MHz   */
                  TR1   = 1;                  /* TR1:  timer 1 run                          */
                  TI    = 0;
                      ES=1;
                      RI      =0;                  /* TI:   set TI to send first char of UART    */
              
              }  
              #endif
  52          
  53          
  54          
  55          
C51 COMPILER V7.50   MAIN                                                                  05/17/2007 23:04:22 PAGE 2   

  56                          
  57          
  58          
  59          void int1() interrupt 1
  60          { 
  61   1      
  62   1      EA=0;   
  63   1      TF0=0;
  64   1      
  65   1      
  66   1      if(pwmhigh)
  67   1      {
  68   2              P1=P1&(~(0x80>>Mtoset));
  69   2              TH0=lowTh[Mtoset];
  70   2              TL0=lowTl[Mtoset];
  71   2              pwmhigh=0;
  72   2               Mtoset++;
  73   2      if(Mtoset>=4)Mtoset=0;
  74   2      }
  75   1      else
  76   1      {       
  77   2              P1=P1|(0x80>>Mtoset);
  78   2              TH0=highTh[Mtoset];
  79   2              TL0=highTl[Mtoset];
  80   2              pwmhigh=1;        
  81   2              
  82   2      }
  83   1      EA=1;
  84   1      
  85   1      }
  86          
  87          void sett(unsigned char a,unsigned int temp2)
  88          {
  89   1      pwmset[a]=temp2;
  90   1      if(pwmset[a]>5000)pwmset[a]=0;
  91   1      if(pwmset[a]>995)pwmset[a]=995;
  92   1       ftemp=(pwmset[a]+1000)/1.085;
  93   1       temp=0xffff-ftemp;
  94   1       highTh[a]=temp>>8;
  95   1       highTl[a]=temp&0x00ff;
  96   1       temp=0xffff-(temp-0xedff);
  97   1       lowTh[a]=temp>>8;
  98   1       lowTl[a]=temp&0x00ff;
  99   1      }
 100          
 101          void comintreputer()
 102          {
 103   1      switch(command[0])
 104   1      {
 105   2      
 106   2      case 0x01:        //+=5,as key1
 107   2      {
 108   3              if(mode==0)
 109   3              { 
 110   4              for(i=0;i<4;i++)
 111   4                      {
 112   5                        sett(i,pwmset[i]+5);           
 113   5                        setdig(&pwmset[0]);
 114   5                      }                                          
 115   4      
 116   4              }
 117   3              else
C51 COMPILER V7.50   MAIN                                                                  05/17/2007 23:04:22 PAGE 3   

 118   3              {
 119   4                 sett(mode-1,pwmset[mode-1]+5);
 120   4                 if(pwmset[mode-1]>995)pwmset[mode-1]=995;
 121   4                 setdig(&pwmset[mode-1]);
 122   4              }
 123   3              break; 
 124   3      }
 125   2      case 0x02:       //-=5,as key2
 126   2      {
 127   3              if(mode==0)
 128   3              { 
 129   4              for(i=0;i<4;i++)
 130   4                      {
 131   5                      sett(i,pwmset[i]-5);             
 132   5                       setdig(&pwmset[0]);
 133   5                      }
 134   4              }
 135   3              else
 136   3              {
 137   4               sett(mode-1,pwmset[mode-1]-5);
 138   4                 setdig(&pwmset[mode-1]);
 139   4              }
 140   3              break;
 141   3      }
 142   2      case 0x03:                 //set pwmset=0;
 143   2      {
 144   3      if(mode==0)
 145   3              { 
 146   4              for(i=0;i<4;i++)
 147   4                      {
 148   5                        sett(i,0);             
 149   5                        setdig(&pwmset[0]);
 150   5                      }                                          
 151   4      
 152   4              }
 153   3              else
 154   3              {
 155   4               sett(mode-1,0);
 156   4              
 157   4                 setdig(&pwmset[mode-1]);
 158   4                
 159   4              }
 160   3      
 161   3      break;
 162   3      }
 163   2      case 0x04:               //mode++;
 164   2      {
 165   3      mode++;
 166   3      if(mode>=5)mode=0;
 167   3      if(!mode)
 168   3      {setdig(&pwmset[0]);}
 169   3      else
 170   3      {
 171   4      setdig(&pwmset[mode-1]);
 172   4      }
 173   3      dig[3]=mode;
 174   3      break;
 175   3      
 176   3      }        
 177   2      case 0x05:      //set mode
 178   2      {
 179   3      mode=command[1]%4;
C51 COMPILER V7.50   MAIN                                                                  05/17/2007 23:04:22 PAGE 4   

 180   3      if(!mode)
 181   3      {setdig(&pwmset[0]);}
 182   3      else
 183   3      {
 184   4      setdig(&pwmset[mode-1]);
 185   4      }
 186   3      dig[3]=mode;
 187   3      break;
 188   3      
 189   3      }
 190   2      case 0x06:              //set pmw[command[1]]=command[2]<<8+command[3]
 191   2      {               mode=command[1];
 192   3                      temp=command[2];
 193   3                      temp=temp<<8;
 194   3                      temp+=command[3];
 195   3                      sett(mode-1,temp);
 196   3                      setdig(&pwmset[mode-1]);
 197   3                      dig[3]=mode;
 198   3      break;
 199   3      }
 200   2      
 201   2      }//end of switch
 202   1      }//end of comintpretor
 203          
 204          void main()
 205          {
 206   1      
 207   1      
 208   1      INIT_PWM();
 209   1      Init_UART();
 210   1      SBUF='#';         
 211   1      IP=0x02;//set timer0 high interrupt level
 212   1      mode=0;
 213   1      for(i=0;i<4;i++)
 214   1      {
 215   2      sett(i,0);
 216   2      }
 217   1      setdig(&pwmset[0]);
 218   1      dig[3]=mode;
 219   1      
 220   1      while(1)
 221   1      {
 222   2      //key4
 223   2      if((P1&0x08)==0)
 224   2      {
 225   3      if(pkey&0x08)
 226   3      {
 227   4      //begin of      cottents a keypress
 228   4      mode++;
 229   4      if(mode>=5)
 230   4      mode=0;
 231   4      if(!mode)
 232   4      {setdig(&pwmset[0]);}
 233   4      else
 234   4      {
 235   5      setdig(&pwmset[mode-1]);
 236   5      }
 237   4      dig[3]=mode;
 238   4      
 239   4      
 240   4      //end of cottens of a keypress
 241   4      }
C51 COMPILER V7.50   MAIN                                                                  05/17/2007 23:04:22 PAGE 5   

 242   3      pkey&=0xff-0x08;
 243   3      }
 244   2      else
 245   2      {
 246   3      pkey|=0x08;
 247   3      }//end key4
 248   2      
 249   2              
 250   2       ///key1
 251   2       if((P1&0x01)==0)
 252   2       {       if(pkey&0x01==1)
 253   3              { 
 254   4      
 255   4      //////////
 256   4              if(mode==0)
 257   4              { 
 258   5              for(i=0;i<4;i++)
 259   5                      {
 260   6                        sett(i,pwmset[i]+5);
 261   6                        
 262   6                        setdig(&pwmset[0]);
 263   6                      
 264   6      
 265   6                      }                                          
 266   5      
 267   5              }
 268   4              else
 269   4              {
 270   5                 sett(mode-1,pwmset[mode-1]+5);
 271   5                 setdig(&pwmset[mode-1]);
 272   5                 
 273   5      
 274   5              }
 275   4                
 276   4      ////////////////
 277   4              }
 278   3              pkey&=0xfe;      //set pkey.0=0;
 279   3       }      
 280   2        else
 281   2       {
 282   3       pkey|=0x01;            //set pkey.0=1;
 283   3       }
 284   2      
 285   2      
 286   2       //key2
 287   2               if((P1&0x02)==0)
 288   2       {
 289   3               if(pkey&0x02)
 290   3              { 
 291   4              ////////////////
 292   4              if(mode==0)
 293   4              { 
 294   5              for(i=0;i<4;i++)
 295   5                      {
 296   6                      sett(i,pwmset[i]-5);
 297   6                       
 298   6                        setdig(&pwmset[0]);
 299   6                       
 300   6      
 301   6                      }                                          
 302   5      
 303   5              }
C51 COMPILER V7.50   MAIN                                                                  05/17/2007 23:04:22 PAGE 6   

 304   4              else
 305   4              {
 306   5               sett(mode-1,pwmset[mode-1]-5);
 307   5                 setdig(&pwmset[mode-1]);
 308   5                
 309   5      
 310   5              }
 311   4        /////////////////////
 312   4       }
 313   3       pkey&=0xff-0x02;
 314   3       }
 315   2       else{
 316   3       pkey|=0x02;
 317   3       }
 318   2      
 319   2       ///key3
 320   2      
 321   2      if(SW3_Pressed)
 322   2       {
 323   3                
 324   3              if(mode==0)
 325   3              { 
 326   4              for(i=0;i<4;i++)
 327   4                      {
 328   5                        sett(i,pwmset[i]-5);
 329   5                       
 330   5                        setdig(&pwmset[0]);
 331   5              
 332   5      
 333   5                      }                                          
 334   4      
 335   4              }
 336   3              else
 337   3              {
 338   4               sett(mode-1,pwmset[mode-1]-5);
 339   4              
 340   4                 setdig(&pwmset[mode-1]);
 341   4              }
 342   3              
 343   3              }
 344   2      
 345   2         if(commandready)
 346   2         {
 347   3         ES=0;
 348   3         comintreputer();
 349   3         commandready=0;
 350   3         ES=1;
 351   3         }
 352   2              showdig();
 353   2      }//end while
 354   1      }//end main


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1115    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     34       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.

C51 COMPILER V7.50   MAIN                                                                  05/17/2007 23:04:22 PAGE 7   


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

⌨️ 快捷键说明

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