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

📄 main.lst

📁 菜鸟,详细NRF24E1运用,程序,电路
💻 LST
字号:
C51 COMPILER V9.00   MAIN                                                                  11/13/2010 14:59:01 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Program Files\KEIL C  V4\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

*** WARNING C500 IN LINE 1 OF MAIN.C: LICENSE ERROR (R208: RENEW LICENSE ID CODE (LIC))

   1          /**********************************
   2          /nRF24LE1控制步进电机
   3          ***********************************/
   4          #include "reg24le1.h"
   5          #include "intrins.h"
   6          /**********************************/
   7          #define  A1  P00
   8          #define  A2  P01
   9          #define  B1  P02
  10          #define  B2  P03
  11          /**********************************/
  12          #define LEDF P04
  13          #define LEDR P05
  14          #define Disableint do{EA=0;}while(0)
  15          #define Enableint  do{EA=1;}while(0)
  16          #define TABLE_LONGTH  120
  17          /**********************************/
  18          #define true  1
  19          #define false 0
  20          /**********************************/
  21          #define Goahead 1
  22          #define Goback  0
  23          #define STOP    0
  24          #define RUN     1
  25          /**********************************/
  26          typedef unsigned int  uint;
  27          typedef unsigned char uchar;
  28          typedef struct MOTOR{
  29           uint  Steps;
  30           uint  Stepc;
  31           uchar MOTORderection;
  32           uint  Speed;
  33           uchar State;
  34          }STEPMOTORTYPE;
  35          STEPMOTORTYPE StepMotor;
  36          static  uint xdata  SpeedTable[TABLE_LONGTH];
  37          /**********************************/
  38          void MCUCLKSET()
  39          {
  40   1       CLKCTRL   = 0x28;/*使用 XCOSC16M */    
  41   1       CLKLFCTRL = 0x01;
  42   1      }
  43          /**********************************/
  44          void IOCONFIG()
  45          {
  46   1      P0DIR&=0XC0; /*设置P0.0~P0.5为输出*/
  47   1      P0=0X00;
  48   1      }
  49          /**********************************
  50          /设置定时器0用来控制速度
  51          ***********************************/
  52          void Timer0init()
  53          {
  54   1      TMOD=0X01;
C51 COMPILER V9.00   MAIN                                                                  11/13/2010 14:59:01 PAGE 2   

  55   1      TH0=(65536-50000)/256;
  56   1      TL0=(65536-50000)%256;
  57   1      ET0=1;
  58   1      TR0=1;
  59   1      EA=0;
  60   1      }               
  61          /**********************************
  62          /初始化速度表
  63          **********************************/
  64          void SpeedTableinit()
  65          {
  66   1      uchar i;
  67   1      SpeedTable[0]=30000;
  68   1      SpeedTable[1]=25000;
  69   1      for(i=2;i<TABLE_LONGTH;i++)
  70   1        {
  71   2        SpeedTable[i]=SpeedTable[i-2]-SpeedTable[i-1]/4;
  72   2        }
  73   1      }
  74          /**********************************
  75          /Delay延时函数
  76          ***********************************/
  77          void Delay(uint x)
  78          {
  79   1      uchar dl;
  80   1        for(;x>0;x--)
  81   1         for(dl=200;dl>0;dl--)
  82   1            {
  83   2                _nop_();
  84   2                }
  85   1      
  86   1      }
  87          /**********************************
  88          /脉冲设置函数
  89          **********************************/
  90          void PulseSet(uchar _A1,uchar _A2,uchar _B1,uchar _B2)
  91          {
  92   1      A1=_A1;
  93   1      A2=_A2;
  94   1      B1=_B1;
  95   1      B2=_B2;
  96   1      return;
  97   1      }
  98          /**********************************
  99          /步进电机驱动函数
 100          ***********************************/
 101          void MOTORRUN(uchar Derection)
 102          {
 103   1       static uchar Num=0;
 104   1       if(Derection==Goahead)  /*设置正转*/
 105   1       {
 106   2        Num=(Num+1)%8;                       
 107   2       }
 108   1       else                    /*设置反转*/
 109   1       {
 110   2        Num=(Num+7)%8;
 111   2       }
 112   1       switch(Num)
 113   1       {
 114   2        case 0 :PulseSet(0,1,1,1);break;
 115   2        case 1 :PulseSet(0,0,1,1);break;
 116   2        case 2 :PulseSet(1,0,1,1);break;
C51 COMPILER V9.00   MAIN                                                                  11/13/2010 14:59:01 PAGE 3   

 117   2        case 3 :PulseSet(1,0,0,1);break;
 118   2        case 4 :PulseSet(1,1,0,1);break;
 119   2        case 5 :PulseSet(1,1,0,0);break;
 120   2        case 6 :PulseSet(1,1,1,0);break;
 121   2        case 7 :PulseSet(0,1,1,0);break;
 122   2        default:break;
 123   2       }
 124   1      }
 125          /**********************************
 126          /步进电机控制运行
 127          ***********************************/
 128          void MotorCtr()
 129          {
 130   1      if(StepMotor.Steps>StepMotor.Stepc)
 131   1       {
 132   2       StepMotor.State=RUN;
 133   2       StepMotor.Speed=StepMotor.Steps-StepMotor.Stepc;
 134   2       if(StepMotor.Speed>119)
 135   2        {
 136   3        StepMotor.Speed=119;
 137   3        }
 138   2       MOTORRUN(StepMotor.MOTORderection);
 139   2       StepMotor.Stepc++;
 140   2       }
 141   1      else if(StepMotor.Steps<=StepMotor.Stepc)
 142   1       {
 143   2       StepMotor.State=STOP;
 144   2       StepMotor.Speed=0;
 145   2       StepMotor.Steps=0;
 146   2       StepMotor.Stepc=0;
 147   2       }
 148   1      }
 149          /**********************************
 150          /步进电机启动参数设置
 151          ***********************************/
 152          void MOTORSET(uchar state,bit Derection,uint steps)
 153          {
 154   1      StepMotor.Stepc=0;
 155   1      StepMotor.Steps=steps;
 156   1      StepMotor.MOTORderection=Derection;
 157   1      StepMotor.Speed=100;
 158   1      StepMotor.State=state;
 159   1      if(StepMotor.State!=STOP)  
 160   1      {TR0=1;}  /*打开步进电机前进*/
 161   1      }
 162          /**********************************
 163          /定时中断服务函数
 164          ***********************************/
 165          void TIMER0ISR() interrupt INTERRUPT_TF0
 166          {
 167   1       TR0=0;
 168   1       MotorCtr();
 169   1      // TH0=(65536-SpeedTable[StepMotor.Speed])/256;
 170   1      // TL0=(65536-SpeedTable[StepMotor.Speed])%256;
 171   1       TH0=(65536-1500)/256;
 172   1       TL0=(65536-1500)%256;
 173   1       if(StepMotor.State!=STOP)
 174   1       {
 175   2       TR0=1;/*打开定时器*/
 176   2       }
 177   1      }
 178          /*********************************
C51 COMPILER V9.00   MAIN                                                                  11/13/2010 14:59:01 PAGE 4   

 179          /主函数部分
 180          **********************************/
 181          void main()
 182          {
 183   1      /*初始化函数*/
 184   1       Disableint;
 185   1       MCUCLKSET();
 186   1       IOCONFIG();
 187   1       Timer0init();
 188   1       SpeedTableinit();
 189   1       Enableint;
 190   1      while(1)
 191   1       {
 192   2      /*设置步进电机正转*/
 193   2       LEDR=0;
 194   2       LEDF=1; 
 195   2       MOTORSET(RUN,Goahead,10000);
 196   2       while(StepMotor.State!=STOP);
 197   2       Delay(20000);
 198   2      /*设置步进电机反转*/
 199   2       LEDF=0;
 200   2       LEDR=1;
 201   2       MOTORSET(RUN,Goback,10000);
 202   2       while(StepMotor.State!=STOP);
 203   2       Delay(20000);
 204   2       }
 205   1      }
 206          /*******************************
 207          /         程序到此结束         /
 208          ********************************/
 209          
 210          
 211          
 212          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    525    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =    240    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9       7
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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