试了下之前解释过的方法:
先映射管脚:
- 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])();
的方式进行调用
|