Em viet doan code cho con robosumo dung ic L293D de dieu khien 2 dong co, 4 cam bien(2 truoc, 2 sau). May bac giup e phan tich thu co sai cho nao k nhe! Thank!
Code:
#include <AT89X51.H>
sbit dirA1=P2^0; //dirA1, dirB1, En1, dirA2, dirB2, En2 la 6 dau vao cua ic l293D, duoc ket noi voi cac chan cua VDK.
sbit dirB1=P2^1;
sbit En1=P1^6;
sbit dirA2=P2^2;
sbit dirB2=P2^3;
sbit En2=P1^7;
sbit cbtt=P0^0; // Cam bien truoc ben trai.
sbit cbtp=P0^1;// Cam bien truoc ben phai.
sbit cbst=P0^2;// Cam bien sau ben trai.
sbit cbsp=P0^3;// Cam bien sau ben phai.
void motortrai_toi();
void motortrai_lui();
void motortrai_dung();
void motorphai_toi();
void motorphai_lui();
void motorphai_dung();
void toi();
void lui();
void dung();
void retrai();
void rephai();
void motortrai_toi()
{
dirA1=1;
dirB1=0;
En1=1;
}
void motortrai_lui()
{
dirA1=0;
dirB1=1;
En1=1;
}
void motortrai_dung()
{
En1=0;
}
void motorphai_toi()
{
dirA2=1;
dirB2=0;
En2=1;
}
void motorphai_lui()
{
dirA2=0;
dirB2=1;
En2=1;
}
void motorphai_dung()
{
En1=0;
}
void toi()
{
motortrai_toi();
motorphai_toi();
}
void lui()
{
motortrai_lui();
motorphai_lui();
}
void dung()
{
motortrai_dung();
motorphai_dung();
}
void retrai()
{
motortrai_dung();
motorphai_toi();
}
void rephai()
{
motortrai_toi();
motorphai_dung();
}
void main()
{
unsigned char INPUT;
while(1)
{
switch(INPUT)
{
case 0:
{
if(cbtt==0&&cbtp==0)
toi();
break;
}
case 1:
{
if(cbst==1||cbsp==1)
toi();
break;
}
case 2:
{
if(cbtt==1||cbtp==1)
lui();
break;
}
case 3:
{
if(cbtp==1&&cbsp==1)
retrai();
break;
}
case 4:
{
if(cbtt==1&&cbst==1)
rephai();
break;
}
}
}
}
