打印

用I/O口做函数参数的问题

[复制链接]
1480|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jrh200310|  楼主 | 2008-7-25 14:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   各位大虾帮个忙,过来看看! 
  我写了个函数,功能是使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();
   }
}
 
有什么办法解决?

相关帖子

沙发
dld2| | 2008-7-25 15:24 | 只看该作者

C语言的形式参数

比如:
void func(int n)
{
    n++;
}

a = 0;
func(a);
//请问现在a等于多少?还是0。

使用特权

评论回复
板凳
Again_gyf| | 2008-7-25 15:41 | 只看该作者

楼主补补C语言吧!

连最基本的函数参数传递都没搞清楚!!!!

使用特权

评论回复
地板
jrh200310|  楼主 | 2008-7-25 15:43 | 只看该作者

回去好好补补C了

回去好好补补C了,多谢各位了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

131

帖子

2

粉丝