• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

双向流水灯怎么写代码,用_cror_和_crol_

acc8c8508936c0fd 2018-10-15 浏览量:1629
#include"reg51.h"
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
#define led P2
void delay(u16 i)
 {
  while(i--);
 }
void main()
 { u8 i=0;
   led=0xfe&0x7f;//1111
   delay(50000);
   while(1)
   {
     for(i=0;i<7;i++)
     { led= _crol_(led1)& _cror_(led1);delay(50000);}
     }

 }

只能从两边一个一个亮到中间,不会灭,不会流动

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案

  • #include<reg51.h>
    #include<intrins.h>               

    #define GPIO_LED P2       

    void Delay10ms(unsigned int); 


    void main(void)
    {
        unsigned char n;
        GPIO_LED=0x01;//0000 0010
        while(1)
        {
            for(n=0;n<7;n++)                       
            {
                GPIO_LED=_crol_(GPIO_LED1);
                Delay10ms(50);                            
            }
            for(n=0;n<7;n++)                            
            {
                GPIO_LED=_cror_(GPIO_LED1);   
                Delay10ms(50);                               
            }    
        }    
    }

    void Delay10ms(unsigned int c)   //Îó²î 0us
    {
        unsigned char ab;
        for(;c>0;c--)
            for(b=38;b>0;b--)
                for(a=130;a>0;a--);
    }
    • 发布于 2018-10-15
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:15
  • for(i=0;i<7;i++)
    {
    P2=_crol_(P21); //P2 的值向左循环移动
    DelayMS(150);
    }
    for(i=0;i<7;i++)
    {
    P2=_cror_(P21); //P2 的值向右循环移动
    DelayMS(150);
    }

    • 发布于2018-10-15
    • 举报
    • 评论 0
    • 0
    • 0


  •     while(1)
        {
            for(n=0;n<7;n++)                       
            {
                GPIO_LED=_crol_(GPIO_LED1);
                Delay10ms(50);                            
            }
            for(n=0;n<7;n++)                            
            {
                GPIO_LED=_cror_(GPIO_LED1);   
                Delay10ms(50);                               
            }    
        }    
    }

    • 发布于2018-10-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 想要流动的话,把这个 i++ 的 ++ 去掉,就会无限循环流动起来了,不然他循环 7 次后复位了,就不是流动的效果。

    1.png


    • 发布于2018-10-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 直接不用for循环,外面不是有一个while循环吗,你这个for循环好像根本没用到
    • 发布于2018-10-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个for循环有问题,对应变量累加会不能到设置值
    • 发布于2018-10-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个要结合具体的原理图分析的,单凭代码看不出什么问题
    • 发布于2018-10-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以参考https://blog.csdn.net/baidu_33836580/article/details/50578888
    • 发布于2018-10-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 你只要掌握操作一组GPIO的函数或者方法就可以了,按照逻辑来驱动这组GPIO即可。
    • 发布于2018-10-31
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个要看你的原理图是怎么接的线,是阳级还是阴线的
    • 发布于2018-11-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 硬件上的连接要是连续的IO口,这样程序写时就可以通过移位了
    • 发布于2018-11-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个可以直接用你的IO移位操作,然后输出IO点亮LED
    • 发布于2018-11-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个直接用你 for循环去控制你的IO输出就可以
    • 发布于2018-11-19
    • 举报
    • 评论 0
    • 0
    • 0


  • for(i=0;i<7;i++)
    {
    P2=_crol_(P21);
    DelayMS(100);
    }
    for(i=0;i<7;i++)
    {
    P2=_cror_(P21); 
    DelayMS(100);
    }
    ); }
    • 发布于2018-11-26
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

双向流水灯怎么写代码,用_cror_和_crol_