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

📄 robot.lst

📁 proteus仿真实例大全
💻 LST
字号:
C51 COMPILER V7.50   ROBOT                                                                 11/19/2008 13:25:21 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE ROBOT
OBJECT MODULE PLACED IN robot.OBJ
COMPILER INVOKED BY: C:\Program Files\C51\BIN\C51.EXE robot.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "reg51.h"
   2          #include "intrins.H"
   3          //8步式步进电机脉冲序列
   4          //unsigned char steps[8] = {0x77,0x33,0xbb,0x99,0xdd,0xcc,0xee,0x66};
   5          unsigned char steps[8] = {0x2,0x6,0x4,0xc,0x8,0x9,0x1,0x3};
   6          //当前各电机在上述序列中的位置
   7          unsigned char cur_step[8] = {0,0,0,0,0,0,0,0};
   8          //这个文件用于记录舞步信息序列
   9          char speed_tickers[8] = {0,0,0,0,0,0,0,0};
  10          //从上述文件中读出的当前舞步信息
  11          unsigned char speeds[8] = {0,0,0,0,0,0,0,0};
  12          unsigned char data_pointer = 0;//指向舞步数据的指针
  13          unsigned char time_t = 0;//指定重新读取一次 speeds 值的计时周期
  14          code char dancedata[] = {54,15,12,12,87,95,65,45,-89,-88,-54,-54,54,68,-45,-65,-65,-48,101,121,115,117,19,
  15          -98,-100,-21,-114,-101,-24,-98,95,102,102,100,130,30,10,-90,-120,87,102,103,105,109,104,-30,-102,-104,-106
             -,110,100,
  16          54,15,12,12,87,95,65,45,-89,-88,-54,-54,-98,95,102,102,100,130,30,10,-90,-120,87,102-114,-101,-24,-98,95,1
             -02,102,
  17          100,130,30,10,-90,-120,87,102,102,100,130,30,10,-90,-120,87,102,103,105,54,15,12,12,87,95,65,45,-89,-88,-5
             -4,
  18          -98,-100,-21,-114,-101,-24,-98,95,102,102,100,130,30,10,-90,-120,87,102,103,105,12,87,95,65,45,-89,-88,-54
             -,
  19          -98,-100,-21,-114,-101,-24,-98,95,102,102,100,130,30,10,-90,-120,87,102,103,105,109,104,-30,-102,-104,-106
             -,110,
  20          100,130,30,10,-90,-120,87,102,102,100,130,30,10,-90,-120,87,-120,87,102,103,105,109,104,-30,-102,-104,-106
             -,110,
  21          54,15,12,12,87,95,65,45,-89,-88,-54,-54,-98,95,102,102,100,130,30,10,-90,-120,87,102-114,-101,-24,-98,95,1
             -02,102,
  22          54,15,12,12,87,95,65,45,-89,-88,-54,-54,-98,95,102,102,100,130,30,10,-90,-120,87,102-114,-101,-24,-98,95,1
             -02,102,
  23          54,15,12,12,87,95,65,45,-89,-88,-54,-54,-98,95,102,102,100,130,30,10,-90,-120,87,102-114,-101,-24,-98,95,1
             -02,102,
  24          54,15,12,12,87,95,65,45,-89,-88,-54,-54,-98,95,102,102,100,130,30,10,-90,-120,87,102-114,-101,-24,-98,95,1
             -02,102,
  25          -98,-100,-21,-114,-101,-24,-98,95,102,102,100,130,30,10,-90,-120,87,102,103,105,12,87,95,65,45,-89,-88,-54
             -,
  26          -98,-100,-21,-114,-101,-24,-98,95,102,102,100,130,30,10,-90,-120,87,102,103,105,12,87,95,65,45,-89,-88,-54
             -,
  27          -98,-100,-21,-114,-101,-24,-98,95,102,102,100,130,30,10,-90,-120,87,102,103,105,12,87,95,65,45,-89,-88,-54
             -,
  28          };
  29          code char pin[8] = {1,2,4,8,16,32,64,128};
  30          char MAX_SPEED_TICKER = 120;
  31          unsigned char i; //电机序号
  32          
  33          void InitTimer(void) //初始化计数器
  34          {
  35   1        TH0 = 0xFA;  //设置触发周期:1000次
  36   1        TL0 = 0x24;
  37   1        TMOD = TMOD |0x01;  //select mode 1
  38   1        TR0 = 1; //start timer0
  39   1        ET0 = 1; //enable timer 0 interrupt
  40   1        EA =1; //global interrupt enable
  41   1      }
  42          
C51 COMPILER V7.50   ROBOT                                                                 11/19/2008 13:25:21 PAGE 2   

  43          void SetAllSpeeds(void)  //设置各电机的速度,并让它运动起来
  44          {
  45   1        char delta;  //旋转方向 1:正 -1:反  0:停
  46   1        for(i=0;i<8;i++)
  47   1        {
  48   2          P2=pin[i]; //发送锁存信号
  49   2          speed_tickers[i] += speeds[i]; //计数值增加 speed[i]越高,增加得越多
  50   2          if(speed_tickers[i] >= MAX_SPEED_TICKER) //如果计数值超过预定最大值,就发送脉冲
  51   2          {
  52   3            speed_tickers[i] = 0;
  53   3            delta = 1;
  54   3          }
  55   2          else if(speed_tickers[i] <= -MAX_SPEED_TICKER) //同上,反响旋转
  56   2          {
  57   3            speed_tickers[i] = 0;
  58   3            delta = -1;
  59   3          }
  60   2          else delta = 0;
  61   2          cur_step[i] += delta;
  62   2          cur_step[i] &= 0x07; //计算当前应发脉冲
  63   2          P0 = steps[cur_step[i]];
  64   2          P2 = 0;
  65   2        }
  66   1      }
  67          
  68          void OnTimer(void) interrupt 1 using 2
  69          {
  70   1        unsigned char j;
  71   1        SetAllSpeeds();
  72   1        InitTimer();
  73   1        time_t++;
  74   1        if(time_t==200) //每200次触发读取一次新舞步数据
  75   1        {
  76   2          for(j=0;j<8;j++)
  77   2            speeds[j] = dancedata[data_pointer+j];
  78   2          data_pointer += 8;
  79   2          time_t = 0;
  80   2        }
  81   1      }
  82          
  83          void main()  //程序的入口
  84          {
  85   1        InitTimer();  //初始化后等中断
  86   1        while(1);
  87   1      }
  88              


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    221    ----
   CONSTANT SIZE    =    406    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     36    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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