#include<reg51.h>
#include <string.h>
sbit b = P0^7; // busy flag
//sbit led1 = P2^1;
//sbit led2 = P2^2;
//sbit led3 = P2^3;
//sbit led4 = P2^0;
//sbit op = P2^0;
sbit charge = P2^4; //nap
sbit load = P2^7; //xa
unsigned int d1=5;
unsigned int f=0;
unsigned int temp;
unsigned int j=0;
unsigned int mode=1;
//unsigned int d2=0;
unsigned int c=0;
void delay(int d);
void delay(int d)
{
int k;
TL0 = 0xFF;
TH0 = 0xFF;
TR0 = 1;
for(k=0;k<d;k++)
{
while(TF0==0);
TF0 = 0;
TL0 = 0xFF;
TH0 = 0xFF;
}
TR0 = 0;
}
/*void int0(void) interrupt 0
{
switch(P1)
{
case 0x00: charge=0;load=0;EX1 = 0;break;
case 0x01: d1=5;break;
case 0x02: d1=6;break;
case 0x03: d1=7;break;
case 0x04: d1=8;break;
case 0x05: d1=9;break;
case 0x06: d1=10;break;
case 0x07: d1=11;break;
case 0x08: d1=12;break;
case 0x09: d1=13;break;
case 0x0A: d1=14;break;
case 0x0B: d1=15;break;
case 0x0C: d1=16;break;
case 0x0D: d1=17;break;
case 0x0E: d1=18;break;
case 0x0F: d1=19;break;
case 0x10: d1=20;break;
case 0x11: d1=21;break;
case 0x12: d1=22;break;
case 0x13: d1=23;break;
case 0x14: d1=24;break;
case 0x15: d1=25;break;
case 0x16: d1=26;break;
case 0x17: d1=27;break;
case 0x18: d1=28;break;
case 0x19: d1=29;break;
case 0x1A: d1=30;break;
case 0x1B: d1=31;break;
case 0x1C: d1=32;break;
case 0x1D: d1=33;break;
case 0x1E: d1=34;break;
case 0x1F: d1=35;break;
case 0x20: mode=1;break;
case 0x21: mode=2;break;
case 0x22: EX1=1;break;
}
} */
void int1(void) interrupt 2
{
int t;
switch(mode)
{
case 1: delay(d1); //che do recovery
charge=0;
for(t=0;t<10;t++);
charge=1;
EX1=0;
t=30-d1;
delay(t);
load=1;
for(t=0;t<10;t++);
load=0;
EX1=1;
break;
case 2: delay(d1);//che do nap binh thuong
charge=0;
for(t=0;t<35;t++);
charge=1;break;
case 3: load = 1; break; //che do xa binh thuong
}
}
void main()
{
// P2=0xff;
TMOD = 0x01;
IE=0x81;
EA=0x01;
TR0=1;
d1=35;
EX1=0;
EX0=0;
while(1)
{
switch(P1)
{
case 0x00: charge=1;load=0;EX1 = 0;break;
case 0x1F: d1=31; mode=1;break; //che do recovery
case 0x2F: d1=31; mode=2;break; //che do nap binh thuong
case 0x3F: d1=31; mode=3;break; //che do xa binh thuong
case 0x22: EX1=1; break;
}
};
}