Bonjour, j'utilise le logiciel pic simulator ide et j'arrive à faire fonctionner un ds18b20
C'est à dire que j'arrive à lire la température et à afficher les degrés.
Je n'arrive pas à afficher les dixièmes.
Quand j'en met un deuxième sur le même cable, je n'arrive pas à les différencier.
J'ai compris qu'il faut récupérer leur numéro de série, mais je n'y arrive pas.

voici le code
Define CONF_WORD = 0x3f72
Define CLOCK_FREQUENCY = 20
AllDigital
'''''''''''''''''''''''''''''' init
Define LCD_BITS = 8
Define LCD_DREG = PORTD
Define LCD_DBIT = 0
Define LCD_RSREG = PORTB
Define LCD_RSBIT = 2
Define LCD_RWREG = PORTB
Define LCD_RWBIT = 3
Define LCD_EREG = PORTB
Define LCD_EBIT = 4
Define LCD_READ_BUSY_FLAG = 1
Dim vouluc1 As Byte 'température voulu de la chambre
Dim temps As Byte 'temps mini de fonctionnement
Dim chrono As Byte 'variable compteur
'adresse eeprom
Const addeevouluc1 = 0
Const addeetrappe = 1
Const addeetemps = 2
'autre constante et symbol
TRISB = 0 'mese en sortie du portb
Symbol circulateur = PORTB.2 'sortie pour piloter les radiateur
Lcdinit 0


'''''''''''''''''''''''''''''' '''fin init
Call init_ee()
Dim finish As Bit
Dim temp As Byte
Dim sign As Byte
Dim temp1 As Byte
Dim tempe As Word
Dim temp2 As Byte
Dim trappe As Byte
Dim tempc As Bit
loop:
temp1 = ds()
Lcdcmdout LcdClear
Lcdout "temp="
Lcdout #temp1
If temp1 > vouluc1 Then
circulateur = 1
Lcdout " c=1"
Endif
If temp1 < vouluc1 Then
circulateur = 0
Lcdout " c=0"
Endif


Lcdcmdout LcdLine2Home
Lcdout "seuil="
Lcdout #vouluc1
Lcdout " t="
Lcdout #trappe




'gestion des boutons
Call bouton()
Call save_ee()
'sauvegarde dans l'eeprom des nouvelles données modifiés par les boutons
'Call save_ee()

Goto loop

End

Proc bouton()
'Rc0=augmente température désiré de déclenchement
If RC1 = 1 Then
vouluc1 = vouluc1 + 1
Endif
'Rc2=diminue température désiré de déclenchement
If RC2 = 1 Then
vouluc1 = vouluc1 - 1
Endif
'Rc2=enclenche ou déclenche les tests
If RC3 = 1 Then
If trappe = 1 Then
trappe = 0
Endif
If trappe = 0 Then
trappe = 1
Endif

Endif
'Rc2=diminue température désiré de déclenchement


End Proc

Proc save_ee()
'sauvegarde dans eeprom de mini et temps
INTCON.INTE = 0 'on désactive interrupt le temps de write
Write addeevouluc1, vouluc1
Write addeetemps, temps
Write addeetrappe, trappe

INTCON.INTE = 1 'on réactive interrupt
'fin enregistrepent dans eeprom
End Proc


Function ds() As Byte
Dim ret As Bit
'prise du ds
Define 1WIRE_REG = PORTA
Define 1WIRE_BIT = 5
1wireInit ret
If ret = 1 Then
ds = 0
Goto fin
Endif
1wireSendByte 0xcc, 0x44
WaitMs 1
loop2:
1wireGetBit finish
If finish = 0 Then Goto loop2
1wireInit
1wireSendByte 0xcc, 0xbe
1wireGetByte temp, sign
tempe = 0
tempe.LB = temp
tempe.HB = sign
tempe = tempe / 16
ds = tempe.LB
WaitUs 500




fin:
End Function
Proc init_ee()
'récupération de la temperature voulu
Read addeevouluc1, vouluc1
Read addeetrappe, trappe

'récupération du temps entre les coupures
Read addeetemps, temps
'fin d'initialisation
End Proc

Mercie de votre aide