两个开关没有顺序,先触发谁,就执行下面的结果,例如如果1执行完后再次触发K1,就继续1的功能,如果是再次触发K2,就执行K2的功能,同理2执行也是一样的。可能我描述有点问题,就是一个电机正反转,触发K1,电机正转,电机到了K2的位置,触发一下K2,电机就停止了,这个时候触发K1还是正转,如果触发K2就是反转,到达对面触发开关就停止。
#include <reg52.h>
sbit IN1 = P3^4;
sbit IN2 = P3^5;
sbit Tin= P2^1;
sbit Qi = P2^2;
bit k=0, x=0;
/*两个开关没有顺序,先触发谁,就执行下面的结果,例如如果1执行完后再次触发K1,就继续1的功能,如果是再次触发K2,就执行K2的功能,同理2执行也是一样的。http://www.51hei.com/bbs/forum.php?mod=viewthread&tid=165521&page=1#pid720113*/
void main()
{
while(1)
{
if(!k)
{
if(!Qi&&Tin)
{
k=x=1;
while(!Qi);
}
if(Qi&&!Tin)
{
k=1;
x=0;
while(!Tin);
}
}
else
{
if(x)
{
IN1=1;
IN2=0;
}
else
{
IN1=0;
IN2=1;
}
if(!Qi||!Tin)
{
k=0;
IN1=IN2=0;
while(!Qi||!Tin);
}
}
}
}
我只保证我的逻辑思路代码通过验证是正确执行的并符合提问,做了仿真同时用2个LED指示作为验证电的通断,而不保证仿真中的电机转子转动惯性及你实际电机转子转动的原因是虾米.