要求,开始4个亮,四个不亮,然后按下按键后,从上往下,每次亮两个,一直循环
别人的代码如下:
#include <AT89X51.H>
unsigned char a,k,n,i=0;
main()
{
P2=0x0f;
for(k=0;k<20;k++); //这句是什么意思?
if(P1_0 == 0) //还有这句
{
while(1)
{
?while(P1_0 == 0); //还有这句
a=0x03;
for(i=0;i<4;i++)
{
P2=a;
a<<=2;
for(k=0;k<200;k++)
{
for(n=0;n<200;n++);
}
}
}
}
}
能不能给我说下总体流程,然后 怎么表示按键是否按下去?
谢谢大家了
------解决方案--------------------
#include <AT89X51.H>
unsigned char a,k,n,i=0;
main()
{
P2=0x0f;//使p2.7-p2.4为输入
for(k=0;k<20;k++); //延时,什么也不做
if(P1_0 == 0) //当p1.0为低电平0时
{
while(1)//循环条件
{
?while(P1_0 == 0); //当p1.0为0时什么也不做,直到p1.0为1
a=0x03;
for(i=0;i<4;i++)//共循环4次,每次点亮两个灯
{
P2=a;//a赋值给p2口,p2.1和p2.0为1,对应灯亮
a<<=2;//a右移2位
for(k=0;k<200;k++)//以下为延时
{
for(n=0;n<200;n++);
}
}
}
}
}
给你加了注释,程序中,一直等待,p1.0应该是接在按键上,按下后p1.0为1,程序才开始执行,每次点亮2个灯,循环4次,将p2口连接的灯循环点亮。
------解决方案--------------------
楼上已经都说了
------解决方案--------------------
这个不一定,关键是看的你的硬件是如何设计的
------解决方案--------------------
