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

📄 servo.lst

📁 按键控制舵机PWM电路源程序例子文件,需要的可以
💻 LST
字号:
C51 COMPILER V8.02   SERVO                                                                 11/10/2007 21:18:44 PAGE 1   


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

line level    source

   1          #include"at89x51.h" 
   2          unsigned char TL01;
   3          unsigned char TH01;
   4          unsigned char TL02;
   5          unsigned char TH02;
   6          int A,C;
   7          
   8          void delay10ms(void)            //延时10ms子程序
   9          { 
  10   1        unsigned char i,j; 
  11   1        for(i=20;i>0;i--) 
  12   1        for(j=248;j>0;j--) ;
  13   1      } 
  14          void delay02s(void)             //延时200ms子程序
  15          { 
  16   1        unsigned char i; 
  17   1        for(i=20;i>0;i--) 
  18   1        delay10ms();
  19   1      } 
  20          
  21          
  22          void main(void) 
  23          {
  24   1      EA=1;           //开总中断
  25   1      ET0=1;  
  26   1      P3_7=0;         //脉冲波形起始状态 
  27   1      TMOD=0x01;      //定时,方式0
  28   1      
  29   1      F0=0;           //清标志位
  30   1      TR0=1;          //启动T0
  31   1      TL01=0x2E;      //舵机0 位,脉宽1.5ms
  32   1      TH01=0x0FA;     
  33   1      TL02=0x0B2;     
  34   1      TH02=0x0B7;
  35   1              while(1)
  36   1              {
  37   2                      if(P1_0==0)
  38   2                      {
  39   3                              delay10ms();            //按下,延时,防抖
  40   3                              if(P1_0==0)
  41   3                              {               //等待释放
  42   4                              delay02s();
  43   4                              A=TL01;
  44   4                              if(A!=0xFF)
  45   4                              {
  46   5                              C=0;
  47   5                                      A=A-20;         
  48   5                                      if(A<=0)
  49   5                                      {A+=255;C=1;}
  50   5                                      if(C==0)
  51   5                                      {
  52   6                                              TL01=A;
  53   6                                              C=0;
  54   6                                              A=TL02;
  55   6                                              A=A+20;
C51 COMPILER V8.02   SERVO                                                                 11/10/2007 21:18:44 PAGE 2   

  56   6                                              if(A>=255)
  57   6                                              {A-=255;C=1;}
  58   6                                              if(C==0)
  59   6                                                      {TL02=A;}
  60   6                                              else
  61   6                                                      {TH02++;TL02=A;C=0;}
  62   6                                      }
  63   5                                      else
  64   5                                      {
  65   6                                              TH01--;
  66   6                                              TL01=A;
  67   6                                              C=0;
  68   6                                              A=TL02;
  69   6                                              A=A+20;
  70   6                                              if(A>=255)
  71   6                                              {A-=255;C=1;}
  72   6                                              if(C==0)
  73   6                                                      {TL02=A;}
  74   6                                              else
  75   6                                                      {TH02++;TL02=A;C=0;}
  76   6                                       }
  77   5                               }
  78   4                  }
  79   3               }
  80   2      if(P1_1==0)
  81   2      {
  82   3              delay10ms();            //按下,延时,防抖
  83   3              if(P1_1==0)
  84   3              {               //等待释放
  85   4              delay02s();
  86   4              A=TL01;
  87   4              if(A!=0x22)
  88   4              {
  89   5                  C=0;
  90   5                      A=A+20;         
  91   5                      if(A>=255)
  92   5                      {A-=255;C=1;}
  93   5                      if(C==0)
  94   5                      {
  95   6                              TL01=A;
  96   6                              C=0;
  97   6                              A=TL02;
  98   6                              A=A-20;
  99   6                              if(A<=0)
 100   6                              {A+=255;C=1;}
 101   6                              if(C==0)
 102   6                                      {TL02=A;}
 103   6                              else
 104   6                                      {TH02--;TL02=A;C=0;}
 105   6                      }
 106   5                      else
 107   5                      {
 108   6                              TH01++;
 109   6                              TL01=A;
 110   6                              C=0;
 111   6                              A=TL02;
 112   6                              A=A-20;
 113   6                              if(A<=0)
 114   6                              {A+=255;C=1;}
 115   6                              if(C==0)
 116   6                                      {TL02=A;}
 117   6                              else
C51 COMPILER V8.02   SERVO                                                                 11/10/2007 21:18:44 PAGE 3   

 118   6                                      {TH02--;TL02=A;C=0;}
 119   6                      }
 120   5              
 121   5              }
 122   4              }
 123   3      }
 124   2      if(P1_2==0)
 125   2      {
 126   3              delay10ms();            //按下,延时,防抖
 127   3              if(P1_2==0)
 128   3              {               //等待释放
 129   4              delay02s();
 130   4              TL01=0x2E;      //舵机0 位,脉宽1.5ms
 131   4              TH01=0x0FA;     
 132   4              TL02=0x0B2;     
 133   4              TH02=0x0B7;
 134   4              }       
 135   3      }
 136   2      }
 137   1      }
 138          
 139          void timer0() interrupt 1 using 1  
 140          {
 141   1              F0=~F0; //中断服务程序
 142   1              P3_7=~P3_7;             //输出高、低电平脉冲
 143   1              if(F0==1)
 144   1                      {
 145   2                      TL0=TL01;       //高电平脉冲定时常数
 146   2                      TH0=TH01;
 147   2                      }
 148   1              else
 149   1                      {
 150   2                      TL0=TL02;       //低电平脉冲定时常数
 151   2                      TH0=TH02;       
 152   2                      }
 153   1      }
 154          


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