普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 4161|回复: 2

按键控制灯亮灭

[复制链接]

1

主题

1

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2020-1-12 13:59:40 | 显示全部楼层 |阅读模式
1金钱
#include <reg52.h>
sbit  speaker= P1^5;
sbit  k1=P3^1;   //单片机晶振采用11.0592MHz
sbit  k2=P3^0;
sbit led=P2^0;

void delay(unsigned int  i)
{
while(i--);
}

void keypros()
{
unsigned char  i=0;
if(k1==0)    //检测按键K1是否按下
{
  delay(1000);   //消除抖动 一般大约10ms
  if(k1==0)  //再次判断按键是否按下
  {
     i=i+1;      //不加这个while 蜂鸣器不响
     while(i==1)
     {
         led=0;
         delay(10);
     }
      
  }
  while(!k1);  //检测按键是否松开
}
if(k2==0)    //检测按键K1是否按下
{
  delay(1000);   //消除抖动 一般大约10ms
  if(k2==0)  //再次判断按键是否按下
  {
     i=i+2;
   while(i==2)
   {     //你这个不对,按住按键不动后,程序高速跑起来,无法正确控制led开关,全部凭松开时间决定单片机运行到on位置或off位置
              led=1;
     delay(50000);
      }
  }
  while(!k2);  //检测按键是否松开
}
}

void main( )//程序从这里开始       //led=~led这条代码不能闪,要写成0和·1的·形式
{
   keypros();
}
用于按下k1 灯亮    按下k2灯灭 但无法实现
我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励10 金钱 , 目前已有1人回答

回复

使用道具 举报

0

主题

33

帖子

74

积分

注册会员

Rank: 2

积分
74
发表于 2020-5-20 18:26:13 | 显示全部楼层
while(i==1)和while(i==2)不用加,兄弟
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-20 19:14 , Processed in 0.089564 second(s), 33 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表