各位大虾帮个忙,过来看看! 我写了个函数,功能是使I/O口控制LED逐渐变亮,(输出的PWM脉宽慢慢变大,使LED慢慢变亮)想用I/O口做为函数的入口参数,因为要控制的灯比较多,所以想用函数调用的方式来实现,只要把I/O口做为参数,就可以使各个I/O口实现这个功能。函数是这样写的,
void led_L (bit led) { while(panduan==1) { while(c) { led=0; delay(a); led=1; delay(b); c--; }
a++; b--; c=5; if(a==80)/*当a的值达到80时,进入常亮*/ {panduan=0; a=80; b=0; led=0;/*开着常亮*/ } } }
但是在主函数调用时亮不了, 我是这样的 main { while(1) { led_L(P2_0); } } 把上面的led改成P2_0,就可以。如下 void led_L (void) { while(panduan==1) { while(c) { P2_0=0; delay(a); P2_0=1; delay(b); c--; }
a++; b--; c=5; if(a==80)/*当a的值达到80时,进入常亮*/ {panduan=0; a=80; b=0; P2_0=0;/*开着常亮*/ } } }
这样调用可以亮,但是如果每个I/O口都写一个那代码就大了 main { while(1) { led_L(); } } 有什么办法解决?
|