/* =======
直流电机的
PWM
速度控制程序
======== */
/*
晶振采用
11.0592M,
产生的
PWM
的频率约为
91Hz */
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit en1=P2^0;
/* L298
的
Enable A */
sbit en2=P2^1;
/* L298
的
Enable B */
sbit s1=P2^2;
/* L298
的
Input 1 */
sbit s2=P2^3;
/* L298
的
Input 2 */
sbit s3=P2^4;
/* L298
的
Input 3 */
sbit s4=P2^5;
/* L298
的
Input 4 */
uchar t=0;
/*
中断计数器
*/
uchar m1=0;
/*
电机
1
速度值
*/
uchar m2=0;
/*
电机
2
速度值
*/
uchar tmp1,tmp2; /*
电机当前速度值
*/
/*
电机控制函数
index-
电机号
(1,2); speed-
电机速度
(-100
—
100) */
void motor(uchar index, char speed)
{
if(speed>=-100 && speed<=100)
{
if(index==1) /*
电机
1
的处理
*/
{
m1=abs(speed); /*
取速度的绝对值
*/
if(speed<0) /*
速度值为负则反转
*/
{
s1=0;
s2=1;
}
else /*
不为负数则正转
*/
{
s1=1;
s2=0;
}
}
if(index==2) /*
电机
2
的处理
*/
{
m2=abs(speed); /*
电机
2
的速度控制
*/
if(speed<0) /*
电机
2
的方向控制
*/
{
s3=0;
s4=1;
}