Proton BASIC Compiler - Interfacing to a DS1990 i-Button device

  • PicŪ Basic

  • Interfacing to a DS1990 i-Button device

    A DS1990 is an i-Button device that has a unique ID value imprinted within it. It can be used as an electronic key, or pass etc.. They're quite old devices, but are still extremely valid in modern times.

    The code below illustrates how to interface to a DS1990 one-wire i-Button device

    ' Read a DS1990 on-wire device
       Device = 12F683
       Declare Xtal = 8
       Declare Optimiser_Level = 2
       Declare Serial_Baud = 9600
       Declare Rsout_Pin = GPIO.0
       Declare Rsout_Mode = 0
       Dim tDevicePresent As Bit       ' Holds 1 if the device is present, otherwise 0
       Dim ROM_NO[8] As Byte           ' Holds the read values from the device
       Symbol DQ_Pin = GPIO.1          ' Pin where the device is attached
       GoTo Main                       ' Jump over the subroutines
    ' Read a DS1990 one-wire device
    ' Input     : None
    ' Output    : tDevicePresent will contain 1 if a device is present
    ' Notes     : None
    $define Device_Read() GoSub _Device_Read   
      OWrite DQ_Pin, 1, _No_Device, [$33]
       ORead DQ_Pin, 0, [ROM_NO#0, ROM_NO#1, ROM_NO#2, ROM_NO#3, ROM_NO#4, ROM_NO#5, ROM_NO#6, ROM_NO#7]
       tDevicePresent = 1
        tDevicePresent = 0
       Clear ANSEL                             ' \ Make pins digital
       CMCON0 = 7                              ' /
       While                                   ' Create an infinite loop
           Device_Read()                       ' Attempt to read the device
           If tDevicePresent = 1 Then          ' Is the device present?
               RSOut Dec ROM_NO#0, Dec ROM_NO#1, ",", Dec ROM_NO#2, ",",_
                     Dec ROM_NO#3, ",", Dec ROM_NO#4, ",", Dec ROM_NO#5, ",",_
                     Dec ROM_NO#6, ",", Dec ROM_NO#7, 13
           Else                                ' Otherwise... The device is not present. So....
               RSOut "No Device\r"             ' Transmit a message
           DelayMS 100
    The video below shows the above program running within the proteus simulator:

  • Recent Activity


    Temperature Controller Problem

    Thread Starter: amod

    hi, i had made a digital temperature controller with "j" type thermocouple .Every thing is working fine except Thermocouple break option.I want when...

    RGV250 Today, 11:47 Go to last post
    Stephen Moss-711

    ASM Error [108]

    Thread Starter: gtv_pic

    good afternoon I am using an 18F47K40 in which I have to cominicate by serial port 1 to 9600 8, E, 1. I understand that the proton instruction is...

    Stephen Moss Today, 08:52 Go to last post