单片机C语言如何实现8个LED流水灯来回流动?

现在只能从左到右循环流动,怎么才能从左到右再从右到左流动呢?#include<reg51.h>#include<intrins.h>#defineuintunsigned... 现在只能从左到右循环流动,怎么才能从左到右再从右到左流动呢?
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit beep=P2^3;
uchar p1e;
void delay(uint a);
void main()
{
p1e=0xfe;
P1=p1e;
while(1)
{
p1e=_crol_(p1e,1);
delay(55);
P1=p1e;
beep=0;
delay(55);
beep=1;
delay(55);
}
}

void delay(uint a)
{
uint x,y;
for(x=a;x>0;x--)
for(y=150;y>0;y--);
}
展开
 我来答
第五维6021
推荐于2019-09-25 · TA获得超过1万个赞
知道答主
回答量:5
采纳率:0%
帮助的人:988
展开全部

1、可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。

2、具体实现方法可以参考如下程序:

拓展资料

1、单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

2、单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。

3、单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。

参考资料:百度百科:单片机

天云小店
推荐于2017-10-06 · TA获得超过2.8万个赞
知道大有可为答主
回答量:3281
采纳率:91%
帮助的人:757万
展开全部

可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。


具体实现方法可以参考如下程序:

#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint a);
void main()
{
    P1=0xfe;
    while(1)
    {
        // 向左循环点亮LED
         for(i=0; i<7; i++)
        {
            P1=_crol_(P1,1);  // 左移一位,点亮下一位LED
            delay(55);
       }
       // 向右循环点亮LED
       for(i=0; i<7; i++)
       {
            P1=_cror_(P1,1); // 右移一位,,点亮上一位LED
            delay(55);
       }
    }
}
// 延时函数,延时a毫秒
void delay(uint a)
{
    uint x,y;
    for(x=a;x>0;x--)
        for(y=110;y>0;y--);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shangke1988
推荐于2017-09-14 · TA获得超过525个赞
知道小有建树答主
回答量:338
采纳率:100%
帮助的人:191万
展开全部
char i;

while(1)
{
for(i=0; i<7; i++)
{
p1e=_crol_(p1e,1);
delay(55);
P1=p1e;
beep=0;
delay(55);
beep=1;
delay(55);
}
for(i=0; i<7; i++)
{
p1e=_cror_(p1e,1);
delay(55);
P1=p1e;
beep=0;
delay(55);
beep=1;
delay(55);
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
年少有为源十三
2020-02-09
知道答主
回答量:1
采纳率:0%
帮助的人:634
展开全部
十四行代码
#include<reg52.h>
#include<intrins.h>
unsigned int a,b;
void main()
{ P2=0xfe;
for(b=7;b>=1;b--)
{a=50000;
P2=(P2<<1)|0x01;
while(a--);}
P2=0x7f;
for(b=7;b>=1;b--)
{a=50000;
P2=(P2>>1)|0x80;
while(a--);}}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CYF0316
2012-06-14 · TA获得超过269个赞
知道小有建树答主
回答量:365
采纳率:100%
帮助的人:84.6万
展开全部
p1e=_cror_(p1e,1);
追问
这个只是向右移吧...我是说向左移动到第8个LED后再从第8个向左移,实现来回流动
追答
1,赋值
2,右移动
3,再赋值
4,左移动
你程序都写出了
只是把程序COPy 粘帖到下面 把 p1e=_crol_(p1e,1); 改成p1e=_cror_(p1e,1); 就好了呀
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(7)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式