📄 pwmnew.lst
字号:
C51 COMPILER V7.50 PWMNEW 07/27/2008 08:28:47 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE PWMNEW
OBJECT MODULE PLACED IN PWMnew.OBJ
COMPILER INVOKED BY: C:\Program Files\Important software\Keil\C51\BIN\C51.EXE PWMnew.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include <absacc.h>
3
4 #define uint unsigned int
5 #define uchar unsigned char
6 #define CT0 XBYTE[0x0000]//8254计数器地址
7 #define CT1 XBYTE[0x1000]
8 #define CT2 XBYTE[0x2000]
9 #define CTW XBYTE[0x3000]
10
11 sbit WDI=P2^7;
12 sbit stop=P3^3;//S1
13 sbit zhengzhuan=P2^3;//S2
14 sbit fanzhuan=P2^2;//S3
15 sbit speedup=P2^1;//S4
16 sbit speeddown=P2^0;//S5
17 sbit en=P1^0;
18 sbit zheng=P1^1;
19 sbit fan=P1^2;
20
21
22 uint speed=50;
23 uint v=5;
24 uint b;
25 uchar count = 0;
26 uint mark=0xf0;
27
28
29 void PWM8254()
30 {
31 1 WDI=!WDI;
32 1 CTW=0x16;//计数器0,只写低字节,方式3
33 1 CT0=100;//周期
34 1 CTW=0x92;//计数器2,只写低字节,方式1
35 1 CT2=speed; //可调整占空比,speed越大,速度越慢
36 1 }
37
38 void Up()
39 {
40 1 speed=speed-v;
41 1 if(speed<=5) speed=5;
42 1 CTW=0x92;
43 1 CT2=speed;
44 1 }
45
46 void Down()
47 {
48 1 speed=speed+v;
49 1 if(speed>=95) speed=95;
50 1 CTW=0x92;
51 1 CT2=speed;
52 1 }
53
54 void Stop()
55 {
C51 COMPILER V7.50 PWMNEW 07/27/2008 08:28:47 PAGE 2
56 1 en=1;
57 1 }
58
59 void delay()
60 {
61 1 TR2=1;
62 1 do{ }while(count<=3);
63 1 TR2=0;
64 1 count = 0;
65 1 }
66
67 void main()
68 {
69 1 PWM8254();
70 1 WDI=!WDI;
71 1
72 1 RCAP2H=0x10;
73 1 RCAP2L=0x00;
74 1 TR2=0;
75 1 ET2=1;
76 1 EA=1;
77 1
78 1 while(1)
79 1 {
80 2 WDI=!WDI;
81 2 if(!zhengzhuan)
82 2 {
83 3 for(b=0;b<1000;b++);
84 3 while(!zhengzhuan);
85 3 for(b=0;b<1000;b++);
86 3 if(mark==0x5a)
87 3 {
88 4 Stop();
89 4 delay();
90 4 }
91 3 en=0;
92 3 zheng=1;
93 3 fan=0;
94 3 mark=0xa5;
95 3 }
96 2 if(!fanzhuan)
97 2 {
98 3 for(b=0;b<1000;b++);
99 3 while(!fanzhuan);
100 3 for(b=0;b<1000;b++);
101 3 if(mark==0xa5)
102 3 {
103 4 Stop();
104 4 delay();
105 4 }
106 3 en=0;
107 3 fan=1;
108 3 zheng=0;
109 3 mark=0x5a;
110 3 }
111 2 if(!stop)
112 2 {
113 3 for(b=0;b<1000;b++);
114 3 while(!stop);
115 3 for(b=0;b<1000;b++);
116 3 en = 1;
117 3 mark=0xf0;
C51 COMPILER V7.50 PWMNEW 07/27/2008 08:28:47 PAGE 3
118 3 }
119 2 if(!speeddown)
120 2 {
121 3 for(b=0;b<1000;b++);
122 3 while(!speeddown);
123 3 for(b=0;b<1000;b++);
124 3 Down();
125 3 }
126 2 if(!speedup)
127 2 {
128 3 for(b=0;b<1000;b++);
129 3 while(!speedup);
130 3 for(b=0;b<1000;b++);
131 3 Up();
132 3 }
133 2 }
134 1 }
135 timer2() interrupt 5
136 {
137 1 static uchar t=0;
138 1 TF2=0;
139 1 t++;
140 1 if(t>=15)
141 1 {
142 2 t=0;
143 2 count++;
144 2 }
145 1 WDI=!WDI;
146 1 }
147
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 488 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 ----
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 + -