You are on page 1of 6

int ST = 0, flag =0;

/*

*/
int a = 0, d =0, c =0, z = 0, e, i, y, x;
int task = 1;
byte M_FUSE_STAT = B00000000;
byte A_FUSE_STAT = B00000000;

int M_Flag;
int A_Flag;

int TEST = 7;
int ACK = 8;
int BZ = 11;
int RL1 = A0;
int RL2 = A1;
int RL3 = 12;

int TST = 0;
int EN = 2;

byte ib[6];
byte matchByte[5] = {0xA6, 0xB0, 0x01, 0x0E, 0x55};
byte outByte[] = {0xA5, 0xB0, 0x01, 0x8A, 0x0D, 0x0A};

void setup()
{
pinMode(EN, OUTPUT);
pinMode(TEST, INPUT);
pinMode(BZ, OUTPUT);
pinMode(ACK, INPUT);
pinMode(RL1, OUTPUT);
pinMode(RL2, OUTPUT);
pinMode(RL3, OUTPUT);
digitalWrite(RL1,HIGH);
digitalWrite(RL2,HIGH);
digitalWrite(RL3,HIGH);
digitalWrite(TEST,HIGH);
digitalWrite(BZ,HIGH);
digitalWrite(ACK,HIGH);

digitalWrite(EN,LOW);

Serial.begin(9600);
}

void loop()
{

switch(task)
{
case 1:
a++;
delay(4);
break;
case 2:
if (a==10)
{
digitalWrite(2, HIGH);
send1(0x01);
digitalWrite(2, LOW);
}

break;

case 3:
if (a==13)
{
digitalWrite(2, HIGH);
send1(0x02);
digitalWrite(2, LOW);
}

break;

case 4:

if (a==16)
{
digitalWrite(2, HIGH);
send1(0x03);
digitalWrite(2, LOW);
}

break;

// case 5:
// if (flag == 0)
// {
// if (a==16)
// {
// digitalWrite(2, HIGH);
// send1(0x04);
// digitalWrite(2, LOW);
// }
// }
//
// break;

case 5:
if (a>=18)
a = 0;
break;

case 6:

receive();

break;

case 7:
if(z==1)
{
even();
odd();
Relay_op();
ST=0;
flag = 0;
z = 0;
}
break;

case 8:
if (digitalRead(TEST) == LOW)
{
for(y=0;y<=499;y++)
{
delay(1);
TST++;
}
}

break;

case 9:
if(TST<=300)
TST = 0;

TEST_B();

break;

default:break;
}

task++;
if (task >= 10)
task = 1;
}
void send1(byte M)
{
delay(100);
Serial.write(0xA5);
delay(2);
Serial.write(0xB0);
delay(2);
Serial.write(M);
delay(2);
Serial.write(0x8A);
delay(2);
Serial.write(0x0D);
delay(2);
Serial.write(0x0A);

// flag = 1;
}
void receive()
{
if(Serial.available())
{
for(c = 0; c<=5; c++)
{
ib[c] = Serial.read();
ST++;
delay(10);//why????
}
}

if (ST == 6)
{
if (((ib[1] + ib[2]) == 0xB1) || ((ib[1] + ib[2]) == 0xB2) || ((ib[1] +
ib[2]) == 0xB3))
{
z = 1;
}
else
{
ST = 0;
flag = 0;
}
}
else
{
z = 0;
ST = 0;
}
}

void even()
{
//if ((bitRead(ib[3],0) == 1) || (bitRead(ib[3],2) == 1) || (bitRead(ib[3],4)
== 1) || (bitRead(ib[3],6) == 1))//////(bitRead(ib[3],0) == 1)

if( )
{
if((ib[1] + ib[2]) == 0xB1)
bitWrite(M_FUSE_STAT,0,1);

if((ib[1] + ib[2]) == 0xB2)


bitWrite(M_FUSE_STAT,1,1);

if((ib[1] + ib[2]) == 0xB3)


bitWrite(M_FUSE_STAT,2,1);
if(ib[1] == 0xB0)
bitWrite(M_FUSE_STAT,ib[2]-0x01,1);
}

if ((bitRead(ib[3],0) == 0) && (bitRead(ib[3],2) == 0) && (bitRead(ib[3],4) == 0)


&& (bitRead(ib[3],6) == 0))
{
if((ib[1] + ib[2]) == 0xB1)
bitWrite(M_FUSE_STAT,0,0);

if((ib[1] + ib[2]) == 0xB2)


bitWrite(M_FUSE_STAT,1,0);

if((ib[1] + ib[2]) == 0xB3)


bitWrite(M_FUSE_STAT,2,0);
}

void odd()
{
if ((bitRead(ib[3],1) == 1) || (bitRead(ib[3],3) == 1) || (bitRead(ib[3],5) ==
1) || (bitRead(ib[3],7) == 1))
{
if((ib[1] + ib[2]) == 0xB1)
bitWrite(A_FUSE_STAT,0,1);

if((ib[1] + ib[2]) == 0xB2)


bitWrite(A_FUSE_STAT,1,1);

if((ib[1] + ib[2]) == 0xB3)


bitWrite(A_FUSE_STAT,2,1);
}

if ((bitRead(ib[3],1) == 0) && (bitRead(ib[3],3) == 0) && (bitRead(ib[3],5) == 0)


&& (bitRead(ib[3],7) == 0))
{
if((ib[1] + ib[2]) == 0xB1)
bitWrite(A_FUSE_STAT,0,0);

if((ib[1] + ib[2]) == 0xB2)


bitWrite(A_FUSE_STAT,1,0);

if((ib[1] + ib[2]) == 0xB3)


bitWrite(A_FUSE_STAT,2,0);
}
}

void Relay_op()
{
if(M_FUSE_STAT == 0x00)
{
digitalWrite(RL1,HIGH);
}
else
{
digitalWrite(RL1,LOW);
}

if(A_FUSE_STAT == 0x00)
{
digitalWrite(RL2,HIGH);
}
else
{
digitalWrite(RL2,LOW);
}
}

void TEST_B()
{
if (TST>=490)
{
byte outByte[] ={0xA5, 0xD0, 0x01, 0x8A, 0x0D, 0x0B};
digitalWrite(EN,HIGH);
for(d=0;d<=5;d++)
{
Serial.write(outByte[d]);
delay(2);
}
digitalWrite(EN,LOW);
// delay(1000);
TST = 0;
}
}

void rxclr()
{
int cnt = 0;
for (int e=0;e<60;e++)
{
if (Serial.available()>0)
{
byte lob = Serial.read();
cnt++;
}
}
}

You might also like