📄 can
字号:
C51 COMPILER V8.02 电籣 03/24/2011 22:30:54 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 电籣
OBJECT MODULE PLACED IN 电机.OBJ
COMPILER INVOKED BY: D:\单片机编程软件\keil软件\C51\BIN\C51.EXE 电机.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*?#include<reg51.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4 uchar k,a,PWMON=5,CYCLE;
5
6
7 sbit in1=P1^1;
8 sbit in2=P1^0;
9 sbit W=P1^2;//L298使能端
10 void delay(unsigned int cnt)
11 {
12 while(--cnt);
13 }
14
15 void init()
16 { TMOD =0x01;
17 TH0=(65536-100)/256;
18 TL0=(65536-100)%256;
19 IE= 0x82;
20 TR0=1;
21 IT0=1;
22 EX0=1;
23 CYCLE = 10;
24 }
25
26 void jiasu()//加速
27 { if(PWMON!=CYCLE)
28 {
29 PWMON++;
30 delay(1);
31 }
32
33 }
34
35
36
37
38
39
40 void jiansu()//减速
41 {
42 if(PWMON!=0)
43 {PWMON--;
44 delay(1);
45 }
46 }
47
48
49 void zhengzhuan()
50 {
51 in1=0;
52 in2=1;
53 }
54
55
C51 COMPILER V8.02 电籣 03/24/2011 22:30:54 PAGE 2
56 void fanzhuan()
57 {
58 in1=1;
59 in2=0;
60 }
61
62 void tizhi()
63 {in1=1;
64 in2=1;
65
66 }
67
68
69 void key()
70 {
71 P2=0xff;
72 k=P2;
73 if(k!=0xff)
74 { delay(1000);
75 if((k&0xff)!=0xff)
76 { a=k&0xff;
77 switch(a)
78 {case 0xfe:
79 zhengzhuan();break;//正转
80 case 0xfd:
81 fanzhuan();break;//反转
82 case 0xfb:
83 jiasu();break;//停止
84 case 0xf7:
85 jiasu();break;//加速
86 case 0xef:
87 tizhi();break;//减速
88 }
89 }
90 }
91 }
92
93
94
95 void main()
96 {init();
97 while(1)
98 key() ;
99
100 }
101
102
103
104
105
106
107 void tim(void) interrupt 1 using 1
108 {
109 unsigned char count;
110 TH0=(65536-100)/256;
111 TL0=(65536-100)%256;
112
113 if(count==PWMON)
114 {
115 W = 0;
116 }
117 count++;
C51 COMPILER V8.02 电籣 03/24/2011 22:30:54 PAGE 3
118 if(count== CYCLE)
119 {
120 count=0;
121 if(PWMON!=0)
122 W=1;
123
124 }
125
126 } */
127
128 #include<reg52.h>
129
130 #define V_TH0 0XFF
131 #define V_TL0 0XF6
132 #define V_TMOD 0X01
133 sbit in1=P1^1;
134 sbit in2=P1^0;
135 sbit a=P1^2;
136 sbit b=P1^4;
137
138 sbit c=P1^5;
139
140
141 void init_sys(void); /*系统初始化函数*/
142 void Delay5Ms(void);
143
144 unsigned char ZKB1,ZKB2;
145
146 void main (void)
147 {
148 1 init_sys();
149 1
150 1 in1=0;
151 1 in2=1;
152 1 ZKB1=40; /*占空比初始值设定*/
153 1 ZKB2=60; /*占空比初始值设定*/
154 1 while(1)
155 1 {
156 2 if (!b) //如果按了+键,增加占空比
157 2 {
158 3 Delay5Ms();
159 3 if (!b)
160 3 {
161 4 ZKB1++;
162 4 ZKB2=100-ZKB1;
163 4 }
164 3 }
165 2
166 2 if (!c) //如果按了-键,减少占空比
167 2 {
168 3 Delay5Ms();
169 3 if (!c)
170 3 {
171 4 ZKB1--;
172 4 ZKB2=100-ZKB1;
173 4 }
174 3 }
175 2 /*对占空比值限定范围*/
176 2 if (ZKB1>99) ZKB1=1;
177 2 if (ZKB1<1) ZKB1=99;
178 2
179 2 }
C51 COMPILER V8.02 电籣 03/24/2011 22:30:54 PAGE 4
180 1
181 1
182 1
183 1 }
184
185
186 /******************************************************
187 *函数功能:对系统进行初始化,包括定时器初始化和变量初始化*/
188 void init_sys(void) /*系统初始化函数*/
189 {
190 1 /*定时器初始化*/
191 1 TMOD=V_TMOD;
192 1 TH0=V_TH0;
193 1 TL0=V_TL0;
194 1 TR0=1;
195 1 ET0=1;
196 1 EA=1;
197 1 }
198
199
200 //延时
201 void Delay5Ms(void)
202 {
203 1 unsigned int TempCyc = 1000;
204 1 while(TempCyc--);
205 1 }
206
207 /*中断函数*/
208 void timer0(void) interrupt 1
209 {
210 1 static unsigned char click=0; /*中断次数计数器变量*/
211 1 TH0=V_TH0; /*恢复定时器初始值*/
212 1 TL0=V_TL0;
213 1 ++click;
214 1 if (click>=100) click=0;
215 1
216 1 if (click<=ZKB1) /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/
217 1 a=0;
218 1 else
219 1 a=1;
220 1
221 1 if (click<=ZKB2)
222 1 a=0;
223 1 else
224 1 a=1;
225 1
226 1 }
227
228
229
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 155 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
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 + -