本帖最后由 南校貂 于 2020-12-19 00:18 编辑
在做彩灯遇到的一个问题,需要用到51 所有IO口(32个),想用for循环通过较少的代码实现IO口控制
例如这样:
sbit LED1 P0^0;
sbit LED2 P0^1;
sbit LED3 P0^2;
int LED[ = {LED1, LED2, LED3};
void one(u8 z)
{
u8 x;
x = 0; LED(x) = 0;
x++;
if(x = 3)
x = 0; //这里的代码有点乱,但不是需要解决的问题
//需要解决的问题是,当x不同时,通过给数组成员LED(x)赋值,然后达到控制对应IO口的目的
// 如果能实现,就可以根据x的值来给对应的IO口进行控制,如不是想控制那个IO口时都需要写出来
}
例如想让LED1/2/3依次亮起来
for(x=3;x>0;x--)
{
LED(x)=0;
delay(200);
LED(x)=1;
}
传统的话只能将LED1/2/3一个一个打出来,或者通过位移。当IO口过多的时候就不好用了、需要很多的代码,移植性不强。
在定义数组和IO口的关系的时候需要通过指针或者其他的一些方法吗?
不知道提出的这个问题可不可行,小白一枚望大佬们多多指教!!!
|