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

📄 step.lst

📁 基于51的步进电机控制器,含有人机结口程序,软硬件测试都已通过.是不错的参考代码.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.07   STEP                                                                  11/14/2007 10:28:44 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE STEP
OBJECT MODULE PLACED IN Step.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE Step.c INTVECTOR(0X8000) DEFINE(monitor51) DEBUG OBJECTEXTEND

stmt level    source

   1          #include "Step.h"
   2          #include"viic_c51.h"
   3          #include"zlg7290.h"
   4          //--------------------------------变量定义-------------------------------------------
   5          /*sbit KEY_INT=P3^2;                        //将p3.2外部中断0
   6          unsigned int FLAG=0;                    //数码管闪烁标志位
   7          unsigned int FLAG1=0;                   //显示切换标志位 1---速度,0---坐标
   8          unsigned int FLAG2=0;                   //电机正反转切换标志位 1---正转,0---反转
   9          unsigned char KEY;                     //键值
  10          unsigned int circle=1;                  //坐标单位1的步进圈数
  11          int Fm=0;                               //加工点偏差
  12          unsigned int Xe=0;                      //终点横坐标
  13          unsigned int Ye=0;                      //终点纵坐标
  14          unsigned int Nxy=0;                     //总步数
  15          unsigned int Xi=0;                      //实时横坐标
  16          unsigned int Yi=0;                      //实时纵坐标
  17          unsigned int SpeedX=0;                  //X电机速度(步/秒)
  18          unsigned int SpeedY=0;                  //Y电机速度(步/秒)
  19          //unsigned int time0_tmp=0xe880;          //2ms定时显示初值
  20          //unsigned int time1_tmp=0;               //速度控制定时初值
  21          //unsigned int fosc=12;                   //单片机晶振(MHz)
  22          unsigned char Speed[8]={0,0,0,0,0,0,0,0}; //两个4位数码管数值(速度)
  23          unsigned char Place[8]={0,0,0,0,0,0,0,0}; //两个4位数码管数值(坐标)
  24          unsigned char StepX1[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//X步进电机正转节拍
  25          unsigned char StepY1[]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};//Y步进电机反转节拍
  26          unsigned char StepX2[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};//X步进电机正转节拍
  27          unsigned char StepY2[]={0x90,0x80,0xc0,0x40,0x60,0x20,0x30,0x10};//Y步进电机反转节拍
  28          //unsigned char Led_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x89,0x86};//数码管0—9,H,E
  29          //unsigned char Led_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x79};//数码管0—9,A,E
  30          
  31          //--------------------------------函数声明-------------------------------------------
  32          //void System_init(void);                 //设定INT0的工作方式,供主程序调用
  33          void delay(unsigned int);               //延时程序
  34          void delay10ms(unsigned int);
  35          //void INT0_int(void);                    //外部中断0处理程序
  36          //void time0_int(void);                   //定时器0中断
  37          //void time1_int(void);                   //定时器1定时
  38          //void Key_Scaning(void);                 //扫描键盘
  39          //void dispxy(unsigned int,unsigned int,unsigned int);//数码管显示子程序
  40          //void display(void);                     //数码管显示
  41          void Key_Control(void);                 //键盘控制
  42          void Go_line(void);                     //直线差补算法---前进
  43          void Back_line(void);                   //直线差补算法---回零    */
  44          //-----------------------------------------------------------------------------------
  45          main()
  46          {
  47   1         
  48   1         while(1)
  49   1         {
  50   2            Key_Control();                    //键盘控制
  51   2         }
  52   1      }
  53          
  54          //-----------------------------------------------------------------------------------
  55          void delay(unsigned int i)
