本帖最后由 南校貂 于 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口的關系的時候需要通過指針或者其他的一些方法嗎?
不知道提出的這個問題可不可行,小白一枚望大佬們多多指教!!!
|