TAI-8570
The module you see below is a 1-wire barometric pressure sensor. It is manufactured by AAG Electronica.
It's a nifty little device that uses an Intersema MS5534A pressure sensing IC. It has a unique interface which you can see illustrated in the datasheet.
It uses two DS2406 1-wire switches for communications. One of the switches is connected to DIN and CLK and the other is connected to DOUT and CLK. To communicate with the MS5534A you first need to find out the 1-wire serial numbers of the two switches. You don't communicate directly with the MS5534A, instead simulate 3 wire communications by controlling the switches.

Below is a routine I wrote in PICBASIC that communicates with the TAI-8570. The 'Get_Constants' subroutine is run once at the beginning of your program. This will load the calibration constants into memory. These constants will be used when the 'Get_Pressure' routine is called. The routines 'Send_Baro_CMD' and 'ReadFromBaro' are the low-level communications routines. They are called from the 'Get_Pressure' routine when communications need to take place. I wrote the calculations routines based on the integer math flowchart on page 5 of the TAI-8570 datasheet. The information in the TAI-8570 datasheet in regards to the barometric sensor is actually copied directly from the Intersema MS5534A datasheet which can be found on Intersema's website.
Get_Constants:
BaroWord = BARO_READW1
BaroCOEFLen = BAROCONST
Gosub Send_Baro_CMD
BAROW1 = BaroRdWord
BaroWord = BARO_READW2
BaroCOEFLen = BAROCONST
Gosub Send_Baro_CMD
BAROW2 = BaroRdWord
BaroWord = BARO_READW3
BaroCOEFLen = BAROCONST
Gosub Send_Baro_CMD
BAROW3 = BaroRdWord
'barow3 = barow3<<1
BaroWord = BARO_READW4
BaroCOEFLen = BAROCONST
Gosub Send_Baro_CMD
BAROW4 = BaroRdWord
get_baro_constants = 1
BAROC1 = BAROW1>>1
BAROC5 = BAROW1 & 1
BAROC5 = BAROC5 << 10
BAROC5=BAROC5 +(BAROW2>>6)
BAROC6=BAROW2&$3F
BAROC2=BAROW3&$3F
BAROC2=BAROC2<<6
BAROC2=BAROC2+(BAROW4&$3F)
BAROC3=BAROW4>>6
BAROC4=BAROW3>>6
return
Get_Pressure:
BaroWord = BARO_READD1
BaroCOEFLen = BARODATA
Gosub Send_Baro_CMD
BAROD1 = BaroRdWord
BaroWord = BARO_READD2
BaroCOEFLen = BARODATA
Gosub Send_Baro_CMD
BAROD2 = BaroRdWord
'----[Calculate temperature at Baro]-------
BAROUT1 = 8*BAROC5+20224
BARODT=BAROD2-BAROUT1
BaroTC=200+BARODT*(BAROC6+50)/1024
'----[Calculate Baro]----------------------
'BaroOFF=BAROC2*4+((BAROC4-512)*BARODT)/1024
bogus = (BAROC4-512)*BARODT
BaroOFF = DIV32 4096
BaroOFF = BaroOFF + (BAROC2*4)
'BaroSENS=BAROC1+(BAROC3*BARODT)/1024+24576
bogus = BAROC3*BARODT
BaroSENS = DIV32 1024
BaroSENS = BAROC1 + BaroSENS + 24576
'BaroX=(BaroSENS*(BAROD1-7168))/16384-BaroOFF
bogus = BaroSENS * (BaroD1-7168)
BaroX = DIV32 16384
BaroX = BaroX - BaroOFF
'BaroP=BAROX*100/32+250*100
bogus = BAROX*10
BaroP = DIV32 32
BaroP = BaroP + 2500
return
'------[ Communicate with the Writer Device of the Baro ]----------------
Send_Baro_CMD:
EEPM_ST = DSPRESSWR
Gosub Load_SN_EEPM
OWOUT DQAUX, OW_FERst, [MatchROM]
OWOUT DQAUX, OW_NoRst, [STR romData\8] 'Send ROM Code
OWOUT DQAUX, OW_NoRst, [$F5,$8C,$FF] 'Send $00001100 CHS1, CHS0 hign for both
channels interleaved
OWIN DQAUX, OW_NoRst, [WRSWStatus]
for z=1 to 8 '-------[Intersema Reset sequence]---------
OWOUT DQAUX, OW_Bitmode, [0,1,1,1,0,0,0,0] 'Send 1 with clk signal
OWOUT DQAUX, OW_Bitmode, [0,0,1,0,0,0,0,0] 'Send 0 with clk signal
next
for z=1 to 5 '-------[Intersema Reset sequence]---------
OWOUT DQAUX, OW_Bitmode, [0,0,1,0,0,0,0,0] 'Send 0 with clk signal
next
'--------[End of reset sequence]-------------
For z = 1 to BaroCOEFLen 'Was 11 for pressure and temp conversions
BaroBit = BaroWord&1
BaroWord = BaroWord>>1
if BaroBit = 1 then
OWOUT DQAUX, OW_Bitmode, [0,1,1,1,0,0,0,0] 'Send a bit 1 out to the DS2406
Writer
else
OWOUT DQAUX, OW_Bitmode, [0,0,1,0,0,0,0,0] 'Send a zero out to the DS2406 Writer
endif
next
if BaroCOEFLen = 11 then
for z=1 to 2
OWOUT DQAUX, OW_Bitmode, [0,0,1,0,0,0,0,0] 'Send two more clocks after the
command has been sent (see Intersema Timing Diagram)
next
endif
OWOUT DQAUX, OW_BERBitMode, [1,1] 'Leave SCLK high as per the AAG datasheet
since the SCLK line is a 'Wired AND of the writer and reader outputs
'End of Send Intersema a Command Routine
if BaroCOEFLen = 12 then goto ReadFromBaro ' Don't wait for conversion to
complete when reading constants from Baro
'--------[Check for conversion complete]---------------
EEPM_ST = DSPRESSRD
Gosub Load_SN_EEPM
OWOUT DQAUX, OW_FERst, [MatchROM]
OWOUT DQAUX, OW_NoRst, [STR romData\8] 'Send ROM Code
OWOUT DQAUX, OW_NoRst, [$F5,$C8,$FF] 'Send $00001100 CHS1, CHS0 hign for both
channels interleaved
OWIN DQAUX, OW_NoRst, [RDSWStatus]
'OWOUT DQAUX, OW_Bitmode, [0,0] 'Hold sclk low until converstion complete
Baro_Test = 0
waitforconv:
Baro_Test=Baro_Test+1
OWIN DQAUX, OW_NoRST, [BaroByte] 'Read a byte
if BaroByte = $FF AND Baro_Test<50 then waitforconv
if Baro_Test = 50 then return
'------[ Communicate with the Reader Device of the Baro ]----------------
ReadFromBaro:
EEPM_ST = DSPRESSRD
BaroWord = 0
BaroRdBit = 0
Gosub Load_SN_EEPM
BaroRdWord = 0
OWOUT DQAUX, OW_FERst, [MatchROM]
OWOUT DQAUX, OW_NoRst, [STR romData\8] 'Send ROM Code
OWOUT DQAUX, OW_NoRst, [$F5,$EC,$FF] 'Send $00001100 CHS1, CHS0 hign for both
channels interleaved
OWIN DQAUX, OW_NoRst, [RDSWStatus]
for z=0 to 16 'Read in 16 bits of data
BaroRdWord=BaroRdWord<<1
OWIN DQAUX, OW_BitMode, [SKIP 7,BaroRdBit] 'Read a byte
OWOUT DQAUX, OW_Bitmode, [0,1,0,1,1,1,1,1] 'Send out the SCLK after each bit is
read.
BaroRdWord = BaroRdWord|BaroRdBit
next
Return