两个按键事实上只有3种组合,其中两个按键都没按下这个组合是无效的,为了获得第4种组合,按键2(P1.1)采用计时方式加入组合,按键按下时间大于1秒为组合3,否则为组合4,程序:
main()
{
unsigned char i;
while(1)
{
while((P1&0x03)==0x03);//等待按键按下
delay(5);//按键去抖50毫秒
if(!(P1&0x03))//如果两个按键都按下
{
P2 |= 0x0F;//所有的LED灭
P2^0 = 0;//组合1:LED1亮
while((P1&0x03)!=0x03);//等待两个按键都释放
}
else if(!P1^0)//如果只有按键1按下
{
P2 |= 0x0F;//所有的LED灭
P2^1 = 0;//组合2:LED2亮
while(!P1^0);//等待按键1释放
}
else if(!P1^1) //如果只有按键2按下
{
for(i = 100;i>0;i--)
{
if(P1^1)break;
delay(1);//延时10毫秒
}
if(!i)//如果按键按下的时间大于1秒
{
P2 |= 0x0F;//所有的LED灭
P2^2 = 0;//组合3:LED3亮
}
else{
P2 |= 0x0F;//所有的LED灭
P2^3 = 0;//组合4:LED4亮
}
while(!P1^1);//等待按键2释放
}
}
}
实验标题:循环结构程序设计
编写程序,将一个十进制数按倒序形式输出,即,若输入1234,则输出4321。
(提示:实现的方法是将一个十进制数不断除以十取余,并马上输出该余数)
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半零一个。到第十天早上想再吃时,就只剩下一个桃子了。求第一天共摘了多少个桃子。
一个键足够控制了,看你怎么设计了。