找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于单片机LED流水灯程序用crol函数的问题

查看数: 3093 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-12-16 17:15

正文摘要:

学习网上的教程做了一个流水灯,用到crol函数,用PROTUES仿真发现就一个灯闪其他都不亮,求大佬指导!!

回复

ID:665331 发表于 2019-12-17 13:32
P0口要接上拉电阻
ID:400014 发表于 2019-12-17 08:23
本帖最后由 dy212300 于 2019-12-17 16:09 编辑

是P0=b
ID:510373 发表于 2019-12-17 00:27
烧的以前的程序??
ID:213173 发表于 2019-12-16 22:12
本帖最后由 wulin 于 2019-12-17 10:16 编辑
新人求指导啊1 发表于 2019-12-16 17:15
程序如下:
#include
#include

程序基本可行,但写得有点啰嗦,甚至不合理。仿真异常是图画错,必须要在LED串接300Ω~1K左右限流电阻,否则实际电路IO口有烧毁的风险。程序可以简化为:
  1. #include <reg51.h>
  2. #include <intrins.h>

  3. void delay(unsigned int a)
  4. {
  5.         unsigned char i;
  6.         while(a--)
  7.         {
  8.                 for(i=0;i<125;i++);
  9.         }
  10. }

  11. void main(void)
  12. {
  13.         P0=0xfe;
  14.         while(1)
  15.         {
  16.                 delay(250);
  17.                 P0=_crol_(P0,1);
  18.         }
  19. }
复制代码
ID:235200 发表于 2019-12-16 21:52
crol是循环左移,延时太短,程序中再加3个delay(250);试试
ID:665391 发表于 2019-12-16 17:15
程序如下:
#include <reg51.h>
#include <stdio.h>
#include <intrins.h>

sbit P0_0 = P0^0;
sbit P0_1 = P0^1;
sbit P0_2 = P0^2;
sbit P0_3 = P0^3;
sbit P0_4 = P0^4;
sbit P0_5 = P0^5;
sbit P0_6 = P0^6;
sbit P0_7 = P0^7;

void delay(unsigned char a)
{
unsigned char i;
while(--a!=0)
{
        for(i=0;i<125;i++);
}
}

void main(void)
{
        unsigned char b;
        unsigned char i;
        while(1)
{
        b=0x7f;
        for(i=0;i<8;i++)
        {
        P0=_crol_(b,1);
        b=P0;
        delay(250);
        }
}
}


手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表