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

📄 dcmotor.lst

📁 51单片机对步进电机的控制程序,可实现步进电机的正反转
💻 LST
字号:
C51 COMPILER V7.06   DCMOTOR                                                               05/22/2007 15:14:50 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DCMOTOR
OBJECT MODULE PLACED IN dcMOTOR.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE dcMOTOR.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*
   2          实验接线:
   3          1、CPU板上的INT0接电机模块上的SIGNAL。
   4          2、试验箱(台)上的CS0832选择CS1,A/D模块上的DS的1、2脚短接,VOUT接电机模块的DRV。
   5          3、试验箱(台)上的CS244接CS0,244的输入IN0--IN7接平推开关KK1--KK8的输入K1--K8
   6          实验说明:
   7            全速运行程序后,在数码管的左两位显示设定的转速(16进制),此数值可通过与
   8          244输入端相连的8个平推开关kk1---kk8设定,同时在数码管的右两位显示电机实际转速,
   9          显示的格式同左两位。认真观察数码管的右两位数值的变化,可以了解电机转速的控制过程。
  10          */
  11          #include    <reg51.h>
  12          #include    <absacc.h>
  13          #define         da_port                 XBYTE[0xcfa8]
  14          #define         da_buf                  XBYTE[0xcfa9]
  15          #define         input                   XBYTE[0xcfa0]
  16          #define         Led_dat                 XBYTE[0xcfe8]
  17          #define         Led_ctl                 XBYTE[0xcfe9]
  18          
  19          unsigned char count,speed;
  20          char  buf=0; 
  21          void Display_byte(unsigned char loc,unsigned char dat)
  22            {
  23   1         unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,
             -0x40};
  24   1         loc &=0xf;
  25   1         Led_ctl = loc|0x80;
  26   1         if(dat==0xaa) Led_dat = table[16];
  27   1         else Led_dat = table[dat>>4];     /*显示高4位*/
  28   1         loc++;
  29   1         Led_ctl = loc|0x80;
  30   1         if(dat==0xaa) Led_dat = table[16];
  31   1         else Led_dat = table[dat&0xf];    /*显示低4位*/    
  32   1        }
  33          
  34          void drv(unsigned char dat)
  35            {
  36   1         da_port = dat;
  37   1         da_buf = dat;
  38   1        }
  39          
  40          void pulse(void) interrupt 0
  41            {
  42   1         EX0 = 0;
  43   1         count++;
  44   1         EX0 = 1;
  45   1        }
  46          void time1(void) interrupt 3
  47            {
  48   1         TR1=0;
  49   1         TL1 = 0xaf;TH1 = 0x3c;
  50   1         buf++;
  51   1         if(buf>9)
  52   1           {
  53   2                speed=count;
  54   2            count=0;
C51 COMPILER V7.06   DCMOTOR                                                               05/22/2007 15:14:50 PAGE 2   

  55   2                buf=0;
  56   2               }
  57   1         TR1=1;
  58   1        }
  59          void main(void)
  60            {
  61   1         unsigned char dat,tmp,tmp1,driver=0x80;
  62   1         float ave=0;
  63   1         drv(driver);
  64   1         Led_ctl = 0xd1;
  65   1         while((Led_ctl&0x80)==0x80);
  66   1         Led_ctl = 0x31;
  67   1         TR1 = 1;
  68   1         IT0=1;EX0=1;
  69   1         TMOD = 0x10;ET1=1;TL1 = 0xaf;TH1 = 0x3c;
  70   1         EA=1;
  71   1         Display_byte(2,0xaa);
  72   1         while(1)
  73   1           {
  74   2            dat = input;
  75   2                Display_byte(0,dat);
  76   2                while((buf==0)&&(tmp1!=speed))
  77   2              {
  78   3               Display_byte(4,speed);
  79   3                   if(speed<dat)
  80   3                     {
  81   4                          tmp=input-speed;
  82   4                          if(tmp>50)
  83   4                            {
  84   5                                 driver -=0x18;
  85   5                                 if(driver>(0xff-0x17)) driver = 0;
  86   5                                }
  87   4                          else if(tmp>30)
  88   4                            {
  89   5                                 driver -=0x8;
  90   5                                 if(driver>(0xff-0x7)) driver = 0;
  91   5                                }
  92   4                          else if(tmp>10)
  93   4                            {
  94   5                                 driver -=2;
  95   5                                 if(driver>(0xff-1)) driver = 0;
  96   5                                }
  97   4                          else 
  98   4                                {
  99   5                                 driver -=1;
 100   5                                 if(driver==0xff) driver = 0;
 101   5                                }
 102   4                         }
 103   3               else
 104   3                     {
 105   4                          tmp=speed-input;    
 106   4                          if(tmp>50)
 107   4                             {
 108   5                                  driver +=0x18;
 109   5                                      if(driver<0x17) driver = 0xff;
 110   5                                 }
 111   4                          else if(tmp>30)
 112   4                             {
 113   5                                  driver +=0x8;
 114   5                                      if(driver<0x7) driver = 0xff;
 115   5                                 }
 116   4                          else if(tmp>10)
C51 COMPILER V7.06   DCMOTOR                                                               05/22/2007 15:14:50 PAGE 3   

 117   4                             {
 118   5                                  driver +=0x2;
 119   5                                      if(driver<0x1) driver = 0xff;
 120   5                                 }
 121   4                          else 
 122   4                                 {
 123   5                                  driver +=1;
 124   5                                      if(driver==0) driver = 0xff;
 125   5                                 }
 126   4                     }
 127   3               drv(driver);
 128   3                       tmp1=speed;
 129   3                  } 
 130   2               }
 131   1        }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    419    ----
   CONSTANT SIZE    =     17    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3      27
   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 + -