
#include <at89lp4052.h>


#define ON 1
#define OFF 0

sbit MOTOR1_input1 = P3^0;
sbit MOTOR1_input2 = P3^1;
sbit MOTOR2_input1 = P3^4;
sbit MOTOR2_input2 = P3^5;

sbit opto_1	= P1^7;
sbit opto_2	= P1^6;
sbit opto_3	= P1^5;
sbit opto_4	= P1^2;
sbit opto_5	= P1^1;
sbit opto_6	= P1^0;

/********** Delay time ***************************/
void delay_s(unsigned int sec)
{
	unsigned int i,j;
		for(; sec>0; sec--)
			for (i=1000; i>0; i--)
				for (j=120; j>0; j--);
}

/**************** Motor Stop *********************/
void STOP()
{
	MOTOR1_input1 = OFF;
	MOTOR1_input2 = OFF;
	MOTOR2_input1 = OFF;
	MOTOR2_input2 = OFF;
}

/**************** Motor Forward ******************/
void FORWARD()
{				
	MOTOR1_input1=ON;
	MOTOR1_input2=OFF;
	MOTOR2_input1=ON;
	MOTOR2_input2=OFF;
}

/**************** Motor Backword *****************/
void BACKWARD()
{				
	MOTOR1_input1=OFF;
	MOTOR1_input2=ON;
	MOTOR2_input1=OFF;
	MOTOR2_input2=ON;
}

/**************** Motor Left *********************/
void TURN_LEFT()
{
	MOTOR1_input1=OFF;
	MOTOR1_input2=ON;
	MOTOR2_input1=ON;
	MOTOR2_input2=OFF;
}

/**************** Motor Rigth *********************/
void TURN_RIGTH()
{
	MOTOR1_input1=ON;
	MOTOR1_input2=OFF;
 	MOTOR2_input1=OFF;
	MOTOR2_input2=ON;
}

/**************** Main Program ********************/
void main(void)
{
	P1M0 = 0xFF;
	P1M1 = 0x00;
	P3M0 = 0xFF;
	P3M1 = 0xFF;

	STOP();delay_s(2);
	
	while (1)
		{
		FORWARD();		delay_s(2); STOP(); delay_s(1);
		
		BACKWARD();		delay_s(2); STOP(); delay_s(1);

		TURN_LEFT();	delay_s(2); STOP(); delay_s(1);

		TURN_RIGTH();	delay_s(2); STOP(); delay_s(1);
		}

}