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

📄 common.lst

📁 51单片机基于CAN总线通信程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.09   COMMON                                                                09/23/2008 08:34:17 PAGE 1   


C51 COMPILER V8.09, COMPILATION OF MODULE COMMON
OBJECT MODULE PLACED IN common.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE src\common.c LARGE OPTIMIZE(7,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(.\comm
                    -on.lst) OBJECT(common.obj)

line level    source

   1          #include <reg52.h>
   2          #include "inc/EXT_PUBLIC_VARIABLE.H"
   3          #include "inc/CPUIO_DEF.H"
   4          #include "inc/timer_pwm.h"
   5          #include "inc/candul.H"
   6          
   7          
   8          void Delay(uchar timer)
   9          {
  10   1        uchar i;;
  11   1        for(;timer>0;timer--)
  12   1        {
  13   2           for(i=0;i<250;i++);
  14   2        }
  15   1      }
  16          /**************************************************************************************
  17          ;;函数原型: void Mot(uchar ucWay,uchar ucSpeed)
  18          ;;函数功能: 电机底层驱动程序(电机正转,电机反转,电机停止转动,电机转速,)
  19          ;;函数输入: ucWay,POSITIVE电机正转,NEGATIVE电机反转,STOPTIVE电机停止. ucSpeed ,电机转速
  20          ;;          SP100-SP10(10-1)
  21          ;;函数输出: 无
  22          ;;函数返回值: 无
  23          ;;被调用函数: 任意
  24          ***************************************************************************************/
  25          uchar Mot(uchar ucWay,uchar ucSpeed)
  26          {
  27   1          switch (ucWay)
  28   1          {
  29   2              case STOPTIVE:
  30   2                  MOTONOFF  = 1;
  31   2              break;
  32   2              case POSITIVE:
  33   2                  PwmTime0_int(500,ucSpeed);//1khz的PWM信号
  34   2                  MOTDIR    = 0;
  35   2                  MOTONOFF  = 0;
  36   2              break;
  37   2              case NEGATIVE:
  38   2                  PwmTime0_int(500,ucSpeed);
  39   2                  MOTDIR    = 1;
  40   2                  MOTONOFF  = 0;
  41   2              break;
  42   2              default:
  43   2                  return (FAILED);   
  44   2          }
  45   1          return (SUCCEED);
  46   1      
  47   1      }
  48          
  49          /**************************************************************************************
  50          ;;函数原型: void MotControl()
  51          ;;函数功能: 电机控制程序
  52          ;;函数输入: 无
  53          ;;函数输出: 无
  54          ;;函数返回值: 无
C51 COMPILER V8.09   COMMON                                                                09/23/2008 08:34:17 PAGE 2   

  55          ;;被调用函数: main
  56          ***************************************************************************************/
  57          void MotControl(void)
  58          {   uchar ucTxdBuf[8];
  59   1          if( bitSysAllowWork )
  60   1          {
  61   2              if((StopCar.sta == START)||(StopCar.sta == RUN))
  62   2              {
  63   3                  switch( StopCar.cmd )
  64   3                  {
  65   4                      case MS_REST_STOP_CAR:
  66   4                          if(HUOER_REST)//判断是否在复位霍尔位置
  67   4                          {             
  68   5                              if(StopCar.sta == START)//首次执行
  69   5                              {
  70   6                                  StopCar.sta =  RUN;
  71   6                                  Mot(NEGATIVE,P10WM); //执行复位操作电机反转
  72   6                                  bitRstFlg = 1;       //标记复位操作电机启动
  73   6                                  TimerNo[7] = CVERTIME;//启动超时定时器
  74   6                                  fTimer &= ~(0x01<<7);
  75   6                              }
  76   5                              else
  77   5                              {
  78   6                                  if(fTimer&(0x01<<7))//判断超时
  79   6                                  {    
  80   7                                      ucTxdBuf[0] = 0x03;//00000011回复相应结果(电机故障或者复位霍尔故障)
  81   7                                      CAN_TXD( MADDRESS,SM_REST_STOP_CAR,UN_ACK,1,ucTxdBuf );
  82   7                                      StopCar.sta = STOP;
  83   7                                  }
  84   6                              }
  85   5                          }
  86   4                          else
  87   4                          {
  88   5                              ucTxdBuf[0] = 0;//回复复位成功
  89   5                              CAN_TXD( MADDRESS,SM_REST_STOP_CAR,UN_ACK,1,ucTxdBuf );
  90   5                              StopCar.sta = STOP;
  91   5                          }
  92   4                      break;
  93   4                      case MS_STOP_CAR50_SLOW:
  94   4                      case MS_STOP_CAR50_FAST:
  95   4                          if(HUOER_MIDO)//判断中卫霍尔位置
  96   4                          {
  97   5                              if(StopCar.sta == START)//首次执行
  98   5                              { 
  99   6                                  if( HUOER_REST )//判断不在复位霍尔位置
 100   6                                  {
 101   7                                      Mot(NEGATIVE,P10WM); //执行复位操作电机快反转
 102   7                                      bitRstFlg = 1;       //标记复位操作电机启动
 103   7                                      //电机慢速反转复位
 104   7                                  }
 105   6                                  else //判断在复位霍尔位置
 106   6                                  {
 107   7                                      if(StopCar.cmd == MS_STOP_CAR50_FAST)
 108   7                                          Mot(POSITIVE,P10WM);    //执行电机快正转
 109   7                                      else
 110   7                                          Mot(POSITIVE,P7WM);     //执行电机快正转
 111   7                                      bitMidoFlg = 1;       //标记中位操作电机启动
 112   7                                  }
 113   6                                  StopCar.sta =  RUN;
 114   6                                  TimerNo[7] = CVERTIME;//启动超时定时器
 115   6                                  fTimer &= ~(0x01<<7);
 116   6                                  //启动超时定时器
C51 COMPILER V8.09   COMMON                                                                09/23/2008 08:34:17 PAGE 3   

 117   6                              }
 118   5                              else
 119   5                              {
 120   6                                  if(!HUOER_REST)//在复位位置
 121   6                                  {//电机调整为正传
 122   7                                      if(StopCar.cmd == MS_STOP_CAR50_FAST)
 123   7                                          Mot(POSITIVE,P10WM);    //执行电机快正转
 124   7                                      else
 125   7                                          Mot(POSITIVE,P7WM);     //执行电机快正转
 126   7                                      bitMidoFlg = 1;       //标记中位操作电机启动
 127   7                                  }
 128   6                                  if(fTimer&(0x01<<7))//判断超时
 129   6                                  {   
 130   7                                      
 131   7                                      ucTxdBuf[0] = 0x05;//00000101回复相应结果(电机故障或者中卫霍尔故障)
 132   7                                      CAN_TXD( MADDRESS,StopCar.cmd,UN_ACK,1,ucTxdBuf );
 133   7                                      //刹车强制复位
 134   7                                      StopCar.sta = STOP;
 135   7                                  }
 136   6                              }
 137   5                          }
 138   4                          else
 139   4                          {
 140   5                              if( !bitRstFlg )
 141   5                              {
 142   6                                  ucTxdBuf[0] = 0;//回复成功
 143   6                                  CAN_TXD( MADDRESS,StopCar.cmd,UN_ACK,1,ucTxdBuf );
 144   6                                  StopCar.sta = STOP;
 145   6                              }
 146   5                          }
 147   4                      break;
 148   4                      case MS_STOP_CAR100_SLOW:
 149   4                      case MS_STOP_CAR100_FAST:
 150   4                          if(HUOER_LAST)//判断结尾霍尔位置
 151   4                          {
 152   5                              if(StopCar.sta == START)//首次执行
 153   5                              {
 154   6                                  //电机慢速正转
 155   6                                  if(StopCar.cmd == MS_STOP_CAR100_FAST)
 156   6                                      Mot(POSITIVE,P10WM);    //执行电机快正转
 157   6                                  else
 158   6                                      Mot(POSITIVE,P7WM);     //执行电机快正转
 159   6                                  bitLastFlg = 1;       //标记结位操作电机启动
 160   6                                  StopCar.sta =  RUN;
 161   6                                  //启动超时定时器 
 162   6                                  TimerNo[7] = CVERTIME;//启动超时定时器
 163   6                                  fTimer &= ~(0x01<<7);                       
 164   6                              }
 165   5                          }
 166   4                          else
 167   4                          {
 168   5                              StopCar.sta = STOP;
 169   5                              if(fTimer&(0x01<<7))//判断超时
 170   5                              {   
 171   6                                  ucTxdBuf[0] = 0x09;//00001001回复相应结果(电机故障或者中卫霍尔故障)
 172   6                                  CAN_TXD( MADDRESS,StopCar.cmd,UN_ACK,1,ucTxdBuf );
 173   6                                  //刹车强制复位
 174   6                              }
 175   5                              else
 176   5                              {
 177   6                                  ucTxdBuf[0] = 0;//回复成功
 178   6                                  CAN_TXD( MADDRESS,StopCar.cmd,UN_ACK,1,ucTxdBuf );
C51 COMPILER V8.09   COMMON                                                                09/23/2008 08:34:17 PAGE 4   

 179   6                                  StopCar.sta = STOP;
 180   6                              }
 181   5                          }
 182   4      
 183   4                      break;
 184   4                      default:
 185   4                       break;
 186   4                 }
 187   3              }
 188   2          }
 189   1      }

⌨️ 快捷键说明

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