Onewire Beispiel

 

CompactC

 

// Beispielprogramm um DS18S20 Temp. Sensor von Dallas Maxim zu lesen

void main(void)

{

    char text[40];

    int ret, i, temp;

    byte rom_code[8];

    byte scratch_pad[9];

 

    ret= OneWire_Reset(7); // PortA.7

    if(ret == 0)

    {

        text= "Kein Sensor gefunden";

        Msg_WriteText(text);

        goto end;

    }

 

    OneWire_Write(0xcc); // ROM überspringen Kommando

    OneWire_Write(0x44); // starte Temperatur Messung Kommando

 

    AbsDelay(3000);

 

    OneWire_Reset(7);    // PortA.7

    OneWire_Write(0xcc); // ROM überspringen

    OneWire_Write(0xbe); // lese scratch_pad Kommando

    for(i=0;i<9;i++)     // komplettes scratchpad lesen

    {

        scratch_pad[i]= OneWire_Read();

        Msg_WriteHex(scratch_pad[i]);

    }

    Msg_WriteChar('\r');

 

    text= "Temperatur: ";

    Msg_WriteText(text);

 

    temp= scratch_pad[1]*256 + scratch_pad[0];

    Msg_WriteFloat(temp* 0.5);

    Msg_WriteChar('C');

    Msg_WriteChar('\r');

 

    end:

}

 

 

BASIC

 

' Beispielprogramm um DS18S20 Temp. Sensor von Dallas Maxim zu lesen

Dim Text(40) As Char

Dim ret,i As Integer

Dim temp As Integer

Dim rom_code(8) As Byte

Dim scratch_pad(9) As Byte

 

Sub main()

 

    ret = OneWire_Reset(7) ' PortA.7

 

    If ret = 0 Then

       Text= "Kein Sensor gefunden"

       Msg_WriteText(Text)

       Goto Ende

    End If

 

    OneWire_Write(0xcc)   ' ROM überspringen Kommando

    OneWire_Write(0x44)   ' starte Temperatur Messung Kommando

 

    AbsDelay(3000)

 

    OneWire_Reset(7)      ' PortA.7

    OneWire_Write(0xcc)   ' ROM überspringen Kommando

    OneWire_Write(0xbe)   ' lese scratch_pad Kommando

 

    For i = 0 To 9        ' komplettes scratchpad lesen

        scratch_pad(i)= OneWire_Read()

        Msg_WriteHex(scratch_pad(i))

    Next

    Msg_WriteChar(13)

 

    Text = "Temperatur: "

    Msg_WriteText(Text)

 

    temp = scratch_pad(1) * 256 + scratch_pad(0)

    Msg_WriteFloat(temp * 0.5)

    Msg_WriteChar(99)

    Msg_WriteChar(13)

 

    Lab Ende

End Sub