Да я, собсно, не против. Я про то, что все механизмы доступа к каждому из датчиков, таки, должны быть прописаны ручками, в том или ином виде. А потом, мы красиво пишем программу. Т.е. "нажал на кнопку, мешок на спине, нажал другую, спина в мыле".
Доступ к каждому из датчиков через расширитель, вполне обыденно решается тупыми Ц-шными методами. Например, формируем двумерный массив, где один индекс - номер датчика, а другой, номер операции(команда "установить SDA_N в 1, 0", "SCK_N в 1,0", "читать SDA_N"). Передаём в функцыю адрес, а дальше она сама всё разруливает с минимальными накладными. И читаемость никуда не девается.
И всё:
state1=readIIC_1wire(1);
state2=readIIC_1wire(2);
...