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

📄 main.lst

📁 这是一个成熟的用于驱动步进马达的程序,我们用于调试螺钉的.
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.15   MAIN                                                                  10/29/2008 21:06:48 PAGE 1   


C51 COMPILER V8.15, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c COMPACT BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include <intrins.h>
   3          #include <math.h>
   4          #include "TypeDefines.h"
   5          #include "1335c51.h"
   6          #include "delay.h"
   7          #include "ADS8364.h"
   8          #include "Iap.h"
   9          #include "STEP_MOTOR.h"
  10          #include "Menu.h"
  11          #include "ziku.h"
  12          
  13          
  14          #define EEPROM_H 0x80
  15          #define EEPROM_L 0x00
  16          
  17          #define X1 0            //定义P1点坐标(单位:0.01mm)
  18          #define Y1 (-180)
  19          #define X2 0
  20          #define Y2 180
  21          #define X3 (-180)
  22          #define Y3 0
  23          #define X4 180
  24          #define Y4 0
  25          #define X5 (-245)
  26          #define Y5 114
  27          #define X6 (-245)
  28          #define Y6 767
  29          #define X7 230
  30          #define Y7 135
  31          #define X8 230
  32          #define Y8 788
  33          #define TT_AD 1                 //定义TT面上4根传感器为1(用于调用READ_ADS8364()时作参数传递用。
  34          #define POLE_AD 2               //定义导杆上4根传感器为2(用于调用READ_ADS8364()时作参数传递用。
  35          #define CHECK_TIMES 5   //定义采样次数
  36          
  37          #define UP 0                            //马达运转方向
  38          #define DOWN 1 
  39          
  40          char ALLOW_UP=5;                                //允许误差
  41          char ALLOW_LOW=-5;
  42          
  43          int data Data1[4];                      //TT面上的4个点高度
  44          int data Data2[4];                      //导杆上的4个点高度
  45          uint idata origin1[4];          //TT面上4个点的原点
  46          uint idata origin2[4];          //导杆上4个点的原点
  47          uint data para1[4]={7000,7000,7000,7000};       //TT面上4个点的计算参数
  48          uint data para2[4]={7000,7000,7000,7000};               //TT面上4个点的计算参数
  49          uint idata step_run0;           //马达0运转的步数
  50          uint idata step_run1;           //马达1运转的步数
  51          uint idata step_run2;           //马达2运转的步数
  52          uint idata step_run3;           //马达3运转的步数
  53          int idata h5;           //P5点应该调整到的位移(目标值)
  54          int idata h6;           //P6点应该调整到的位移(目标值)
  55          int idata h7;           //P7点应该调整到的位移(目标值)
