//T0产生双路PWM信号,L298N为直流电机调速,接L298N时相应的管脚上最好接上10K 的上拉电阻。
/* 晶振采用12M,产生的PWM的频率约为100Hz */
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit en1=P3^4; /* L298的Enable A */
sbit en2=P3^5; /* L298的Enable B */
sbit s1=P1^0; /* L298的Input 1 */
sbit s2=P1^1; /* L298的Input 2 */
sbit s3=P1^3; /* L298的Input 3 */
sbit s4=P1^2; /* L298的Input 4 */
sbit R=P2^0;
sbit C=P2^1;
sbit L=P2^2;
sbit key=P1^4;
uchar t=0; /* 中断计数器*/
uchar m1=0; /* 电机1速度值*/
uchar m2=0; /* 电机2速度值*/
uchar tmp1,tmp2; /* 电机当前速度值*/
/* 电机控制函数index-电机号(1,2); speed-电机速度(0-100) */
void motor(uchar index, char speed)
{
if(speed<=100)
{
if(index==1) /* 电机1的处理*/
{
m1=abs(speed); /* 取速度的绝对值*/
s1=1;
s2=0;
}
if(index==2) /* 电机2的处理*/
{
m2=abs(speed); /* 电机2的速度控制*/
s3=1;
s4=0;
}
}
}
void Back(void)
{
s1=0;
s2=1;
s3=1;
s4=0;
}
void GO(void)
{
s1=1;
s2=0;