OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5435|回复: 7

怎么能让数组的花样流水灯只运行一遍

[复制链接]

8

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2017-7-19
在线时间
87 小时
发表于 2021-2-11 17:44:26 | 显示全部楼层 |阅读模式
3金钱
试了很多次,用各种条件都没成功
#include<reg52.h>
unsigned char code LED[32]={0x7e,0xbd,0xdb,0xe7,
                                                  0x7f,0xbf,0xdf,0xef,
                                                  0xf7,0xfb,0xfd,0xfe,
                                                  0xfe,0xfd,0xfb,0xf7,
                                                  0xef,0xdf,0xbf,0x7f,
                                                  0xff,0xff,0x00,0x00,
                                                  0x55,0x55,0xaa,0xaa,
                                                  0xff,0xff,0x00,0x00
                                                  };//rom允许情况可以无限添加

void Delay(unsigned int t); //函数声明
/*------------------------------------------------
                    主函数
------------------------------------------------*/
main()
{

unsigned char i,j;
j=2;
i=0;
             //定义一个无符号字符型
                                                                 //局部变量 i 取值范围 0~255
        while(j--)
        {        
          for(i=0;i<32;i++)
                  {
                           P1 = LED;
                        Delay(20000);
                        
                  }                                                        数组

        }
}

/*------------------------------------------------
延时函数,含有输入参数 unsigned int t,无返回值
unsigned int 是定义无符号整形变量,其值的范围是
0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{
while(--t);
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

218

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2340
金钱
2340
注册时间
2017-12-11
在线时间
498 小时
发表于 2021-2-12 11:49:50 | 显示全部楼层
1个for循环就能实现啊,只循环1次
回复

使用道具 举报

8

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2017-7-19
在线时间
87 小时
 楼主| 发表于 2021-2-12 12:57:34 | 显示全部楼层
我试过了,是无限循环,不是一次的
回复

使用道具 举报

8

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2017-7-19
在线时间
87 小时
 楼主| 发表于 2021-2-12 12:58:10 | 显示全部楼层
白纸扇001 发表于 2021-2-12 11:49
1个for循环就能实现啊,只循环1次

我试过了,是无限循环,不是一次的
回复

使用道具 举报

12

主题

3402

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8691
金钱
8691
注册时间
2020-5-11
在线时间
4183 小时
发表于 2021-2-13 07:15:14 | 显示全部楼层
main()
里的最后要有  while(1)
专治疑难杂症
回复

使用道具 举报

12

主题

3402

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8691
金钱
8691
注册时间
2020-5-11
在线时间
4183 小时
发表于 2021-2-14 19:54:57 | 显示全部楼层
main结尾要有 while(1)
专治疑难杂症
回复

使用道具 举报

5

主题

179

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
8195
金钱
8195
注册时间
2016-9-7
在线时间
1113 小时
发表于 2021-2-15 08:40:01 | 显示全部楼层
不用j--,只需定义个运行一次的标志,
sbit flag=0;
main ()
{
if (! flag)
{
  ...//for 循环
  flag =1;
}
while(1)
}
回复

使用道具 举报

8

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2017-7-19
在线时间
87 小时
 楼主| 发表于 2021-2-15 20:57:54 | 显示全部楼层
问题找到了。。。
#include<reg52.h>
#include <stdio.h>
//宏定义
//***************************************************************
#define uchar unsigned char
#define uint unsigned int


//延时函数
void Delay(unsigned int t)
{
while(--t);
}
char led[]={0x7e,0xbd,0xdb,0xe7,
                  0x7f,0xbf,0xdf,0xef,
                  0xf7,0xfb,0xfd,0xfe,
                  0xfe,0xfd,0xfb,0xf7,
                  0xef,0xdf,0xbf,0x7f,
                  0xff,0xff,0x00,0x00,
                  0x55,0x55,0xaa,0xaa,
              0xff,0xff,0x00,0x00,
                          0x7f,0xbf,0xdf,0xef,
                  0xf7,0xfb,0xfd,0xfe,
                          0xfe,0xfd,0xfb,0xf7,
                  0xef,0xdf,0xbf,0x7f};
void main(void)
{
    char i,j;
//        while(1)
//        {
//        for(j=0;j<1;j++)
        {
                for(i=0;i<48;i++)
            {  
//                   P1=led;
                   P1=led[i];
               Delay(40000);        //调用延时函数
            }
//        }
   
    P1=0x00;        //消影
           }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-29 12:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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