C51 COMPILER V7.07   STEP                                                                  11/14/2007 10:28:44 PAGE 2   

  56          {
  57   1         for(;i>0;i--);
  58   1      }
  59          
  60          void delay10ms(unsigned int i)                  //延时程序????10ms有问题?????
  61          {
  62   1         unsigned int j;
  63   1         for(;i>0;i--)
  64   1            for(j=0;j<1000;j++);
  65   1      }
  66          //------------------------------------------------------------------------------------
  67          // 函数名称:Key_Control()
  68          // 函数功能:键盘控制
  69          //------------------------------------------------------------------------------------
  70          void Key_Control(void)
  71          {
  72   1         unsigned char i;
  73   1         while(1)
  74   1         {
  75   2                if(KEY_INT==0)
  76   2                {
  77   3                   KEY=ZLG7290_GetKey();
  78   3                       delay(200);
  79   3              if(KEY==1)
  80   3                {
  81   4                      KEY=0;                            //清键值    
  82   4                       for(i=0;i<8;i++)
  83   4                       {
  84   5                              Speed[i]=0;
  85   5                        }
  86   4                      for(i=0;i<8;i++)
  87   4                         {
  88   5                                      Place[i]=0;
  89   5                                      }
  90   4                               ZLG7290_SendBuf(Place,8);
  91   4                                      delay10ms(1);
  92   4                      //Led1[0]=0;Led1[1]=0;Led1[2]=0;Led1[3]=0;Led1[4]=0;Led1[5]=0;Led1[6]=0;Led1[7]=0;
  93   4                      // Led2[0]=0;Led2[1]=0;Led2[2]=0;Led2[3]=0;Led2[4]=0;Led2[5]=0;Led2[6]=0;Led2[7]=0;
  94   4                      Go_line();                        //前进
  95   4                         }
  96   3                      else if(KEY==2)
  97   3                              {
  98   4                              KEY=0;                            //清键值
  99   4                              FLAG1=0;                          //显示切换标志位0(显示坐标)
 100   4                              Back_line();                      //回零
 101   4                              }
 102   3                      else if(KEY==3)
 103   3                              {
 104   4                              //FLAG1=1;                          //显示切换标志位1(显示速度)
 105   4                              Speed[0]=SpeedX%10;Speed[1]=(SpeedX%100)/10;Speed[2]=SpeedX/100;Speed[3]=10;//显示当前速度
 106   4                              Speed[4]=SpeedY%10;Speed[5]=(SpeedY%100)/10;Speed[6]=SpeedY/100;Speed[7]=10;
 107   4                                      ZLG7290_SendBuf(Speed,8);
 108   4                                      delay10ms(1);
 109   4                              while(1)
 110   4                              {
 111   5                                      KEY=0;                         //清键值
 112   5                                      FLAG=1;                        //数码管闪烁标志位1(第1位闪烁)
 113   5                                      if(KEY==5)
 114   5                                      {
 115   6                                      KEY=0;                      //清键值
 116   6                                      Speed[0]+=1;
 117   6                                      while(Speed[0]>9)
C51 COMPILER V7.07   STEP                                                                  11/14/2007 10:28:44 PAGE 3   

 118   6                                      Speed[0]=0;
 119   6                                      }
 120   5                                      else if(KEY==3)
 121   5                                      break;
 122   5                              }
 123   4                              while(1)
 124   4                              {
 125   5                                       KEY=0;                         //清键值
 126   5                                      FLAG=2;                        //数码管闪烁标志位2(第2位闪烁)
 127   5                                      if(KEY==5)
 128   5                                      {
 129   6                                      KEY=0;                      //清键值
 130   6                                      Speed[1]+=1;
 131   6                                      while(Speed[1]>9)
 132   6                                      Speed[1]=0;
 133   6                                      }
 134   5                                      else if(KEY==3)
 135   5                                      break;
 136   5                              }
 137   4                         while(1)
 138   4                              {
 139   5                                       KEY=0;                         //清键值
 140   5                                       FLAG=3;                        //数码管闪烁标志位3(第3位闪烁)
 141   5                                       if(KEY==5)
 142   5                                       {
 143   6                                                KEY=0;                      //清键值
 144   6                                      Speed[2]+=1;
 145   6                                               while(Speed[2]>9)
 146   6                                      Speed[2]=0;
 147   6                                      }
 148   5                                      else if(KEY==3)
 149   5                                       break;
 150   5                              }
 151   4                              while(1)
 152   4                              {       
 153   5                                              KEY=0;                         //清键值
 154   5                                              FLAG=5;                        //数码管闪烁标志位5(第5位闪烁)
 155   5                                              if(KEY==5)
 156   5                                              {
 157   6                                              KEY=0;                      //清键值
 158   6                                              Speed[4]+=1;
 159   6                                              while(Speed[4]>9)
 160   6                                                       Speed[4]=0;
 161   6                                              }
 162   5                                              else if(KEY==3)
 163   5                                              break;
 164   5                              }
 165   4                              while(1)
 166   4                              {
 167   5                                               KEY=0;                         //清键值
 168   5                                              FLAG=6;                        //数码管闪烁标志位6(第6位闪烁)
 169   5                                              if(KEY==5)
 170   5                                              {
 171   6                                              KEY=0;                      //清键值
 172   6                                              Speed[5]+=1;
 173   6                                              while(Speed[5]>9)
 174   6                                              Speed[5]=0;
 175   6                                              }
 176   5                                              else if(KEY==3)
 177   5                                              break;
 178   5                              }
 179   4                              while(1)
C51 COMPILER V7.07   STEP                                                                  11/14/2007 10:28:44 PAGE 4   

 180   4                              {
 181   5                                      KEY=0;                         //清键值
 182   5                                      FLAG=7;                        //数码管闪烁标志位7(第7位闪烁)
 183   5                                      if(KEY==5)
 184   5                                      {
 185   6                                      KEY=0;                      //清键值
 186   6                                              Speed[6]+=1;
 187   6                                              while(Speed[6]>9)
 188   6                                              Speed[6]=0;
 189   6                                      }
 190   5                                      else if(KEY==3)
 191   5                                      break;
 192   5                              }
 193   4                              KEY=0;                            //清键值
 194   4                              // FLAG=0;                           //数码管闪烁标志位0(无闪烁)
 195   4                              SpeedX=Speed[0]+Speed[1]*10+Speed[2]*100;//计算并存储所设速度
 196   4                              SpeedY=Speed[4]+Speed[5]*10+Speed[6]*100;
 197   4                              }
 198   3                      else if(KEY==4)
 199   3                              {
 200   4                              Place[0]=Xe%10;Place[1]=Xe/10;Place[2]=11;Place[3]=11;//显示当前坐标
 201   4                              Place[4]=Ye%10;Place[5]=Ye/10;Place[6]=11;Place[7]=11;

⌨️ 快捷键说明

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