51单片机的按键控制小灯亮灭的问题(程序类型:c语言)怎么解决

51单片机的按键控制小灯亮灭的问题(程序类型:c语言)怎么解决,第1张

#include<reg52h>

#define uint unsigned int

sbit LED = P1^0;

sbit KEY1 = P1^2;

void delay(uint);

void main(void)

{

LED = 1; //初始化LED熄灭

KEY1 = 1; //赋值KEY1高电平

while(1)

{

if(!KEY1) //检测到按键按下

{

LED = ~LED; /LED取反,此时LED = 0,灯亮。当松手时,KEY1 = 1,不满足if语句不

进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进入循

环,LED取反得到LED = 0,灯亮。/

delay(500); /此处延迟,保证连续两次按键动作处在程序的延时过程中,不进行其他程序从而不会影响小灯。/

}

}

}

void delay(uint z) //延时函数

{

uint x, y;

for(x=85; x>0; x--)

for(y=z; y>0; y--);

}

可下载到单片机验证。

1、创建项目文件。

2、按键:S1=P3^2,点亮: led=P1^5。

3、创建C语言主函数。

4、创建循环效果,检测效果。while(1)    {}。

5、选择输出的效果。

6、当按下一个按键时,关闭灯,整个程序运行,再按一次,程序停止。

这个实现有好几中方法,你可以用定时器的计数功能,比如说用定时器0方式2,设置初值为TH0=#0F5H,TL0=#0F5H还可以用外部中断实现:在主程序中对按键次数计数,到了10软件触发外部中断(CLR P32),在中断服务子程序中将p32置1,返回后再跳去统计按键次数。

以上就是关于51单片机的按键控制小灯亮灭的问题(程序类型:c语言)怎么解决全部的内容,包括:51单片机的按键控制小灯亮灭的问题(程序类型:c语言)怎么解决、51单片机如何用一个按键控制一段程序的运行与停止、想请教一个非常简单的程序,一个按键按十次则就中断一回,如此循环下去,51单片机的C程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9496078.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存