举个例子,我想用一个start()函数驱动多个传感器的数据线,我的理想是:sbit sensor1_data P1^1sbit sensor2_data P1^2......main(){start(sensor1_data);start(sensor2_data);.....}而我现在只能为第二个传感器从新写一个start2()函数。start()的参数里面不能写sbit,也就是我写start(sbit data)会报错,我试过start(bit data),这样也不行,虽然不报错,但是函数不工作求达人指点
1 回答
慕标5832272
TA贡献1966条经验 获得超4个赞
你理解错了,sbit不是定义一个变量,定义的是一个固定的寄存器,给那个寄存器取个名字而已,sensor1_data和sensor2_data是寄存器的名字,代表的是那个寄存器,就是固定的常量了,也就不能做函数参数啊。你可以这样:
define sensor1 1
define sensor2 2
/*函数定义*/
start(int sensor )
{
switch(sensor)
case sensor1:
sensor1_data=0/1;
break;
case sensor2:
sensor2_data=0/1;
break:
}
这样就可以调用函数:start(sensor1);
start(sensor2);
当然你也可以用其它方式。
添加回答
举报
0/150
提交
取消