试了下之前解释过的方法:
先映射管脚:
sbit DS18B20_1_DQ_PORT = P7^2;
sbit DS18B20_2_DQ_PORT = P7^3;
再写管脚控制函数:
static void DS18B20_1_Master_Control(void)
{
DS18B20_1_DQ_PORT = 0;
}
static void DS18B20_2_Master_Control(void)
{
DS18B20_2_DQ_PORT = 0;
}
static void DS18B20_1_Master_Release(void)
{
DS18B20_1_DQ_PORT = 1;
}
static void DS18B20_2_Master_Release(void)
{
DS18B20_2_DQ_PORT = 1;
}
static bit DS18B20_1_ReadIO(void)
{
return (DS18B20_1_DQ_PORT);
}
static bit DS18B20_2_ReadIO(void)
{
return (DS18B20_2_DQ_PORT);
}
再来构成函数指针数组:
//总线Control操作函数指针数组
code void (*DS18B20_Master_Control_Array[DS18B20_NUM])(void) =
{
DS18B20_1_Master_Control,
DS18B20_2_Master_Control,
};
//总线Release操作函数指针数组
code void (*DS18B20_Master_Release_Array[DS18B20_NUM])(void) =
{
DS18B20_1_Master_Release,
DS18B20_2_Master_Release,
};
//总线IO读操作函数指针数组
code bit (*DS18B20_ReadIO[DS18B20_NUM])(void) =
{
DS18B20_1_ReadIO,
DS18B20_2_ReadIO,
};
然后在API函数中,以(*DS18B20_Master_Control_Array[ds18b20_index])();
的方式进行调用 |