回复 4# 明白 的帖子
明白老师好!代码我改了下可无法延时转三角运行
请再给看看
#include
#define deda 20
unsigned int demp;
unsigned char Deda=0;
unsigned char m0_flag;
unsigned char t0_flag;
unsigned char time0_flag;
unsigned char t0_teep;
sbit Y7=P2^7;
sbit Y6=P2^6;
sbit Y5=P2^5;
sbit Y4=P2^4;
sbit Y3=P2^3;
sbit Y2=P2^2;
sbit Y1=P2^1;
sbit Y0=P2^0;
sbit X0=P1^0;
sbit X1=P1^1;
sbit X2=P1^2;
sbit X3=P1^3;
void initflag(void)
{
P0=0xff;
P2=0xff;
P1=0xff ;
P3=0xff;
m0_flag=1;
t0_flag=1;
time0_flag=1;
t0_teep=0;
}
void init_timer ()
{
TMOD=0X01;
TH0=0X4C;
TL0=0X10;
IE=0X82;
TR0=1;
}
void time8()interrupt 1 using 3
{
TH0=0x4C;
TL0=0X00;
Deda++;
if(Deda==20);
Deda=0;
//定时器1程序
if(t0_flag==0)
{
t0_teep++;
if(t0_teep>=5)
{
time0_flag=0;
t0_flag=1;
t0_teep=0;
}
}
}
void main()
{
initflag();
init_timer();
while(1)
{
//********启动条件************
if(!X1 && !X0) //电机启动
{
m0_flag=0; //启动内部辅助触点动作
t0_flag=0;//转三角定时器动作
Y7=0;
}
//主接触器
if((!m0_flag || !Y0) && !X0 && Y3 && Y4)//运行条件成立
{
Y0=0 ; //电机启动内部触点动作
m0_flag=1; //启动内部辅助复位
time0_flag =1;
}
else
{
Y0=1;
Y1=1;
Y2=1;
Y5=1;
} //运行条件不成立
///星形
if ((!Y0 && time0_flag && Y2))Y1= 0;//星形触点动作
else(Y1=1); //星形触点复位
//三角形
if ((!Y0 && !time0_flag && Y1))//三角形动作条件,定时时间到
{
Y1=1;
Y2=0;
}
}
}
[本帖最后由 hnzlf 于 2012-6-26 18:09 编辑]