以51单片机为例,以下提及的P1,P2为单片机8位双向IO口,而并非问题中的P1~P4
P1口低四位分别作为四个输入口
P2口低四位分别作为四个输出口
old_flag=0;
new_flag=0;
while(1)
{
new_flag=P1;
if((new_flag==1)||(new_flag==2)||(new_flag==4)||(new_flag==8))
{
if((old_flag<<1)==new_flag)
{
old_flag=new_flag ;
P2=new_flag;
}
if((old_flag==1)&&(new_flag==8))
{
P2=0;
old_flag=0;
}
}
}
未进行实际测试,上面只是提出的一种大体思路。海涵。
祝你好运
电子单片机团====步行者