51单片机函数声明和函数传参的问题。


sbit SMG1=P0^0;
sbit SMG2=P0^1;

void Change_SMG(sbit smg)
{
    u8 j;
    for(j=0;j<16;j++)
    {
        smg    = smgduan[j];
        delay(5000);
        P0 = 0x00;
    }
}

1,在51单片机上,函数不用先声明吗?我没声明也可以用啊。

2,向上面的代码,能像这样Change_SMG(SMG1)把SMG1传入Changg_SMG函数吗?

编译出错,不知道错在哪里了

sbit类型做不了函数参数的,他是给寄存器取的一个名字。
关于函数没声明可以用,你是不是在主函数上面定义的他,或者说编译的时候没警告吗,有完整的代码吗。