ibutton ds1990 dallas


Results 1 to 11 of 11

Threaded View

  1. #2
    ogranadino's Avatar
    ogranadino Guest


    Did you find this post helpful? Yes | No

    Talking help for u.

    programm...

    #include <touch.c>


    void main() {
    BYTE buffer[8];
    BYTE i;

    printf("\r\nWaiting for a touch device...\r\n");
    while (TRUE) {
    while(!touch_present()) ;
    delay_ms(200);
    if(touch_present()) {
    touch_write_byte(0x33);
    for(i=0;i<8;++i)
    buffer[i]=touch_read_byte();


    }
    }
    }

    //you need to use this lib

    ///////////////////////////////////////////////////////////////////////////
    //// Dallas Touch Driver ////
    //// ////
    //// present = touch_present() Issues a reset and returns TRUE ////
    //// if the touch device is there. ////
    //// ////
    //// data = touch_read_BYTE() Reads one BYTE from a touch device. ////
    //// ////
    //// ok = touch_write_BYTE(data) Writes one BYTE to a touch device ////
    //// and returns TRUE if all went OK. ////
    //// A FALSE indicates a collision with ////
    //// another device. ////
    //// ////
    ///////////////////////////////////////////////////////////////////////////
    //// Derivative programs created using this software in object code ////
    //// form are not restricted in any way. ////
    ///////////////////////////////////////////////////////////////////////////

    #ifndef TOUCH_PIN
    #define TOUCH_PIN PIN_B0
    #if defined(__PCH__)
    #bit TOUCH_PIN_BIT = 0xF8A.0
    #else
    #bit TOUCH_PIN_BIT = 6.0
    #endif
    #endif


    BYTE touch_read_byte() {
    BYTE i,data;

    for(i=1;i<=8;++i) {
    output_low(TOUCH_PIN);
    delay_us(14);
    output_float(TOUCH_PIN);
    delay_us(5);
    shift_right(&data,1,input(TOUCH_PIN));
    delay_us(100);
    }
    return(data);
    }

    BYTE touch_write_byte(BYTE data) {
    BYTE i;

    for(i=1;i<=8;++i) {
    output_low(TOUCH_PIN);
    delay_us(10);
    if(shift_right(&data,1,0)) {
    output_high(TOUCH_PIN);
    delay_us(10);
    if(!TOUCH_PIN_BIT)
    return(0);
    } else {
    output_low(TOUCH_PIN);
    delay_us(10);
    if(TOUCH_PIN_BIT)
    return(0);
    }
    delay_us(50);
    output_high(TOUCH_PIN);
    delay_us(50);
    }
    return(TRUE);
    }

    BYTE touch_present() {
    BOOLEAN present;

    output_low(TOUCH_PIN);
    delay_us(500);
    output_float(TOUCH_PIN);

    delay_us(5);

    if(!input(TOUCH_PIN))
    return(FALSE);
    delay_us(65);
    present=!input(TOUCH_PIN);
    delay_us(240);
    if(present)
    return(TRUE);
    else
    return(FALSE);
    }


    luck.. touch the ds1990 or ds1991 whit pin RB0(B0), and the other side to ground...

    best regards
    oscar from chile.
    Last edited by ogranadino; - 12th May 2005 at 22:08.

Similar Threads

  1. Dallas CRC8 Routines
    By Tom Estes in forum Code Examples
    Replies: 23
    Last Post: - 8th May 2018, 18:07
  2. Dallas IButton 1990 Presence pulse
    By enigma in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 15th August 2008, 22:04
  3. dallas ibutton to pics
    By CBUK in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 25th October 2006, 12:55
  4. Dallas 1-wire search Routine
    By jimbab in forum Code Examples
    Replies: 0
    Last Post: - 7th April 2006, 16:14
  5. Dallas DS1994 iButton CLOCK
    By NavMicroSystems in forum Code Examples
    Replies: 0
    Last Post: - 29th September 2004, 22:19

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts