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

📄 mainokuse.lst

📁 用电键控制步进电机朝各个方向做曲线
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.06   MAINOKUSE                                                             09/01/2006 15:13:01 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAINOKUSE
OBJECT MODULE PLACED IN MAINOKUSE.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAINOKUSE.c LARGE OMF2 OPTIMIZE(SIZE) BROWSE DEBUG

stmt level    source

   1          #include "reg52.h"
   2          #include "intrins.h"
   3          #include "math.h"
   4          #include <absacc.h>
   5          #include "VIIC_C51.h"
   6          #include "ZLG7290.h"
   7          
   8          //端口定义
   9          sbit KEY_INT=P3^2;
  10          sbit PA1=P2^0;
  11          sbit PB1=P2^1;
  12          sbit PC1=P2^2;
  13          sbit PA2=P2^4;
  14          sbit PB2=P2^5;
  15          sbit PC2=P2^6;
  16          
  17          //For Tlc2543
  18          sbit CLK = P0^0;
  19          sbit DIN = P0^1;
  20          sbit DOUT = P0^2;
  21          sbit CS = P0^3;
  22          
  23          #define Pi 3.141593
  24          //#define step (330./1500)                              //单步距离,mm
  25          //#define step (0.21375)                                //单步距离,mm
  26          #define step (119/300.)                         //单步距离,mm
  27          #define pull 0
  28          #define push 1
  29          #define c 1100.                                 //两滑轮间距,mm
  30          #define dx 158.                                 //滑轮到计数点原点投影距离,mm
  31          #define dy 158.
  32          #define minline 2.                              //最短直线分段
  33          #define motordelay 1                    //电机步间延时
  34          #define gate 0x3f                               //传感器门槛
  35          //#define gate 0x0f                             //传感器门槛                                                    //I add
  36          #define searth 35                               //寻迹步数,35=1cm
  37          //#define searthstep 10                 //寻迹最小步子,mm
  38          
  39          //#define trace_ru 1              //向右上寻迹
  40          //#define trace_rd 2              //向右下寻迹
  41          //#define trace_lu 3              //向左上寻迹
  42          //#define trace_ld 4              //向左下寻迹
  43          
  44          extern unsigned char ZLG7290_GetKey();
  45          void Display(unsigned char  *sd);       //显示程序
  46          void DelayX10ms(int count);             //Delay time=count*10ms
  47          void Delay(unsigned char no);
  48          //void RunA(long num,bit dir);          //输入转动的步数、方向,完成电机1转动(相对3相电机) 
  49          //void RunB(long num,bit dir);          //输入转动的步数、方向,完成电机1转动(相对3相电机) 
  50          //float Pointab_A(float x,float y);     //坐标变换xy-a
  51          //float Pointab_B(float x,float y);     //坐标变换xy-b
  52          //float Pointxy_X(float a,float b);     //坐标变换xy-a
  53          //float Pointxy_Y(float a,float b);     //坐标变换xy-b
  54          //void Circle(float x,float y,float r);         //画圆程序
  55          //void Stepto(float x, float y);
C51 COMPILER V7.06   MAINOKUSE                                                             09/01/2006 15:13:01 PAGE 2   

  56          //void Lineto(float x,float y);
  57          //unsigned int ad549(void);
  58          //unsigned int TraceA(void);
  59          //unsigned int TraceB(void);
  60          //void Mypath (void);
  61          //void Go_ru(void); //右上
  62          //void Go_lu(void); //左上
  63          //void Go_rd(void); //右下
  64          //void Go_ld(void); //左下
  65          //unsigned int ad1(void);
  66          //int Disp();
  67          
  68          //int flag_trace;//,Ticks;                  //0:连续; 1:断开
  69          
  70          //全局变量
  71          unsigned char key;
  72          unsigned char send[8]={00,00,00,00,00,00,00,00};//定义发送缓冲区 0~3--y 4~6--x 7--sign
  73          float alast,blast,xlast,ylast,xkey,ykey;     
  74          unsigned char disp_buf[8]={0,0,0,0,0,0,0,0};
  75          float sita,ad,xo,yo,kk,searthstep,xolast,yolast,Ticks,Traceflag,xbegin,ybegin;
  76          int ll;  //for trace
  77          
  78          void main()
  79          {
  80   1      
  81   1      sita=45;
  82   1      searthstep=5;
  83   1      Ticks=0;
  84   1      
  85   1      //xo=xlast;
  86   1      //yo=ylast;                                             
  87   1      
  88   1      
  89   1      //int test;
  90   1              //电机a初始化   
  91   1              PA1=0; 
  92   1              PB1=1;
  93   1              PC1=1;
  94   1              //random();
  95   1              //for(test=0;test<9;test++);
  96   1      
  97   1              //电机b初始化
  98   1              PA2=0; 
  99   1              PB2=1; 
 100   1              PC2=1;
 101   1              Ticks=0;
 102   1      
 103   1              while (1)
 104   1              {
 105   2                      static int i;
 106   2                      while(KEY_INT);
 107   2                      key=ZLG7290_GetKey();
 108   2                      if(key==1)i++;
 109   2                      if(key==2)i--;
 110   2                      send[0]=i%10;
 111   2                      send[1]=i/10%10;
 112   2                      send[2]=i/100%10;
 113   2                      send[3]=i/1000%10;
 114   2                      send[7]=key;
 115   2                      Display(send);
 116   2              }
 117   1      
C51 COMPILER V7.06   MAINOKUSE                                                             09/01/2006 15:13:01 PAGE 3   

 118   1      //      Circle(400,500,250);
 119   1              
 120   1      /*      for(;;)
 121   1              {
 122   1                      P0=0;
 123   1                      P1=0;
 124   1                      P2=0;
 125   1                      P3=0;
 126   1                      _nop_();
 127   1                      P0=0xff;
 128   1                      P1=0xff;
 129   1                      P2=0xff;
 130   1                      P3=0xff;
 131   1                      _nop_();
 132   1      
 133   1              }
 134   1              */
 135   1              //RunA(3000,1);
 136   1              //for(;;);
 137   1      //RunB(2500,0);
 138   1              //DelayX10ms(1000);
 139   1              //RunA(1500,pull);
 140   1              //DelayX10ms(1000);
 141   1              //RunB(1500,pull);
 142   1              //Delay(2);
 143   1              //当前点,以la、lb步数为坐标记,拉减放加
 144   1      /*
 145   1              while (1)
 146   1              {
 147   1                      while(KEY_INT);
 148   1                      key=ZLG7290_GetKey();
 149   1                      ykey=send[0]+send[1]*10+send[2]*100+send[3]*1000;
 150   1                      xkey=send[4]+send[5]*10+send[6]*100;
 151   1                      switch(key)
 152   1                      {
 153   1                              case 1 :send[0]++;      //ymm位 
 154   1                              if(send[0]==10)
 155   1                              {
 156   1                                      send[0]=00;
 157   1                              }       
 158   1                              break; 
 159   1                              case 2 :send[1]++;//ycm位 
 160   1                              if(send[1]==10)
 161   1                              {
 162   1                                      send[1]=00;
 163   1                              }
 164   1                              break;
 165   1                              case 3 :send[2]++;//ydm位
 166   1                              if(send[2]==10)
 167   1                              {
 168   1                                      send[2]=00;
 169   1                              }
 170   1                              break;
 171   1                              case 4 :send[3]++;//ym位
 172   1                              if(send[3]==2)
 173   1                              {
 174   1                                      send[3]=00;
 175   1                              }break; 
 176   1                              case 5 :send[4]++;//xmm位
 177   1                              if(send[4]==10)
 178   1                              {
 179   1                                      send[4]=00;
C51 COMPILER V7.06   MAINOKUSE                                                             09/01/2006 15:13:01 PAGE 4   

 180   1                              }
 181   1                              break;
 182   1                              case 6 :send[5]++;//xcm位       
 183   1                              if(send[5]==10)
 184   1                              {
 185   1                                      send[5]=00;
 186   1                              }
 187   1                              break;
 188   1                              case 7 :send[6]++;//xdm位       
 189   1                              if(send[6]==8)
 190   1                              {
 191   1                                      send[6]=00;
 192   1                              }
 193   1                              break;
 194   1                              case 8 :send[7]=1;Lineto(xkey,ykey);send[7]=0; break;
 195   1                              case 9 :           //输入当前坐标     
 196   1                                      xlast=xkey;
 197   1                                      ylast=ykey;
 198   1                                      alast=Pointab_A(xlast,ylast);
 199   1                                      blast=Pointab_B(xlast,ylast);
 200   1                              break;
 201   1                              case 10 :RunB(10,pull); break;
 202   1                              case 11 :RunB(10,push); break;
 203   1                              case 12 :RunA(10,pull); break;
 204   1                              case 13 :RunA(10,push); break;
 205   1                              case 14 :send[7]=4;
 206   1                                                      Ticks=0;
 207   1                                                      xo=0;
 208   1                                                      yo=0;
 209   1                                                      searthstep=5;
 210   1                                                      Traceflag=0;
 211   1                                                      xolast=xkey;
 212   1                                                      yolast=ykey;
 213   1                                                      xbegin=xkey;
 214   1                                                      ybegin=ybegin;
 215   1                                                      
 216   1                                                      if(send[0]%2==0)        TraceB();
 217   1                                                      else TraceA();
 218   1                                                      send[7]=0;break;
 219   1                              case 15 :send[7]=3;Mypath();send[7]=0;break;
 220   1                              case 16 :send[7]=2;Circle(xkey,ykey,250);send[7]=0;break;
 221   1                      }
 222   1                      Delay(100);
 223   1                      Display(send);
 224   1                      //if (key!=9) continue;//等待按键,输入坐标
 225   1                      //else break;
 226   1      }
 227   1      ylast=send[0]+send[1]*10+send[2]*100+send[3]*1000;
 228   1      xlast=send[4]+send[5]*10+send[6]*100;
 229   1      //*/
 230   1      
 231   1      //xlast=400;
 232   1      //ylast=500;
 233   1      //alast=Pointab_A(xlast,ylast);
 234   1      //blast=Pointab_B(xlast,ylast);
 235   1      
 236   1      //Lineto(0,0);
 237   1      Display(send);
 238   1      //DelayX10ms(1000);
 239   1      //RunA(4000,1);

⌨️ 快捷键说明

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