13 K1-K4 分组控制LED
/* 名称:K1-K4 分组控制LED
说明:每次按下K1时递增点亮一只LED,全亮时再次按下则再次循环开始,
K2按下后点亮上面4只LED,K3按下后点亮下面4只LED,K4按下后关闭所有LED
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
//延时
void DelayMS(uint x)
{
uchari;
while(x--)for(i=0;i<120;i++);
}
//主程序
void main()
{
uchark,t,Key_State;
();
();
while(1)
{
t=P1;
if(t!=0xff)
{
DelayMS(10);
if(t!=P1)continue;
//取得4位按键值,由模式XXXX1111(X中有一位为0,其他均为1)
//变为模式0000XXXX(X中有一位为1,其他均为0)
Key_State=~t>>4;
k=0;
//检查1所在位置,累加获取按键号k
while(Key_State!=0)
{
k++;
Key_State>>=1;
}
//根据按键号k进行4种处理
switch(k)
{
case1: ()
()
()
()
case2: ()
case3: ()
case4: ()
;
}
}
}
}
/* 名称:K1-K4 分组控制LED
说明:每次按下K1时递增点亮一只LED,全亮时再次按下则再次循环开始,
K2按下后点亮上面4只LED,K3按下后点亮下面4只LED,K4按下后关闭所有LED
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
//延时
void DelayMS(uint x)
{
uchari;
while(x--)for(i=0;i<120;i++);
}
//主程序
void main()
{
uchark,t,Key_State;
();
();
while(1)
{
t=P1;
if(t!=0xff)
{
DelayMS(10);
if(t!=P1)continue;
//取得4位按键值,由模式XXXX1111(X中有一位为0,其他均为1)
//变为模式0000XXXX(X中有一位为1,其他均为0)
Key_State=~t>>4;
k=0;
//检查1所在位置,累加获取按键号k
while(Key_State!=0)
{
k++;
Key_State>>=1;
}
//根据按键号k进行4种处理
switch(k)
{
case1: ()
()
()
()
case2: ()
case3: ()
case4: ()
;
}
}
}
}