C51 COMPILER V8.15   MAIN                                                                  10/29/2008 21:06:48 PAGE 2   

  56          int idata h8;           //P8点应该调整到的位移(目标值)
  57          int idata hight_limit;                  //高度限制值
  58          int idata sensitive_limit;              //精度限制值
  59          int idata delay_value;                  //延时值(ms)
  60          
  61          
  62          extern uchar idata KeyFuncIndex;
  63          
  64          void systeminit();
  65          void zero();
  66          void check();
  67          void calculate();
  68          void NormalDisp();
  69          void disp_4point(uchar flag);
  70          void disp_target();
  71          uchar keyscan();
  72          void adjustset();
  73          void parasave();
  74          void pararead();
  75          
  76          main()
  77          {
  78   1              delay_xms(200);
  79   1              systeminit();
  80   1              NormalDisp();
  81   1              while(1)
  82   1              {
  83   2                      delay_xms(200);
  84   2                      ADS8364_read(TT_AD,CHECK_TIMES);
  85   2                      ADS8364_read(POLE_AD,CHECK_TIMES);
  86   2                      disp_4point(TT_AD);
  87   2                      disp_4point(POLE_AD);
  88   2                      adjustset();
  89   2      /*              
  90   2                      if(keyscan()==KEY_START)
  91   2                      {
  92   2                              check();
  93   2                      }
  94   2                      */
  95   2                      if(keyscan()==KEY_ADJUST)
  96   2                      {
  97   3                              zero();
  98   3                      }
  99   2                      /*
 100   2                      do
 101   2              {
 102   2                  GetKeyInput();
 103   2                              delay_xms(200);
 104   2              }while(KeyFuncIndex!=0);   */
 105   2              }       
 106   1      }
 107          
 108          uchar keyscan()
 109          {
 110   1              if((STOP==0)&&(KEY_2==1)&&(START==1))
 111   1              {
 112   2                      delay_xms(30);
 113   2                      if((STOP==0)&&(KEY_2==1)&&(START==1))
 114   2                      {
 115   3                              return KEY_STOP;
 116   3                      }
 117   2              }
C51 COMPILER V8.15   MAIN                                                                  10/29/2008 21:06:48 PAGE 3   

 118   1              else if((START==0)&&(KEY_2==1)&&(STOP==1))
 119   1              {
 120   2                      delay_xms(30);
 121   2                      if((START==0)&&(KEY_2==1)&&(STOP==1))
 122   2                      {
 123   3                              return KEY_START;
 124   3                      }
 125   2              }
 126   1              
 127   1              else if((KEY_2==0)&&(STOP==0)&&(START==0))
 128   1              {
 129   2                      delay_xms(30);
 130   2                      if((KEY_2==0)&&(STOP==0)&&(START==0))
 131   2                      {
 132   3                              return KEY_ADJUST;
 133   3                      }
 134   2              }
 135   1      }
 136          
 137          void systeminit()               //系统初始化
 138          {
 139   1              LcmInition();
 140   1              time_init();
 141   1              step_motor_init();
 142   1              pararead();
 143   1      //      zero();
 144   1      }
 145          void zero()    //较零
 146          {
 147   1              int tmp16[8];
 148   1              delay_xms(300);
 149   1              origin1[0]=0;
 150   1              origin1[1]=0;
 151   1              origin1[2]=0;
 152   1              origin1[3]=0;
 153   1              origin2[0]=0;
 154   1              origin2[1]=0;
 155   1              origin2[2]=0;
 156   1              origin2[3]=0;
 157   1              while(1)
 158   1              {
 159   2      
 160   2                      ADS8364_read(TT_AD,CHECK_TIMES);
 161   2                      ADS8364_read(POLE_AD,CHECK_TIMES);
 162   2                      tmp16[0]=Data1[0];
 163   2                      tmp16[1]=Data1[1];
 164   2                      tmp16[2]=Data1[2];
 165   2                      tmp16[3]=Data1[3];
 166   2                      tmp16[4]=Data2[0];
 167   2                      tmp16[5]=Data2[1];
 168   2                      tmp16[6]=Data2[2];
 169   2                      tmp16[7]=Data2[3];
 170   2                      delay_xms(50);
 171   2                      ADS8364_read(TT_AD,CHECK_TIMES);
 172   2                      ADS8364_read(POLE_AD,CHECK_TIMES);
 173   2                      /*
 174   2                      if((tmp16[0]-Data1[0])>ALLOW_LOW && (tmp16[0]-Data1[0])<ALLOW_UP &&
 175   2                          (tmp16[1]-Data1[1])>ALLOW_LOW && (tmp16[1]-Data1[1])<ALLOW_UP &&
 176   2                          (tmp16[2]-Data1[2])>ALLOW_LOW && (tmp16[2]-Data1[2])<ALLOW_UP &&
 177   2                          (tmp16[3]-Data1[3])>ALLOW_LOW && (tmp16[3]-Data1[3])<ALLOW_UP &&
 178   2                          (tmp16[4]-Data2[0])>ALLOW_LOW && (tmp16[4]-Data2[0])<ALLOW_UP &&
 179   2                          (tmp16[5]-Data2[1])>ALLOW_LOW && (tmp16[5]-Data2[1])<ALLOW_UP &&
C51 COMPILER V8.15   MAIN                                                                  10/29/2008 21:06:48 PAGE 4   

 180   2                          (tmp16[6]-Data2[2])>ALLOW_LOW && (tmp16[6]-Data2[2])<ALLOW_UP &&
 181   2                          (tmp16[7]-Data2[3])>ALLOW_LOW && (tmp16[7]-Data2[3])<ALLOW_UP)
 182   2                      {         */
 183   2                              origin1[0]=Data1[0];
 184   2                              origin1[1]=Data1[1];
 185   2                              origin1[2]=Data1[2];
 186   2                              origin1[3]=Data1[3];
 187   2                              origin2[0]=Data2[0];
 188   2                              origin2[1]=Data2[1];
 189   2                              origin2[2]=Data2[2];
 190   2                              origin2[3]=Data2[3];
 191   2                              break;
 192   2              //      }
 193   2              }
 194   1              ADS8364_read(TT_AD,CHECK_TIMES);
 195   1              ADS8364_read(POLE_AD,CHECK_TIMES);
 196   1              disp_4point(TT_AD);
 197   1              disp_4point(POLE_AD);
 198   1      }
 199          
 200          void calculate()                                        //计算调整目标值
 201          {
 202   1              int h51,h52,h61,h62,h71,h72,h81,h82;
 203   1              ADS8364_read(TT_AD, CHECK_TIMES);
 204   1              h51=(Y5-Y1)/(Y2-Y1)*(Data1[1]-Data1[0])+Data1[0];
 205   1              h52=Data1[2]-(X3-X5)/(X4-X3)*(Data1[3]-Data1[2]);
 206   1              h5=h51+h52;
 207   1              h61=(Y6-Y1)/(Y2-Y1)*(Data1[1]-Data1[0])+Data1[0];
 208   1              h62=Data1[2]-(X3-X6)/(X4-X3)*(Data1[3]-Data1[2]);
 209   1              h6=h61+h62;
 210   1              h71=(Y7-Y1)/(Y2-Y1)*(Data1[1]-Data1[0])+Data1[0];
 211   1              h72=Data1[3]+(X7-X4)/(X4-X3)*(Data1[3]-Data1[2]);
 212   1              h7=h71+h72;
 213   1              h81=(Y8-Y1)/(Y2-Y1)*(Data1[1]-Data1[0])+Data1[0];
 214   1              h82=Data1[3]+(X8-X4)/(X4-X3)*(Data1[3]-Data1[2]);
 215   1              h8=h81+h82;
 216   1              disp_target();
 217   1      }
 218          
 219          
 220          void check()
 221          {
 222   1              calculate();
 223   1              TR1=1;
 224   1              while(1)
 225   1              {
 226   2                      if(keyscan()==KEY_STOP)
 227   2                      {
 228   3                              TR1=0;
 229   3                              EN=1;
 230   3                              break;
 231   3                      }
 232   2                      
 233   2                      TR1=1;
 234   2                      EN=0;
 235   2                      ADS8364_read(POLE_AD,CHECK_TIMES);
 236   2                      disp_4point(POLE_AD);
 237   2                      if(Data2[0]-h5>ALLOW_UP)
 238   2                      {
 239   3                              CR0=DOWN;
 240   3                              step_run0=abs(Data2[0]-h5);
 241   3                      }
C51 COMPILER V8.15   MAIN                                                                  10/29/2008 21:06:48 PAGE 5   

 242   2                      else if(Data2[0]-h5<ALLOW_LOW)
 243   2                      {
 244   3                              CR0=UP;
 245   3                              step_run0=abs(Data2[0]-h5);
 246   3                      }
 247   2                      else
 248   2                      {
 249   3                              step_run0=0;
 250   3                      }
 251   2                      if(Data2[1]-h6>ALLOW_UP)
 252   2                      {
 253   3                              CR1=DOWN;
 254   3                              step_run1=abs(Data2[1]-h6);
 255   3                      }
 256   2                      else if(Data2[1]-h6<ALLOW_LOW)
 257   2                      {
 258   3                              CR1=UP;
 259   3                              step_run1=abs(Data2[1]-h6);
 260   3                      }
 261   2                      else
 262   2                      {
 263   3                              step_run1=0;
 264   3                      }
 265   2                      if(Data2[2]-h7>ALLOW_UP)
 266   2                      {
 267   3                              CR2=DOWN;
 268   3                              step_run2=abs(Data2[2]-h7);
 269   3                      }
 270   2                      else if(Data2[2]-h7<ALLOW_LOW)
 271   2                      {
 272   3                              CR2=UP;
 273   3                              step_run2=abs(Data2[2]-h7);
 274   3                      }
 275   2                      else
 276   2                      {
 277   3                              step_run2=0;
 278   3                      }
 279   2                      if(Data2[3]-h8>ALLOW_UP)
 280   2                      {
 281   3                              CR3=DOWN;
 282   3                              step_run3=abs(Data2[3]-h8);
 283   3                      }
 284   2                      else if(Data2[3]-h8<ALLOW_LOW)
 285   2                      {
 286   3                              CR3=UP;
 287   3                              step_run3=abs(Data2[3]-h8);
 288   3                      }
 289   2                      else
 290   2                      {
 291   3                              step_run3=0;
 292   3                      }
 293   2                      if((Data2[0]-h5)>ALLOW_LOW && (Data2[0]-h5<ALLOW_UP) &&

⌨️ 快捷键说明

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