【Keil5】按键控制LED//普中STC89C5xx-RC Series

//主要使用P2的8个LED和P3的两个独立按键 

按亮松灭

#include <REGX52.H>

void sleep(unsigned int bs)//耗时约半秒
{
	int i,j;
	while(bs--)
	{
		i=2,j=240;
		do
			{
				while(--j);
			}while(--i);
	}
}
int main()
{
	while(1)
	{
		if(P3_3==0)//按k4按键D1灯亮
		{
			sleep(1);//避免按键抖动,耗时半秒
			while(P3_3==0) P2_0=0;
			sleep(1);
		}
		else P2_0=1;//松开即灭
	}
	return 0;
}

一组按抬 控制亮灭

#include <REGX52.H>

void sleep(unsigned int bs)//耗时函数
{
	int i,j;
	while(bs--)
	{
		i=2,j=200;
		do
			{
				while(--j);
			}while(--i);
	}
}
int main()
{
	P2_0=0;//初始化灯亮
	while(1)
	{
		if(P3_3==0)//
		{
			sleep(1);//这三行是判断是否按下抬起
			while(P3_3==1)//
			{
				P2_0=1^P2_0;break;//按位异或
			}
		}
	}
	return 0;
}

 左右按键一组按抬 实现LED移位效果

#include <REGX52.H>

void sleep(unsigned int bs)//ºÄʱԼ°ëÃë
{
	int i,j;
	while(bs--)
	{
		i=2,j=200;
		do
			{
				while(--j);
			}while(--i);
	}
}
int main()
{
	P2=0xFE;
	while(1)
	{
		if(P3_0==0)//右开关
		{
			sleep(1);
			while(P3_0==1)
			{
				P2=(P2<<1)+1;break;//左移需要加一
			}
			if(P2==0xFF)
			{
				P2=0xFE;
			}
		}
		if(P3_1==0)//左开关
		{
			sleep(1);
			while(P3_1==1)
			{
				P2=~(~P2>>1);break;//负数右移位需要两次取反
			}
			if(P2==0xFF)
			{
				P2=0x7F;
			}
		}
	}
	return 0;
}

 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

*Min*

写的不好多多包涵~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值