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

📄 main.lst

📁 单片机步进电机实验
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  12/04/2005 13:11:26 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>
   2          #include "absacc.h"
   3          
   4          //定义每分钟的最大和最小的转速
   5          #define max_speed 240
   6          #define min_speed 20
   7          //按键对应的值
   8          #define START           0xFE
   9          #define STOP            0xFD
  10          #define TURN            0xFC
  11          #define UP                      0xFB
  12          #define DOWN            0xFA
  13          //电机用变量和常量
  14          int index_speed=100;
  15          int  time_inteval=0;
  16          unsigned int current_times=0;
  17          char current_step=0;
  18          char code motor_step[]={0x05,0x07,0x06,0x0e,0x0a,0x0b,0x09,0x0d};
  19          //================================================================
  20          //================================================================
  21          unsigned char method=STOP;//按键参数
  22          unsigned char expect_speed;
  23          bit dir=0;//方向 0为顺时针 1为逆逆时针
  24          //================================================================
  25          //=================================================================
  26          main()
  27          {
  28   1              expect_speed=index_speed;
  29   1              time_inteval=60000/8;
  30   1              time_inteval=time_inteval/index_speed;
  31   1              EA=1;
  32   1              ET0=1;
  33   1              TMOD=0x01;//定时器0工作在方式1
  34   1              //设置定时器0的参数
  35   1              TH0=0xFC;
  36   1              TL0=0x17;
  37   1              TR0=0;
  38   1              //开启外部中断
  39   1              EX0=1;
  40   1              IT0=1;  //设置为低电平触发
  41   1              P2=0xff;
  42   1              P1=motor_step[current_step];
  43   1              while(1)
  44   1              {
  45   2              };
  46   1      }
  47          
  48          void timeon() interrupt 1
  49          {
  50   1              TH0=0xFC;//重新载入频率
  51   1              TL0=0x17;
  52   1              if (current_times<time_inteval)
  53   1                      current_times++;
  54   1              else
  55   1              {
C51 COMPILER V7.50   MAIN                                                                  12/04/2005 13:11:26 PAGE 2   

  56   2                      if(dir==0)
  57   2                      {
  58   3                              if(current_step==0)current_step=7;
  59   3                              else current_step--;
  60   3                      }
  61   2                      else if(dir==1)
  62   2                      {
  63   3                              if(current_step==7)current_step=0;
  64   3                              else current_step++;    
  65   3                      }
  66   2                      P1=motor_step[current_step];
  67   2                      current_times=0;
  68   2              }
  69   1      }
  70          
  71          
  72          void intter() interrupt 0
  73          {       
  74   1              method=P2;//扫描端口P2的值
  75   1              if(method==TURN)
  76   1              {
  77   2                      dir=~dir;
  78   2              }
  79   1              //加速设置
  80   1              else if(method==UP)
  81   1              {       
  82   2                      if(expect_speed<=(max_speed-20))
  83   2                      {       
  84   3                              expect_speed=expect_speed+20;
  85   3                              time_inteval=60000/8;
  86   3                              time_inteval=time_inteval/expect_speed;
  87   3                      }
  88   2              }
  89   1              //减速设置
  90   1              else if(method==DOWN)
  91   1              {
  92   2                      if(expect_speed>=(min_speed+20))
  93   2                      {       
  94   3                              expect_speed=expect_speed-20;
  95   3                              time_inteval=60000/8;
  96   3                              time_inteval=time_inteval/expect_speed;
  97   3                      }
  98   2              }
  99   1              //停止中断
 100   1              else if(method==STOP)//不是STOP键,则启动时钟中断
 101   1                      TR0=0;
 102   1              //启动中断
 103   1              else if(method==START)
 104   1              {
 105   2                      current_step=0;//重新初始化初值
 106   2                      current_times=0;
 107   2                      time_inteval=60000/8;
 108   2                      time_inteval=time_inteval/index_speed;
 109   2                      expect_speed=index_speed;
 110   2                      TR0=1;
 111   2              }
 112   1      
 113   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    335    ----
C51 COMPILER V7.50   MAIN                                                                  12/04/2005 13:11:26 PAGE 3   

   CONSTANT SIZE    =      8    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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