单片机PWM电机调速程序

#include
#include
#define uchar unsigned char
#define uint unsigned int

uchar time,count=20,flag=1;
sbit PWM1=P2^1;
sbit PWM2=P2^0;
sbit PWM3=P2^2;
sbit PWM4=P2^3;

sbit key_add=P3^0;
sbit key_dec=P3^1;
sbit key_turn=P3^2;
//=============函数声明============================
void delay(uint z);
void Motor_turn();
void Motor_add();
void Motor_dec();
void time0_init();
//=================================================
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=500;y>0;y--);
}

void Motor_turn()
{
if(key_turn==0)
{
delay(2);
if(key_turn==0)
{
flag=~flag;
}
while(!key_turn);
}
}

void Motor_add()
{
if(key_add==0)
{
delay(2);
if(key_add==0)
{
count+=5;
if(count>=100)
{
count=100;
}
}
while(!key_add);
}
}

void Motor_dec()
{
if(key_dec==0)
{
delay(2);
if(key_dec==0)
{
count-=5;
if(count>=100)
{
count=0;
}
}
while(!key_dec);
}
}

void time0_init()
{
TMOD=0x01;
TH0=0xff; // (65536-10)/256; 赋初值定时
TL0=0xf6; // (65536-10)%256; 0.01ms
EA=1;
ET0=1;
TR0=1;
}
void time0() interrupt 1
{
TR0=0;
TH0=0xff;
TL0=0xf6;
TR0=1;

if(flag==1)
{
PWM1=0;
PWM3=0;
time++;
if(time{
PWM2=1;

PWM4=1;
}
else
{
PWM2=0;

PWM4=0;
}
if(time>=100)
{
time=0;
}
}
else
{
PWM2=0;
PWM4=0;
time++;
if(time{
PWM1=1;

PWM3=1;
}
else
{
PWM1=0;

PWM3=0;
}
if(time>=100)
{
time=0;
}
}

}

void main()
{

time0_init();

while(1)
{
Motor_turn();
Motor_add();
Motor_dec();
}
}

相关文档
最新文档