motortest.lst

来自「串口控制8路舵机程序,本程序适用于III型实验板」· LST 代码 · 共 181 行

LST
181
字号
C51 COMPILER V7.06   MOTORTEST                                                             08/01/2007 21:31:25 PAGE 1   


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

stmt level    source

   1          #include "at89x52.h"
   2          #include "Motor\Motor.h"
   3          #include "series\series.h"
   4          #include "LedDigital\LedDigital.h"
   5          #include "MotorTest.h"
   6          
   7          //舵机度数控制
   8          //uint const code Motion[5] = {0xfc66,0xf8cc,0xf553,0xf199,0xee40};
   9          
  10          //舵机位选指针
  11          uchar MotorIndex=0x00;
  12          
  13          //数码管显示数据
  14          long LedDisMotorInfo;
  15          
  16          //接收到的舵机控制数组 分别为位选,度数高字节,度数低字节, 接收到的字节数(0-2)
  17          uchar MotorCtrl[3]/*={0x00,0xf5,0x53}*/ , RCharCount=0x00;
  18          
  19          //正确接收舵机控制信息发回字符串
  20          uchar const code TestStr[]={"test ok!\n"};
  21          
  22          /******************************
  23          名称:void Timer0Init(void)
  24          功能:定时/计数器0初始化程序
  25                计时2。5ms扫描8个舵机
  26          ******************************/
  27          void Timer0Init(void)
  28          {
  29   1          TH0=0xee;
  30   1              TL0=0x00;
  31   1              TMOD|=0x01;
  32   1              TR0=1;
  33   1      }
  34          
  35          /*****************************
  36          名称:void Timer1Init(void)
  37          功能:定时/计数器1初始化程序
  38                控制正频宽
  39          *****************************/
  40          void Timer1Init(void)
  41          {
  42   1          TH1=0x80;
  43   1              TL1=0x00;
  44   1              TMOD|=0x10;
  45   1              TR1=1;
  46   1      }
  47          
  48          /****************************
  49          名称:void Timer2Init(void)
  50          功能:定时/计数器2初始化程序
  51                产生波特率
  52          ****************************/
  53          void Timer2Init(void)
  54          {
  55   1          RCAP2H=0xff;
C51 COMPILER V7.06   MOTORTEST                                                             08/01/2007 21:31:25 PAGE 2   

  56   1              RCAP2L=0xb8;
  57   1          RCLK=1;
  58   1              TCLK=1;
  59   1              TR2=1;
  60   1      }
  61          
  62          /****************************
  63          名称:void CommInit(void)
  64          功能:串口初始化程序
  65          ****************************/
  66          void CommInit(void)
  67          {
  68   1          SM0=0;
  69   1              SM1=1;
  70   1              SM2=0;
  71   1              REN=1;
  72   1      }
  73          
  74          /****************************
  75          名称:void SystemInit(void)
  76          功能:系统初始化及开中断
  77          ****************************/
  78          void SystemInit(void)
  79          {
  80   1         Timer0Init();
  81   1         Timer1Init();
  82   1         Timer2Init();
  83   1         CommInit();
  84   1         EA=1;
  85   1         ET2=1;
  86   1         ES=1;
  87   1         ET1=1;
  88   1         ET0=1;
  89   1      }
  90          
  91          /*****************************
  92          名称:void Timer0Server(void)interrupt 1
  93          功能:确定正频宽
  94          ******************************/
  95          void Timer0Server(void)interrupt 1
  96          {
  97   1          TH0=0xee;
  98   1              TL0=0x00;
  99   1      
 100   1          MotorIndex%=8;  //舵机位选
 101   1          P2=0x01<<MotorIndex;
 102   1          
 103   1          TL1=MotorAngle[MotorIndex];
 104   1              TH1=MotorAngle[MotorIndex]>>8;
 105   1              MotorIndex++;
 106   1      
 107   1          LedDigitalDisplay(); //在数码管上显示舵机控制信息
 108   1      }
 109          
 110          /*****************************
 111          名称:void Timer1Server(void)interrupt 3
 112          功能:产生正频宽
 113          *****************************/
 114          void Timer1Server(void)interrupt 3
 115          {
 116   1          P2=0x00;
 117   1      }
C51 COMPILER V7.06   MOTORTEST                                                             08/01/2007 21:31:25 PAGE 3   

 118          
 119          /******************************************************
 120          名称:void CommInterServer(void)interrupt 4
 121          功能:串口中断服务程序
 122          *******************************************************/
 123          void CommInterServer(void)interrupt 4
 124          {
 125   1         if(RI==1)
 126   1         {
 127   2            MotorCtrl[RCharCount]=CommReceive();
 128   2                RI=0;
 129   2                RCharCount++;
 130   2                if(RCharCount==0x03)
 131   2                {   
 132   3                    RCharCount=0x00;
 133   3                        SetMotorCtrl(MotorCtrl); //设置舵机控制信息
 134   3                
 135   3                        LedDigitalTransport(MotorCtrlInfoToL(MotorCtrl)); //设置舵机控制信息的显示内容
 136   3                                                                          //作参数的函数:将uchar数组转换为long型
 137   3                    CommSendString(TestStr); //发送测试成功字符串
 138   3                }
 139   2         }
 140   1      }
 141          
 142          /********************************************************************************
 143          * 名称: main ()
 144          * 功能: 主函数,整个程序的入口  
 145          ********************************************************************************/
 146          void main()
 147          {
 148   1              SystemInit();
 149   1              while(1)
 150   1              {
 151   2                 ;
 152   2              }
 153   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    294    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      9    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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