标题: 菜鸟求助51单片机C语言 [打印本页]

作者: zhaoxulong126    时间: 2015-9-17 00:24
标题: 菜鸟求助51单片机C语言
正在学习51单片机,想实现按K1开关,led灯向右移动,按K2,led灯向左移动,当长按某K1或K2时,led灯延迟500ms的向指定方向移动,现在的问题是按住K1或K2时,led灯并没有延迟移动,程序哪里有问题,求解答。
#include<reg51.h>
#include<intrins.h>
#include"delay10ms.h"

#define GPIO_LED P2
sbit K1=P0^0;
sbit K2=P0^1;

void main()
{
    unsigned int i,j;
    j=0x01;
    while(1)
    {
        GPIO_LED=j;
        if((K1==0)||(K2==0))
        {
            delay10ms();
            if(K1==0) j=_cror_(GPIO_LED,1);
            else if(K2==0)        j=_crol_(GPIO_LED,1);
        }
                          while((i<50)&&((K1==0)));
            {
                delay10ms();
                i++;
            }
            i=0;
    }
}


作者: 腾飞的龙    时间: 2015-9-17 15:28
               if((i<50)&&((K1==0)));
            {
          这样改试试
     j=_crol_(GPIO_LED,1);
                delay10ms();
                i++;
               if(i==50)
               i=0;
            }
            i=0;
作者: 电子爱好者life    时间: 2015-9-17 16:11
本帖最后由 电子爱好者life 于 2015-9-17 16:34 编辑

没有看明白你的题目,你是按下K1连续移动还是按一次移动一次
作者: bhjyqjs    时间: 2015-9-17 17:03
改成:
while((i<50)&&((K1==0)));
             {
                 delay10ms();
                 i++;
             }
if(i==49) j=_cror_(GPIO_LED,1);
i=0;
while((i<50)&&((K2==0)));
             {
                 delay10ms();
                 i++;
             }
if(i==49)  j=_crol_(GPIO_LED,1);
i=0;
作者: bhjyqjs    时间: 2015-9-17 17:28
c:\1.jpg
if(i==50)这句永远不成立




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