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

📄 dcmotor-pwm.lst

📁 PWM 控制 直流电机调速程序 利用定时器控制产生占空比可变的 PWM 波 按K1
💻 LST
字号:
C51 COMPILER V6.12  DCMOTOR_PWM                                                            03/09/2009 22:05:35 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE DCMOTOR_PWM
OBJECT MODULE PLACED IN .\dcmotor-pwm.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE .\dcmotor-pwm.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*********************************************************
   2          		PWM 控制 直流电机调速程序
   3          		For 武汉理工大学  09.01.10
   4          		晶振11.0592M
   5          		利用定时器控制产生占空比可变的 PWM 波
   6          		按K1,PWM值增加,则占空比减小,电机速度变慢。
   7          		按K2,PWM值减小,则占空比增加,电机速度加快。	
   8          *********************************************************/
   9          
  10          #include < reg51.h >
  11          #include < intrins.h >
  12          
  13          sbit input1=P2^0;					//
  14          sbit input2=P2^1;					//
  15          sbit K1 =P1^4 ;                    //增加键
  16          sbit K2 =P1^5 ;                    //减少键
  17          sbit K3 =P1^6 ;                    //转向键
  18          sbit K4 =P1^7 ;                    //开关键
  19          sbit ENA = P2^2 ;				 //pwm输出,电机使能
  20          bit m,n; 
  21          unsigned char PWM=0x7f ;   //赋初值
  22          /*********************************************************
  23          	延时子程序
  24          *********************************************************/
  25          void delayms(unsigned char ms) 
  26          
  27          {
  28   1          unsigned char i ;
  29   1          while(ms--)
  30   1           {
  31   2              for(i = 0 ; i < 120 ; i++) ;
  32   2           }
  33   1      }
  34          /*********************************************************
  35          	 初始化子程序
  36          *********************************************************/
  37          void init()				
  38          {
  39   1      	P1=0xff; 
  40   1      	TMOD=0x21 ;
  41   1      	TH0=0xfe ;			//1ms延时常数
  42   1      	TL0=0xff ;			//频率调节
  43   1      	TH1=PWM ;			//脉宽调节
  44   1      	TL1=0 ;
  45   1      	EA=1;
  46   1      	ET0=1;
  47   1      	ET1=1;
  48   1      	TR0=1 ;
  49   1      	m=0;
  50   1      	n=0;
  51   1      }
  52          /*********************************************************/
  53          void main()
  54          {  
  55   1      	init();
C51 COMPILER V6.12  DCMOTOR_PWM                                                            03/09/2009 22:05:35 PAGE 2   

  56   1      	while(1)
  57   1      	{ 
  58   2      		if(K4==0)
  59   2      		{m=~m;while(!K4);}				//启动、停止切换
  60   2      		if(m==1)
  61   2      		{
  62   3      			if(K3==0)
  63   3      			{n=~n;while(!K3);}			//前进、后退切换
  64   3      				if(n==0)				//启动@前进
  65   3      				{
  66   4      					input1=1;
  67   4      					input2=0;
  68   4      				}
  69   3      				else					//后退
  70   3      				{
  71   4      					input1=0;
  72   4      					input2=1;
  73   4      				}
  74   3      		}
  75   2      		else							//停止
  76   2      		{
  77   3      			input1=0;
  78   3      			input2=0;
  79   3      			n=0;
  80   3      		}
  81   2      		
  82   2      		
  83   2      		do	{
  84   3      			if(PWM!=0xff)
  85   3      			{PWM++ ;delayms(5);}
  86   3      			}
  87   2      		while(K1==0);
  88   2      		
  89   2      		do	{
  90   3      			if(PWM!=0x01)
  91   3      			{PWM-- ;delayms(5);} 
  92   3      		}
  93   2      		while(K2==0);
  94   2      	}
  95   1      }
  96          
  97          /*********************************************************/
  98          // 定时器0中断服务程序.
  99          /*********************************************************/
 100          void timer0() interrupt 1 
 101          { 
 102   1          TR1=0 ;
 103   1          TH0=0xfe ;
 104   1          TL0=0xff ;
 105   1          TH1=PWM ;
 106   1          TR1=1 ;
 107   1          ENA=0 ;      //启动输出
 108   1      }
 109          
 110          /*********************************************************/
 111          // 定时器1中断服务程序
 112          /*********************************************************/
 113          void timer1() interrupt 3 
 114          { 
 115   1          TR1=0 ;
 116   1          ENA=1 ;     //结束输出
 117   1      }
C51 COMPILER V6.12  DCMOTOR_PWM                                                            03/09/2009 22:05:35 PAGE 3   

 118          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    146    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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