📄 dcmotor-pwm.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 + -