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

📄 servomotor.lst

📁 利用脉冲控制伺服电机运转
💻 LST
字号:
C51 COMPILER V8.02   SERVOMOTOR                                                            08/20/2008 15:32:23 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE SERVOMOTOR
OBJECT MODULE PLACED IN servomotor.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE servomotor.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /////////////////////////////////////
   2          //  Generated Initialization File  //
   3          /////////////////////////////////////
   4          
   5          #include "C8051F120.h"
   6          #define M 5529
   7          sbit p = P3 ^ 0;     //伺服电机脉冲
   8          sbit a = P4 ^ 0;     //伺服电机son信号,实际上并不需要son信号了,因为BRKR一直处于on状态
   9          sbit dirs = P3 ^ 1;      //伺服电机方向信号
  10          sbit m = P5^0;
  11          sbit n = P2^4;
  12          sbit k = P7^0;
  13          unsigned long T=0;
  14          // Peripheral specific initialization functions,
  15          // Called from the Init_Device() function
  16          void Reset_Sources_Init()
  17          {
  18   1          WDTCN     = 0xDE;
  19   1          WDTCN     = 0xAD;
  20   1      }
  21          
  22          void Port_IO_Init()
  23          {
  24   1          // P0.0  -  TX0 (UART0), Open-Drain, Digital
  25   1          // P0.1  -  RX0 (UART0), Open-Drain, Digital
  26   1          // P0.2  -  TX1 (UART1), Open-Drain, Digital
  27   1          // P0.3  -  RX1 (UART1), Open-Drain, Digital
  28   1          // P0.4  -  Unassigned,  Open-Drain, Digital
  29   1          // P0.5  -  Unassigned,  Open-Drain, Digital
  30   1          // P0.6  -  Unassigned,  Open-Drain, Digital
  31   1          // P0.7  -  Unassigned,  Open-Drain, Digital
  32   1      
  33   1          // P1.0  -  Unassigned,  Open-Drain, Digital
  34   1          // P1.1  -  Unassigned,  Open-Drain, Digital
  35   1          // P1.2  -  Unassigned,  Open-Drain, Digital
  36   1          // P1.3  -  Unassigned,  Open-Drain, Digital
  37   1          // P1.4  -  Unassigned,  Open-Drain, Digital
  38   1          // P1.5  -  Unassigned,  Open-Drain, Digital
  39   1          // P1.6  -  Unassigned,  Open-Drain, Digital
  40   1          // P1.7  -  Unassigned,  Open-Drain, Digital
  41   1      
  42   1          // P2.0  -  Unassigned,  Open-Drain, Digital
  43   1          // P2.1  -  Unassigned,  Open-Drain, Digital
  44   1          // P2.2  -  Unassigned,  Open-Drain, Digital
  45   1          // P2.3  -  Unassigned,  Open-Drain, Digital
  46   1          // P2.4  -  Unassigned,  Open-Drain, Digital
  47   1          // P2.5  -  Unassigned,  Open-Drain, Digital
  48   1          // P2.6  -  Unassigned,  Open-Drain, Digital
  49   1          // P2.7  -  Unassigned,  Open-Drain, Digital
  50   1      
  51   1          // P3.0  -  Unassigned,  Push-Pull,  Digital
  52   1          // P3.1  -  Unassigned,  Push-Pull,  Digital
  53   1          // P3.2  -  Unassigned,  Push-Pull,  Digital
  54   1          // P3.3  -  Unassigned,  Push-Pull,  Digital
  55   1          // P3.4  -  Unassigned,  Push-Pull,  Digital
C51 COMPILER V8.02   SERVOMOTOR                                                            08/20/2008 15:32:23 PAGE 2   

  56   1          // P3.5  -  Unassigned,  Push-Pull,  Digital
  57   1          // P3.6  -  Unassigned,  Push-Pull,  Digital
  58   1          // P3.7  -  Unassigned,  Push-Pull,  Digital
  59   1      
  60   1          SFRPAGE   = CONFIG_PAGE;
  61   1          P3MDOUT   = 0xFF;
  62   1          P4MDOUT   = 0xFF;
  63   1          P5MDOUT   = 0xFF;
  64   1          P6MDOUT   = 0xFF;
  65   1          P7MDOUT   = 0xFF;
  66   1          XBR0      = 0x04;
  67   1          XBR2      = 0x44;
  68   1      }
  69          
  70          void Oscillator_Init()
  71          {  
  72   1              int i = 0;
  73   1          SFRPAGE   = CONFIG_PAGE;
  74   1          OSCXCN    = 0x67;
  75   1          for (i = 0; i < 3000; i++);  // Wait 1ms for initialization
  76   1          while ((OSCXCN & 0x80) == 0);
  77   1          CLKSEL    = 0x01;   
  78   1      
  79   1      }
  80          
  81          // Initialization function for device,
  82          // Call Init_Device() from your main program
  83          void Init_Device(void)
  84          {
  85   1          Reset_Sources_Init();
  86   1          Port_IO_Init();
  87   1          Oscillator_Init();
  88   1      }
  89          
  90           /******************************************************************************
  91          函数:Timer0Isr
  92          描述:定时器3中断服务程序,Timer0
  93          参数:无
  94          返回:无                          
  95          ******************************************************************************/
  96          void Timer0Isr (void) interrupt 1 using 1
  97          {  
  98   1              ET0 = 0;
  99   1              //TH0 = 0xF8;
 100   1              //TL0 = 0xCD;
 101   1              SFRPAGE = 0x00;
 102   1              TH0 = -M/256;           
 103   1              TL0 = -M%256; 
 104   1              T++;
 105   1              if(T <= 400)
 106   1              {
 107   2                      p = !p;    
 108   2              }
 109   1              else 
 110   1              {   
 111   2                      SFRPAGE = 0x0F;
 112   2                      a = 1; 
 113   2                      SFRPAGE = 0x00;   
 114   2                      TR0 = 0;
 115   2              T = 0;
 116   2              }
 117   1              ET0=1;
C51 COMPILER V8.02   SERVOMOTOR                                                            08/20/2008 15:32:23 PAGE 3   

 118   1      }
 119              
 120          void pulse(void)
 121          {   
 122   1              p=0;
 123   1          SFRPAGE   = TIMER01_PAGE;
 124   1          TMOD|= 0x01;            //TMOD: timer 0, mode 1, 16-bit timer
 125   1              //TH0 = 0xF8;             //Timer0 TH0 high byte reload initial value
 126   1              //TL0 = 0xCD;             //Timer0 TL0 low byte write initial value(1ms)
 127   1              TH0 = -M/256;           
 128   1              TL0 = -M%256; 
 129   1              EA = 1; 
 130   1          ET0 = 1;                //Timer0 Interrupt Unable(IE.1)
 131   1              SFRPAGE = 0x00;
 132   1              TR0 = 1;
 133   1              
 134   1       }
 135          main()
 136          { 
 137   1              /*   
 138   1               long j = 0;
 139   1               Init_Device();
 140   1               dirs = 1;
 141   1               SFRPAGE = 0x0F;
 142   1           a = 1;
 143   1           for(;j <= 10000;j++);
 144   1               pulse(); 
 145   1          while(1);
 146   1              */
 147   1              Init_Device();
 148   1              SFRPAGE = 0x0F;
 149   1              //P5 = P2&0xFF;
 150   1              
 151   1              P7 = 0x00;
 152   1      
 153   1              m = k&n;
 154   1      }
 155          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    214    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4    ----
   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 + -