以莹唤星 发表于 2024-8-4 15:26:17

求助下数组流水灯

本帖最后由 以莹唤星 于 2024-8-4 15:30 编辑

求助下关于数组的问题,本想做流水灯的,但是在实验箱9.62上每次两三四个LED,希望大佬帮看下代码有什么问题。




#include <STC32G.H>

#define MAIN_Fosc 35000000UL                //定义主频35MHz,请根据实际使用频率修改(用于delay函数自适应主频)

typedef unsigned char u8;                                //unsigned char                               类型,用u8表示
typedef unsigned int u16;                                //unsigned int                                 类型,用u16表示
typedef unsigned long int u32;        //unsigned long int         类型,用u32表示

void delayms(u16 ms);                                                //延时函数声明
       
void main()
{
       
        u8 LED = {0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};
        u8 i;
    P4M0 = 0x00; P4M1 = 0x00;
    P6M0 = 0x00; P6M1 = 0x00;
        P40 = 0;
       
       while(1)
       {
               for(i=0;i<8;i++)
               {
                       P6=LED;
                       delayms(500);
                       P6=0xFF;
                       delayms(500);
               }
       }
}


voiddelayms(u16 ms)                //简单延时函数,自适应主频,1毫秒*ms
{
        u16 i;
        do{
                        i = MAIN_Fosc / 6000;
                        while(--i);
                }while(--ms);
}


jwd 发表于 2024-8-4 16:20:01

不应该是P6=LED;嘛?

以莹唤星 发表于 2024-8-4 16:37:26

好像是哦,晚上回去试下

以莹唤星 发表于 2024-8-4 16:37:26

好像是哦,晚上回去试下

soma 发表于 2024-8-4 17:43:35

P6 = LED这个不对吧,如果要一个一个亮变量i要加进去是LED

以莹唤星 发表于 2024-8-4 18:47:55

file:///C:/Users/SONG/Pictures/Screenshots/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202024-08-04%20184608.png

以莹唤星 发表于 2024-8-4 18:49:44

代码还是这个代码,只是往论坛上发的时候,那个不知道怎么丢了,效果就是视频那个样子,按理说应该不对呀

以莹唤星 发表于 2024-8-4 20:05:40

wnagming 发表于 2024-8-4 19:13
不可能,绝对不可能

但是为什么是这个效果呢

以莹唤星 发表于 2024-8-4 21:10:26

但是不用数组(如下)就没问题,就想知道代码哪里有问题
void main()
{
    P4M0 = 0x00; P4M1 = 0x00;
    P6M0 = 0x00; P6M1 = 0x00;
        P40 = 0;

       P6=0x7F;
       delayms(500);
       P6=0xFF;
       delayms(500);
}


voiddelayms(u16 ms)                //简单延时函数,自适应主频,1毫秒*ms
{
        u16 i;
        do{
                        i = MAIN_Fosc / 6000;
                        while(--i);
                }while(--ms);
}

soma 发表于 2024-8-4 21:15:33

先用位移法看一下能不能正常,P6=~(0x01 << i);
页: [1] 2
查看完整版本: 求助下数组流水灯