|
求幫助!我用定時(shí)中斷做個定時(shí)水循環(huán)系統(tǒng),代碼沒報(bào)錯,但是關(guān)水泵的時(shí)間和預(yù)想的不一樣,請教大佬,我哪里弄錯了原定計(jì)劃是:5分鐘開, 30分鐘關(guān),這樣一直循環(huán)。
void time0_init(void)
{
TMOD|=0X01;//選擇為定時(shí)器0模式,工作方式1
TH0=0XFC; //給定時(shí)器賦初值,定時(shí)1ms
TL0=0X18;
ET0=1;//打開定時(shí)器0中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時(shí)器
}
void main()
{
time0_init();//定時(shí)器0中斷配置
// beng=0;
while(1)
{
}
}
void time0() interrupt 1 //定時(shí)器0中斷函數(shù)
{
static u16 i;//定義靜態(tài)變量i
static u8 j; //定義秒變量
static u8 k; //定義分鐘變量
TH0=0XFC; //給定時(shí)器賦初值,定時(shí)1ms
TL0=0X18;
i++;
if(i==1000) //一秒的計(jì)時(shí)
{
i=0;
j++;
}
if(j==60) //一分鐘的計(jì)時(shí)
{
k++;
j=0;
i=0;
}
if(k==5 && beng==0) //到了5分鐘,并且水泵打開的情況下
{
beng=1; //關(guān)閉水泵
k=0;
i=0;
j=0;
}
if(k==30 && beng==1) //到了30分鐘,并且水泵關(guān)閉的情況下
{
beng=0; //打開水泵
k=0;
i=0;
j=0;
}
}
|
|