bit K1=P1^0;
sbit K2=P1^1;
//sbit K3=P1^2;
//sbit K4=P1^5;
//sbit K5=P1^6;
sbit OUT1=P3^4;
sbit OUT2=P3^3;
sbit OUT3=P3^1;
sbit OUT4=P3^0;
unsigned char n,b,a,i;
void main()
{
TMOD=0X01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(K1==0);
{
n=1;
n++;
}
}
void Timer0(void) interrupt 1 using 1 //定时器0中断处理
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
n++;
if(n>=20)
{
OUT1=0;OUT3=0;OUT2=1;
}
if(n>=100)
{
OUT1=1;
}
if(n>=150)
{
OUT2=0;
}
if(n>=200)
{
OUT2=1;OUT3=1;
}
//OUT3 总电源
}
K1为外接启动信号,还有打算用K2作为备用中断信号接口,K2==0的时候也可以让out3=0,输出是低电平触发,
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
void main()
{ P1=0xff;
P3=0xff;
TMOD=0X01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(K1==0)
{if(OUT4==0)
{while(K1==0)
n=0;
n++;
}
//while(1);
}
}
void Timer0(void) interrupt 1 using 1 //定时器0中断处理
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
if (n<=20) {n++;}
if(n==20)
{n=0;b++;
}
if(b==2)
{OUT1=0;OUT3=0; //开启 (4秒)
}
if(b==450) //停止
{
OUT1=1;
}
if(b==1350) //开启
{
OUT2=0;
}
if(b==2150) //停止
{
OUT2=1;OUT3=1;OUT4=0;
}
}
这样解决了 新的问题来了 我测试短时间是可以的,比如b==5,10,15,20误差也就是一秒钟,但是我设置b==900或者1800的时候就始终out1=0不变了 按理说900的时候时间应该是半小时误差允许的话也就三分钟之内,但是等待了四十五分分钟仍然没有跳变,是怎么回事呢,问题出在哪里了,求教高手
懂了
谢谢
一周热门 更多>