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

📄 motor.lst

📁 可用于控制步进电机正反转的51单片机汇编程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 159   4                                                                                              { P1= REV2[m];
 160   5                                                                                                motorstep2++;
 161   5                                                                                                if(motorstep2==1)EX1=1;
 162   5                                                                                               m++;
 163   5                                                                                               if(m==4)m=0;
 164   5                                                                                               delay();
 165   5                                                                              }
 166   4                                                                              
 167   4                                                                                      
 168   4                                                                                      } 
 169   3                                        
 170   3                        
 171   3                                        else          {
 172   4                                                        
 173   4                                                                                 while(motorstep2<=con_step)                            
 174   4                                                                                              { P1= FFW2[m];
C51 COMPILER V8.02   MOTOR                                                                 04/06/2008 11:49:11 PAGE 4   

 175   5                                                                                               motorstep2++;
 176   5                                                                                                if(motorstep2==1)EX1=1;
 177   5                                                                                              m++;
 178   5      
 179   5                                                                                               if(m==4)m=0;
 180   5                                                                                               delay();
 181   5                                                                              }
 182   4                                                      
 183   4                                                                                          
 184   4                                                                               }
 185   3      
 186   3                                      
 187   3                                      
 188   3                                        EA=1;
 189   3      
 190   3                                //延时1000*10ms=10s
 191   3                                for(a=0;a<=1000;a++)
 192   3                                    for(b=0;b<=10;b++)
 193   3                                            for(c=0;c<=120;c++);
 194   3                            
 195   3      
 196   3                          for(a=0;a<=20;a++)  {ET0=0; ET1=0;}
 197   3                              
 198   3                                      //返回致零角度
 199   3                               if(con_direction==1) {  
 200   4                                                                          while(motorstep2!=0)                                  
 201   4                                                                                              { P1= FFW2[m];
 202   5      
 203   5                                                                                                 motorstep2++;
 204   5                                                                                                if(motorstep2==1)EX1=1;
 205   5                                                                                               m++;
 206   5                                                                                               if(m==4)m=0;
 207   5                                                                                               delay();
 208   5                                                                              }
 209   4                                                            }
 210   3      
 211   3      
 212   3                                                else   if(con_direction==0)          {    while(motorstep2!=0)                                  
 213   4                                                                                                                        { P1= REV2[m];
 214   5                                                                                                                                                        motorstep2++;
 215   5                                                                                                                            if(motorstep2==1)EX1=1;
 216   5                                                                                                                            m++;
 217   5                                                                                                                               if(m==4)m=0;
 218   5                                                                                                                                   delay();
 219   5                                                                                             }           }
 220   3      
 221   3                                                                                
 222   3                              for(a=0;a<=20;a++){ET0=1;ET1=1;}
 223   3                              
 224   3                                      
 225   3                                      SingalFlag=0;                      
 226   3                
 227   3                
 228   3                 }                     
 229   2                                                                                                                      
 230   2        } 
 231   1      
 232   1      
 233   1      }
 234          
 235          
 236          
C51 COMPILER V8.02   MOTOR                                                                 04/06/2008 11:49:11 PAGE 5   

 237          
 238          
 239          /********************************************************外部0中断服务——MOTOR1零角度中断****************
             -*/
 240          int0_srv() interrupt 0 using 0                  //电机起始定位ISP
 241           { 
 242   1              
 243   1                      EX0=0;                                                   //关中断0
 244   1                   
 245   1                          StartFlag1^=1;
 246   1                          motorstep1=0;                       
 247   1                                             //开中断
 248   1                      
 249   1      
 250   1                                                                                        
 251   1         }
 252          
 253          
 254          
 255          
 256          
 257           /**********************************************************外部中断1服务—— ****************************
             -******/  
 258           
 259           int1_srv() interrupt 2         using  2
 260           { 
 261   1          
 262   1                   
 263   1                 
 264   1                       EX1=0; 
 265   1                      StartFlag2^=1;
 266   1                 motorstep2=0;                
 267   1                                         
 268   1               
 269   1                                                                              
 270   1         }
 271           
 272          
 273          
 274          
 275          /********************************************定时器0中断服务——MOTOR1步进中断****************************
             -***********************/
 276          void timer0(void) interrupt 1   using 1
 277          {
 278   1      
 279   1          TH0=-50000/256;
 280   1              TL0=-50000%256;
 281   1              
 282   1              
 283   1               if( StartFlag1==1)P1 = REV1[j]; 
 284   1                                   else  P1 = FFW1[j];                                      
 285   1                              
 286   1               count1++;
 287   1               if(count1==10)
 288   1                     {count1=0; 
 289   2                           motorstep1++;
 290   2                               if(motorstep1==12)EX0=1;
 291   2                               j++;
 292   2                               if(j==4){j=0;}
 293   2                               }                              
 294   1                                                 
 295   1      }
C51 COMPILER V8.02   MOTOR                                                                 04/06/2008 11:49:11 PAGE 6   

 296                                                                                                                                                                  
 297          
 298            /********************************定时器3——热释红外输入服务**************************************/
 299             void timer1(void) interrupt 3  using  3
 300          
 301           {      
 302   1       
 303   1                                                                      
 304   1                    SingalFlag=1;
 305   1                        con_step=motorstep1;  
 306   1          
 307   1              
 308   1       
 309   1       }                                                                              


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    427    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      4    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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