求助下数组流水灯
本帖最后由 以莹唤星 于 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);
}
不应该是P6=LED;嘛?
好像是哦,晚上回去试下 好像是哦,晚上回去试下 P6 = LED这个不对吧,如果要一个一个亮变量i要加进去是LED file:///C:/Users/SONG/Pictures/Screenshots/%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202024-08-04%20184608.png 代码还是这个代码,只是往论坛上发的时候,那个不知道怎么丢了,效果就是视频那个样子,按理说应该不对呀 wnagming 发表于 2024-8-4 19:13
不可能,绝对不可能
但是为什么是这个效果呢 但是不用数组(如下)就没问题,就想知道代码哪里有问题
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);
} 先用位移法看一下能不能正常,P6=~(0x01 << i);
页:
[1]
2