标题: 求助多按键控制分别控制LED的程序 [打印本页]

作者: liujiageda    时间: 2017-1-6 13:01
标题: 求助多按键控制分别控制LED的程序
单片机2个按键分别控制LED灯 ,当K1按下LED1亮,松开LED1灭,且同时按下K2键LED2没反应;当K2按下LED2亮,松开LED2灭,且同时按下K1键LED1没反应;

作者: 不倒翁.WZT    时间: 2017-1-6 14:04
标题: RE: 求助多按键控制分别控制LED的程序
完全符合上述要求
#include <reg51.h>
sbit K1=P1^0;  //按键1,控制第1个继电器启动
sbit K2=P1^1;  //按键2,控制第2个继电器启动
sbit J1=P1^6;  //第1个继电器
sbit J2=P1^7;  //第2个继电器
void Delay_1ms(unsigned int t)
{
  unsigned char x, y;
  for(x=0; x<t; x++)
    for(y=0; y<122; y++);
}
void main()  //主程序
{
  while(1)   //大循环
  {
    if(K1==0)  //检测第1个按键是否按下
    {
      Delay_1ms(50);  //延时
      if(K1==0)
      {
        while(!K1)  //检测第1个按键是否松开
        J1=0;  //第1个继电器启动
      }
      if(K1==1)
      {
        J1=1;  //第1个继电器停止
      }
    }
    if(K2==0)  //检测第2个按键是否按下
    {
      Delay_1ms(50);  //延时
      if(K2==0)
      {
        while(!K2)  //检测第2个按键是否松开
        J2=0;  //第2个继电器启动
      }
      if(K2==1)
      {
        J2=1;  //第2个继电器停止
      }
    }
  }
}
作者: liujiageda    时间: 2017-1-6 17:32
不倒翁.WZT 发表于 2017-1-6 14:04
完全符合上述要求
#include
sbit K1=P1^0;  //按键1,控制第1个继电器启动

不行哦,按K2键时 J2有时没反应
作者: lkc8210    时间: 2017-1-11 17:11
本帖最后由 lkc8210 于 2017-1-11 17:12 编辑

#include <reg51.h>
sbit K1=P1^0;  //按键1,控制第1个继电器启动
sbit K2=P1^1;  //按键2,控制第2个继电器启动
sbit J1=P1^6;  //第1个继电器
sbit J2=P1^7;  //第2个继电器
void Delay_1ms(unsigned int t)
{
  unsigned char x, y;
  for(x=0; x<t; x++)
    for(y=0; y<122; y++);
}
void main()  //主程序
{
  while(1)   //大循环
  {
   J1=~(K1==0 & (K2==1 | J1 == 0));  //第1个继电器启动
   J2=~(K2==0 & (K1==1 | J2 == 0));  //第2个继电器启动
  }
}

作者: espopoi    时间: 2017-1-11 22:09
测试过了 没问题

模拟.rar

44.7 KB, 下载次数: 21


作者: woaini201314    时间: 2017-1-11 22:44
百度一下




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1