• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

单按键单次循环触控点亮/关闭两个LED

     大家好!好久没有发帖!上个月买了一块儿51开发板,点亮关闭一个或者多个LED都没有问题了!现在想做一款单个按键一次按下触控2个LED循环亮灭的程序!但是烧录进入开发板后,两个LED一上电就被点亮!很郁闷!所以上来求救原因!还望各位大神路过的帮忙看一下是什么问题!感激不尽!

     以下是SCH图!

     

\

   一下是C程序;

     这个程序我感觉是对的啊!就是想不通那里出问题的!我想要的效果是:上电后按一下S1  d1被点亮(d2还是处于熄灭状态),在按一下s1  d2被点亮  在按一下s1 num复位至0 d1  对应d1 d2都被熄灭!  可是我把程序烧录进入89C52以后,一上电这两个灯就被点亮了! LED也根本不受S1控制!郁闷中·······

全部回复(3)
正序查看
倒序查看
chebd
LV.6
2
2018-01-13 00:45
沙发
0
回复
2018-01-15 11:31
恭喜被添加到社区经典图库,并获得1积分
http://www.dianyuan.com/bbs/classic/
0
回复
LQW2017
LV.1
4
2018-01-17 15:29

你的swith语句不对,没有break退出,而且也要放在大循环里面,我写了个你可以参照下,可以运行

#include

#define uchar unsigned char

#define uint unsigned int

sbit diola=P2^5;

sbit led1=P1^0;

sbit led2=P1^1;

sbit s2=P3^4;

void delayms(uint xms)             /***********?? ??  *********/

{

uint i,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

void main()

{uint num=0;

diola=1;

while(1)

{

if(s2==0)

{

delayms(5);

if(s2==0)

{while(!s2);num++;

}}

if(num>2)

{

num=0;

}

switch(num)

{

case 0:

{led1=1;led2=1;}

break;

case 1:

{led1=0;led2=1;}

break;

case 2:

{led1=1;led2=0;}

break;

}

}

}

1
回复