标题: 求助帖,单片机怎么实现左移后右移? [打印本页]

作者: 杨庆汉    时间: 2020-4-12 10:59
标题: 求助帖,单片机怎么实现左移后右移?
我的想法是,led依次左到右,然后最右灯又从又走到左。我的主程序是这样的,但测试的时候,只是在第一二个灯来回,这是什么问题?
void main()
{
        u8 i=0;
        led=0xfe;
        delay(50000);
        while(1)
        {
                for(i=0;i<7;i++);
                {
                led=_crol_(led,1);
                delay(50000);
                }
                for(i=7;i>0;i--);
                {
                led=_cror_(led,1);
                delay(50000);
                }
        }


}


作者: 火神浪客行    时间: 2020-4-13 10:49
不知道你的问题在哪,我用你的也不行,但把自己的改成你的样式依然可以。。。#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp;
uint temp1;
uchar i;
void delay(int a);
void main()
{
P2=0xfe;
temp1=0x7f;
while(1)
{

for(i=0;i<8;i++)
{
//P2=temp;
P2=_crol_(P2,1);
delay(50);
}
for(i=0;i<8;i++)
{
//P2=temp1;
P2=_cror_(P2,1);
delay(50);
//P2=temp;
}
}
}   
void delay(int a)
{
uint x,y;
for(x=a;x>0;x--)
for(y=100;y>0;y--);
}
作者: 湖南    时间: 2020-4-14 21:28
用左移和右移的函数就行  很简单的

作者: cphnkj188    时间: 2020-4-15 08:20
把  led=0xfe 放到while循环里面试试
作者: xianfajushi    时间: 2020-4-15 08:54
可参应有尽有https://blog.csdn.net/xianfajush ... g~default~default-2
作者: 圆就是圈圈    时间: 2020-4-15 10:14
把你for循环函数后面的分号去掉
作者: load1    时间: 2020-4-15 10:32
有专门的函数实现的
作者: wulin    时间: 2020-4-15 10:56
for(i=0;i<7;i++);多了分号
作者: wqy12345    时间: 2020-4-15 13:24
看一下我的这个#include<reg52.h>  #include<intrins.h>  #define uchar unsigned char  #define uint unsigned int  void delay(uint z);  main()  {  uchar aa;  uint i=0;  while(1)  {  aa=0xfe;最右小灯亮  P0=aa;  delay(100);  while(1)  {  aa=crol(aa,1);左移一位  P0=aa;  delay(1000);  i++;  if(i>=7)  {  for(;i>0;)  {  aa=cror(aa,1);右移一位  P0=aa;  delay(1000);  i–;  }  break;  }  }  }  }  void delay(uint z)  {  uint x,y;  for(x=z;x>0;x–)  for(y=110;y>0;y–);  }




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