打印

关于用C语言在开发板上写一个按键控制LED的程序

[复制链接]
1428|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jbbppa|  楼主 | 2012-6-15 17:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
范例程序如下:
#include <reg51.h>
#include <intrins.h>
unsigned char scan_key();
void proc_key(unsigned char key_v);
void delayms(unsigned char ms);
sbit
K1 = P0^0;

sbit
K2 = P0^1;

main()
{

unsigned char key_s,key_v;


key_v = 0x03;


P2 = 0xfe;


while(1)


{


key_s = scan_key();


if(key_s != key_v)


{


delayms(10);


key_s = scan_key();


if(key_s != key_v)


{


key_v = key_s;


proc_key(key_v);


}


}


}

}
unsigned char scan_key()
{

unsigned char key_s;


key_s = 0x00;


key_s |= K2;


key_s <<= 1;


key_s |= K1;


return key_s;

}
void proc_key(unsigned char key_v)
{

if((key_v & 0x01) == 0)


{


P2 = _cror_(P2,1);


}


else if((key_v & 0x02) == 0)


{


P2 = _crol_(P2, 1);


}

}
void delayms(unsigned char ms)

{


unsigned char i;


while(ms--)


{


for(i = 0; i < 120; i++);


}

}
开始的时候我自己写了个简单的程序,但是我发现写成if(K1=0)这样的if语句后,我按下按钮,那么LED不是只切换到下一个,而是顺着不停的往后切换,也就是只要按下按钮,就随着指令的时间一直往后切换。
上面的范例代码却不会,我就想不通了,为什么进行了两次if的判断就可以只切换一次就停止,而不会一直往后切换?

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

39

帖子

0

粉丝