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

📄 text1.lst

📁 步进电机控制
💻 LST
字号:
C51 COMPILER V6.12  TEXT1                                                                  09/07/2005 12:47:12 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN .\Text1.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE .\Text1.c DEBUG OBJECTEXTEND

stmt level    source

   1          //********************************************************************************
   2          // 步近电机控制程序
   3          //  完整篇
   4          // 测试可以运行
   5          //********************************************************************************
   6          
   7          #include <at89x51.h>
   8          
   9          #include <stdio.h>
  10           
  11          bit b=0,q=0;
  12          
  13          unsigned char code j[3]={9,6,3};  //速度选项
  14          
  15          unsigned char code z[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//正转
  16          
  17          unsigned char code f[8]={0x01,0x09,0x08,0x0c,0x04,0x06,0x02,0x03};//反转  
  18          
  19          unsigned char code xs[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//显示
  20          
  21          unsigned char code wx[]={0x01,0x02,0x04,0x10,0x20,0x40,0x80};//位选
  22          
  23          unsigned char x,i;
  24          
  25          unsigned char n,y,m;
  26          
  27          unsigned int c,s,s1,s2,s3,s4;
  28           
  29          unsigned char e[7];//缓冲数据    	
  30          
  31          
  32          
  33          void delay(int a)          //延时
  34                             {  while(--a); }     						
  35          
  36          
  37          void led()   //  设定圈数并显示
  38                      {    
  39   1      				     s1=(int)s%10;
  40   1       			        
  41   1      					  s2=(int)s%1000%100/10;
  42   1                       
  43   1      					  s3=(int)s%1000/100;
  44   1                       
  45   1      					  s4=(int)s/1000;
  46   1                       
  47   1      					  e[0]=xs[y];  //速度设定
  48   1              		 
  49   1                       e[1]=xs[b]; // 正反转
  50   1              	   
  51   1                       e[2]=xs[q]; //开始
  52   1       
  53   1                       e[3]=xs[s1]; //设定
  54   1      
  55   1      					  e[4]=xs[s2];
C51 COMPILER V6.12  TEXT1                                                                  09/07/2005 12:47:12 PAGE 2   

  56   1      
  57   1      					  e[5]=xs[s3];
  58   1                        
  59   1                       e[6]=xs[s4];
  60   1      					  
  61   1      				}			    
  62          
  63              			
  64          
  65          void control()
  66                         
  67                          { 
  68   1                           if(b==0)      //判断正反转
  69   1                          
  70   1                          	     P1=z[x];
  71   1                         
  72   1                             else   
  73   1                            
  74   1                          		  P1=f[x];
  75   1                     
  76   1                           if(P3_3==0)   // 选择正反转
  77   1          	  
  78   1                              delay(10000);
  79   1          	  
  80   1                           if(P3_3==0)
  81   1              
  82   1                              b=~b;
  83   1          	
  84   1                           if(P3_4==0)   //转动速度设定
  85   1          	
  86   1                             delay(10000);
  87   1           
  88   1                            if(P3_4==0)
  89   1                             
  90   1                  				y++;
  91   1          	 
  92   1                            if(y==3)
  93   1                            
  94   1                  				y=0;
  95   1              				
  96   1                            
  97   1                            if(P3_5==0) //转动圈数设定
  98   1                  	
  99   1                           delay(10000);
 100   1              	 		
 101   1                            if(P3_5==0)			
 102   1              			 
 103   1                        	   s++; 
 104   1                    
 105   1                      		if(s==10000)
 106   1        
 107   1                               s=0; 
 108   1      								 
 109   1       					}
 110          
 111                  					
 112          
 113          void main()
 114                
 115                      {
 116   1              		        TMOD=0x11; 
 117   1          	
C51 COMPILER V6.12  TEXT1                                                                  09/07/2005 12:47:12 PAGE 3   

 118   1                          TH0=(65536-m*1000)/256;   
 119   1          	
 120   1                          TL0=(65536-m*1000)%256;
 121   1          	
 122   1                          TH1=(65536-4000)/256;
 123   1            
 124   1                          TL1=(65536-4000)%256;
 125   1                 
 126   1      						  TR1=1;
 127   1                           
 128   1      						  ET1=1;
 129   1          	 
 130   1                    	     EA=1;
 131   1      
 132   1                          while(1) 
 133   1      			                   {
 134   2      									   led();
 135   2          	 
 136   2                                    control();
 137   2      
 138   2                                    if(P3_2==0) //电机启动选择(1启动,0停止)
 139   2                              
 140   2                                 delay(10000);
 141   2                     
 142   2                                    if(P3_2==0)
 143   2                             
 144   2                                     q=~q;       
 145   2                    
 146   2                                    if(q==0 || c==s*10)//判断是否启动和设定圈数是否已到
 147   2                      
 148   2                                     ET0=0;    
 149   2                     
 150   2                     			         else
 151   2      
 152   2                                   {  
 153   3      									    delay(100);
 154   3      						           
 155   3      						           	ET0=1; 	
 156   3      										
 157   3      										TR0=1;
 158   3      										}
 159   2                               }		
 160   1              				 }	 
 161          
 162          
 163          void t0(void) interrupt 1  using 3  //给电机脉冲
 164                                   { 
 165   1                  					 x++; //每隔(m*1000)就读取一个脉冲
 166   1      
 167   1                                  c++; 
 168   1      									
 169   1      									 if(x==8)  
 170   1                      				 
 171   1      									  x=0; 
 172   1                  					 
 173   1                      				  m=j[y];//代入设定初始数值
 174   1          	
 175   1                                  TH0=(65536-m*1000)/256;
 176   1          	
 177   1                                  TL0=(65536-m*1000)%256;
 178   1                                 }
 179          
C51 COMPILER V6.12  TEXT1                                                                  09/07/2005 12:47:12 PAGE 4   

 180          
 181          
 182          void t1(void) interrupt 3   using 1 //  显示部分 
 183                                   
 184                                     {
 185   1                                 
 186   1                                     P2=wx[i];
 187   1                            
 188   1                          				 P0=e[i];
 189   1                                    
 190   1                      					 i++;
 191   1              
 192   1                          				 if(i==7)
 193   1                                    							
 194   1                      					 i=0;
 195   1               
 196   1                                     TH1=(65536-3000)/256;
 197   1              
 198   1                                     TL1=(65536-3000)%256;  
 199   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    573    ----
   CONSTANT SIZE    =     36    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     24    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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