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

📄 main.lst

📁 P89LV51RD2单片机PWM方波控制直流电机源码
💻 LST
字号:
C51 COMPILER V7.10   MAIN                                                                  12/08/2007 22:08:29 PAGE 1   


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

line level    source

   1          /*
   2                  main.c
   3                  用PWM方波控制直流电机
   4          */
   5          
   6          
   7          #include <reg51.h>
   8          
   9          
  10          //定义I/O接口
  11          sbit PWM = P1^6;                //PWM输出(电机)
  12          sbit KEY1 = P2^0;               //按键1,使PWM方波占空比增加,电机加速
  13          sbit KEY2 = P2^1;               //按键2,使PWM方波占空比减少,电机减速
  14          
  15          
  16          //定义PWM最大级数
  17          #define PWM_MAX         10
  18          
  19          
  20          //定义PWM级数,分为0~PWM_MAX-1级
  21          unsigned char PwmValue;
  22          
  23          
  24          /*
  25          函数:KeyScan()
  26          功能:键盘扫描
  27          返回:扫描到的键值
  28          */
  29          unsigned char KeyScan()
  30          {
  31   1              unsigned char k;
  32   1              k = '\0';
  33   1              if ( KEY1 == 0 ) k = '+';
  34   1              if ( KEY2 == 0 ) k = '-';
  35   1              return k;
  36   1      }
  37          
  38          
  39          /*
  40          函数:T1_INT_SVC()
  41          功能:定时器T1的中断服务函数
  42          */
  43          void T1INTSVC() interrupt 3
  44          {
  45   1              static unsigned char t = 0;
  46   1              TR1 = 0;
  47   1              TH1 = 0xFF;
  48   1              TL1 = 0x00;
  49   1              TR1 = 1;
  50   1              t++;
  51   1              if ( t >= PWM_MAX ) t = 0;
  52   1              if ( t <= PwmValue )
  53   1              {
  54   2                      PWM = 1;
  55   2              }
C51 COMPILER V7.10   MAIN                                                                  12/08/2007 22:08:29 PAGE 2   

  56   1              else
  57   1              {
  58   2                      PWM = 0;
  59   2              }
  60   1      }
  61          
  62          
  63          /*
  64          函数:Delay()
  65          功能:延时0.01~2.56s
  66          参数:
  67                  t>0时,延时(t*0.01)s
  68                  t=0时,延时2.56s
  69          */
  70          void Delay(unsigned char t)
  71          {
  72   1              do
  73   1              {
  74   2                      TH0 = 0xDC;
  75   2                      TL0 = 0x00;
  76   2                      TR0 = 1;
  77   2                      while ( !TF0 );
  78   2                      TR0 = 0;
  79   2                      TF0 = 0;
  80   2              } while ( --t != 0 );
  81   1      }
  82          
  83          
  84          /*
  85          函数:SysInit()
  86          功能:系统初始化
  87          */
  88          void SysInit()
  89          {
  90   1              TMOD &= 0xF0;
  91   1              TMOD |= 0x01;   //设置T0为16位定时器
  92   1              TMOD &= 0x0F;
  93   1              TMOD |= 0x10;   //设置T1为16位定时器
  94   1              PwmValue = PWM_MAX / 2;         //设置PWM初值
  95   1              PWM = 1;                //PWM管脚为高
  96   1              TH1 = 0xFF;
  97   1              TL1 = 0x00;             //定时器T1赋初值
  98   1              TR1 = 1;                //启动定时器T1
  99   1              ET1 = 1;                //使能T1中断
 100   1              EA = 1;                 //使能总中断
 101   1      }
 102          
 103          
 104          void main()
 105          {
 106   1              unsigned char k;
 107   1              SysInit();
 108   1              for (;;)
 109   1              {
 110   2              //键盘扫描
 111   2                      for (;;)
 112   2                      {
 113   3                              Delay(5);
 114   3                              k = KeyScan();
 115   3                              if ( k != '\0' ) break;
 116   3                      }
 117   2              //处理按键
C51 COMPILER V7.10   MAIN                                                                  12/08/2007 22:08:29 PAGE 3   

 118   2                      switch ( k )
 119   2                      {
 120   3                      case '+':
 121   3                              if ( PwmValue < PWM_MAX-1 ) PwmValue++;
 122   3                              break;
 123   3                      case '-':
 124   3                              if ( PwmValue > 0 ) PwmValue--;
 125   3                              break;
 126   3                      default:
 127   3                              break;
 128   3                      }
 129   2              //等待按键抬起
 130   2                      for (;;)
 131   2                      {
 132   3                              Delay(5);
 133   3                              if ( KeyScan() == '\0' ) break;
 134   3                      }
 135   2              }
 136   1      }
 137          


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