开始LED灯在最右侧亮,为什么按K1按键LED灯不会向左移动代码如下:#include <reg51.h>

开始LED灯在最右侧亮,为什么按K1按键LED灯不会向右移动(普中MS开发板)

img

img

代码如下:
#include <reg51.h>
#include <intrins.h>
#define GPIO_LED P2
sbit K1=P3^1;
void Delay10ms();
void main(void)
{
unsigned int i,j;
i=0;
j=0xfe;
while(1)
{
GPIO_LED=j;
if(K1==0)
{
Delay10ms();
if(K1==0)
{
j=_cror_(j,1);
while((i<50)&&(K1==0))
{
Delay10ms();
i++;
}
}
}
}
}
void Delay10ms(void)
{
unsigned char a,b,c;
for(a=1;a>0;a--)
for(b=38;b>0;b--)
for(c=130;c>0;c--);
}

把代码贴上来,方便修改。
这么改,供参考:

#include <reg51.h>
#include <intrins.h>
#define GPIO_LED P2
sbit K1=P3^1;
void Delay10ms();
void main(void)
{
    unsigned int i;
    i=0;
    GPIO_LED = 0xfe;//p2口初始值,假如是低电位点亮led,看你的实际电路情况
    while(1)
    {
        if(K1==0)
        {
            Delay10ms();//延时消抖
            if(K1==0)
            {
                i = !i; //按一次按键,状态翻转一次
                while(!K1);
            }
        }
        switch(i){
            case 1:
                   GPIO_LED =_cror_(GPIO_LED,1);
                   Delay10ms();
                   break;
            case 0:
                   GPIO_LED = 0xfe;
                   Delay10ms();
                   break;
        }
    }
}
void Delay10ms(void)
{
    unsigned char a,b,c;
    for(a=1;a>0;a--)
        for(b=38;b>0;b--)
            for(c=130;c>0;c--);
}

那个_cror的函数定义是怎样的

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7805194
  • 除此之外, 这篇博客: 51单片机的入门知识(献给初学者最易懂的文章)中的 按住一个K1,亮起LED灯 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    #include <REGX52.H>
    void main(){
    while(1){
    	if(P3_1==0){
    		P2_0=0;
    	}
    	else{
    		P2_0=1;
    	}
    }
    
    }
    #include <REGX52.H>
    void Delay(unsigned int xms)		
    {
    unsigned char i, j;
    while (xms){
    i = 2;
    j = 239;
    do
    {
    while (--j);
    } while (--i);
    xms--;
    }
    }
    void main(){
    while(1){
    if(P3_1==0){
    Delay(20);
    while(P3_1==0);
    Delay(20);
    		P2_0=~P2_0;
    	
    	
    		}
    
    }
    }

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^