///////////////////////////// Dieu khien toc do dong co bang xung PWM
///////////////// Khai bao thu vien
#include<reg52.h>
#include<math.h>
#include<stdio.h>
////////////////// Khai bao bien
sbit F=P2^7;
sbit T=P1^4;
sbit G=P1^5;
sbit QT=P1^6;
sbit QN=P1^7;
sbit QT1=P2^5;
sbit QN1=P2^6;
unsigned int i;
/////////////////// Ham tao xung PWM
void taoxung(unsigned int i)
{
F=1;
TR0=0;
TH0=-i/256;
TL0=-i%256;
TR0=1;
while(!TF0);
TF0=0;
F=0;
TR0=0;
TH0=-(1000-i)/256;
TL0=-(1000-i)%256;
TR0=1;
while(!TF0);
TF0=0;
}
/////////////// Tao momen cho DC
void momen(void)
{
if ((G==1)&&(T==1))
{
i=i+100;
taoxung(i);
}
if(i>=700) i=i-100;
}
/////////////// Tang toc do dong co
void tang(void)
{
if(T==1);
else
{
while ((G==1)&&(QT==1)&&(QN==1))
{
i=i+10;
taoxung(i);
if(i>=990) i=i-10;
} } }
/////////////// Giam toc do dong co
void giam(void)
{
if(G==1);
else
{
while ((T==1)&&(QT==1)&&(QN==1))
{
i=i-10;
taoxung(i);
if(i<=10) i=i+10;
}}}
/////////////// Dieu khien dong co quay thuan
void thuan(void)
{
if(QT==1)
{
QT1=0;
QN1=0;
}
else
{
while(QN==1)
{
QN1=0;
QT1=1;
tang();
giam();
momen();
}}}
//////////////////// Dieu khien dong co quay nghich
void nghich(void)
{
if(QN==1)
{
QT1=0;
QN1=0;
}
else
{
while(QT==1)
{
QN1=1;
QT1=0;
tang();
giam();
momen();
}}}
/////// Chuong trinh chinh
void main(void)
{
TMOD=0x01;
while(1)
{
thuan();
nghich();
}}
///////////////// Khai bao thu vien
#include<reg52.h>
#include<math.h>
#include<stdio.h>
////////////////// Khai bao bien
sbit F=P2^7;
sbit T=P1^4;
sbit G=P1^5;
sbit QT=P1^6;
sbit QN=P1^7;
sbit QT1=P2^5;
sbit QN1=P2^6;
unsigned int i;
/////////////////// Ham tao xung PWM
void taoxung(unsigned int i)
{
F=1;
TR0=0;
TH0=-i/256;
TL0=-i%256;
TR0=1;
while(!TF0);
TF0=0;
F=0;
TR0=0;
TH0=-(1000-i)/256;
TL0=-(1000-i)%256;
TR0=1;
while(!TF0);
TF0=0;
}
/////////////// Tao momen cho DC
void momen(void)
{
if ((G==1)&&(T==1))
{
i=i+100;
taoxung(i);
}
if(i>=700) i=i-100;
}
/////////////// Tang toc do dong co
void tang(void)
{
if(T==1);
else
{
while ((G==1)&&(QT==1)&&(QN==1))
{
i=i+10;
taoxung(i);
if(i>=990) i=i-10;
} } }
/////////////// Giam toc do dong co
void giam(void)
{
if(G==1);
else
{
while ((T==1)&&(QT==1)&&(QN==1))
{
i=i-10;
taoxung(i);
if(i<=10) i=i+10;
}}}
/////////////// Dieu khien dong co quay thuan
void thuan(void)
{
if(QT==1)
{
QT1=0;
QN1=0;
}
else
{
while(QN==1)
{
QN1=0;
QT1=1;
tang();
giam();
momen();
}}}
//////////////////// Dieu khien dong co quay nghich
void nghich(void)
{
if(QN==1)
{
QT1=0;
QN1=0;
}
else
{
while(QT==1)
{
QN1=1;
QT1=0;
tang();
giam();
momen();
}}}
/////// Chuong trinh chinh
void main(void)
{
TMOD=0x01;
while(1)
{
thuan();
nghich();
}}