|
#include<reg52.h>
#include<math.h>
#define uchar unsigned char
#define unit unsigned int
sbit EN1=P1^0;
sbit EN2=P1^1;
sbit F1=P1^2;
sbit F2=P1^3;
sbit F3=P1^4;
sbit F4=P1^5;
sbit S1=P2^0;
sbit S2=P2^1;
sbit S3=P2^2;
sbit S4=P2^3;
sbit S5=P2^4;
uchar t=0; //中斷計(jì)數(shù)器
uchar Cycle=100; //確定PWM周期
uchar speed2=50; //電動(dòng)機(jī)速度值
/*T0初始化*/
T0_ini()
{
TMOD=0x02;
TH0=0xA3;
TL0=0xA3;
EA=1;
ET0=1;
TR0=1;
}
/*電動(dòng)機(jī)控制*/
void main()
{
EN1=1;EN2=1; //使能端有效
T0_ini(); //T0初始化
while(1)
{
if(S1==0){speed2=50;} //停
if(S2==0){speed2=60;} //加
if(S3==0){speed2=50;} //減
if(S4==0){speed2=60;} //正
if(S5==0){speed2=40;} //反
}
}
/*T0中斷程序,產(chǎn)生PWM信號(hào),控制電機(jī)*/
void timer0()interrupt 1
{
if(t<speed2){F3=1;F4=0;} // 產(chǎn)生電動(dòng)機(jī)2的PWM信號(hào),控制轉(zhuǎn)速方向
else{F3=0;F4=1;}
t++;
if(t>=Cycle)t=0; //1個(gè)PWM信號(hào)由100次中斷產(chǎn)生 1個(gè)PWM周期為0.1ms*100=10ms
}
|
|