亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ds182x.c

?? ds18b20 thermometer with lcd, ds18b20 thermometer with lcd, ds18b20 thermometer with lcd
?? C
?? 第 1 頁 / 共 2 頁
字號:
        x |= TM_Read_bit();

        if (!x)
        {
            if (i > lst_dif)
                tm_rombit = 0;
            else
            if (i == lst_dif)       /* to device where conflict was last time use 1 now (it was 0 for previous device) */
                tm_rombit = 1;
            else
                tm_rombit = *ptr & mask;
                                    /* seed with bit value of previously found device */

            if (!tm_rombit)         /* last bit not set position */
                tm_lst0 = i;
        }
        else
        #if 0   /* did not worked (against spec ?) */
            tm_rombit = (x & 0x02);  /* or (x & 1) ^ 1 (inverted LSb) */
        #else
            tm_rombit = (x & 1) ^ 1; /* inverted LSb */
        #endif

        if (tm_rombit)
            *ptr |= mask;
        else
            *ptr &= ~mask;

        TM_Write_bit(tm_rombit);
    }

    TM_Exit_Critical();     /* reenable interrupts */

    #if DS_DEBUG
     hex_dump((char *)&tm_romdta, sizeof(tm_romdta));
    #endif

    return (x == 3) ? 0 : 1 + (lst_dif == tm_lst0);
}

/*
 *  TM_Crc - calculate CRC (Cyclic Redundancy Check) for
 *           Dallas Semiconductor Touch Memory.
 */
u_char TM_Crc(u_char crc, u_char inp)
{
    u_char inp_z = inp,
           i = 8,
           carry;

    do
    {
        inp ^= crc;
        crc >>= 1;

        if (inp & 1)
        {
            crc ^= (0x18 >> 1);
            crc |= 0x80;
        }

        carry = inp_z & 1;
        inp_z >>= 1;

        if (carry)
            inp_z |= 0x80;
        inp = inp_z;

    } while (--i);

    return crc;
}

/*
 *  TM_WRITE_BYTE - writes a byte to the one-wire bus.
 */
static void TM_Write_byte(u_char val)
{
    u_char cnt = 8;

    do
    {
      TM_Write_bit ((val & 1));
      val >>= 1;
    } while (--cnt);
}

/*
 *  TM_READ_BYTE - reads a byte from the one-wire bus.
 */
static u_char TM_Read_byte(void)
{
    u_char cnt = 8;
    u_char value = 0;

    do
    {
        value >>= 1;
        value |= (TM_Read_bit()) ? 0x80 : 0x00;         /* read one bit */
    } while (--cnt);

    return value;
}

/*
 *  TM_WRITE_BIT - writes a byte to the one-wire bus, passed in u_charval.
 */
static void TM_Write_bit(u_char bitval)
{
    sbi(DS_DDR, DQ);        /* set DQ pin direction - output */
    cbi(DS_PORT, DQ);       /* pull DQ low to start timeslot */

//COMPRESS_DISABLE;
//     _NOP();                /* wait 68 ns */
//    _NOP();                /* wait 68 ns */
//     _NOP();                /* wait 68 ns */
//COMPRESS_REENABLE;

	_delay_us(0.2); //delay 200ns
	 
    if( bitval ) sbi(DS_PORT, DQ); /* set DQ */
    else cbi(DS_PORT, DQ);

    //TM_Delay(3);            /* hold value for remainder of timeslot */
	_delay_us(45); //delay 3*15us

    sbi(DS_PORT, DQ);       /* DQ = 1 */
    //TM_Delay(1);            /* finish timeslot */
	_delay_us(15); //delay 15us
}

/*
 *  TM_READ_BIT - reads a byte from the one-wire bus.
 */
static u_char TM_Read_bit(void)
{
    u_char val;

    sbi(DS_DDR, DQ);        /* set DQ pin direction - output */
    cbi(DS_PORT, DQ);       /* pull DQ low to start timeslot */

//COMPRESS_DISABLE;
//     _NOP();                /* wait 68 ns */
//     _NOP();                /* wait 68 ns */
//     _NOP();                /* wait 68 ns */
//COMPRESS_REENABLE;

	_delay_us(0.2); //delay 200ns

    sbi(DS_PORT, DQ);       /* then return high DQ = 1 */

    //TM_Delay(1);            /* wait 15 us */
	_delay_us(15); //delay 15us

    cbi(DS_DDR, DQ);        /* set DQ pin direction - input */
    sbi(DS_PORT, DQ);       /* enable AVR internal pull-up resistor */

    bit_is_set(DS_PIN, DQ) ? (val = 1) : (val = 0); /* read DQ status */

    //TM_Delay(4);            /* wait for end of timeslot */
	_delay_us(60); //delay 4*15us

    return val;             /* return value of DQ line */
}

/*
 *  TM_RESET - the initialization sequence (reset pulse and presence pulse(s)).
 *
 *  Note: All transactions on the 1-Wire bus begin with an initialization sequence.
 */
static u_char TM_Reset(void)
{
    u_char presence;

    sbi(DS_DDR, DQ);        /* set DQ pin direction - output */

    cbi(DS_PORT, DQ);       /* pull DQ line low */

    //TM_Delay(32);           /* leave it low for 480us */
	_delay_us(480); //delay 480us

                            /* allow DQ line to return high */
    cbi(DS_DDR, DQ);        /* set DQ pin direction - input */
   // sbi(DS_PORT, DQ);       /* enable AVR internal pull-up resistor */

   // sbi(DS_PORT, DQ);
   // TM_Delay(4);            /* wait for presence */
   _delay_us(60); //delay 4*15us

                            /* get presence signal */

   if(bit_is_set(DS_PIN, DQ))
   {
   presence = 1;
   }
   else
   {
   presence = 0;
   }						
//    bit_is_set(DS_PIN, DQ) ? (presence = 1) : (presence = 0);

    //TM_Delay(20);           /* wait for end of timeslot */
	_delay_us(300); //delay 20*15us

    return presence;        /* presence signal returned
                             * 0 = presence, 1 = no part
                             */
}

/*
 *  TM_Delay()
 *
 *  approximately 15us delay - this is vital for DQ !!
 *                             change number of nops to adjust the delay
 *
 */



void TM_Delay(u_char cnt)
{
  /* 14,7456 MHz ... 1x nop ... 68 ns */
 
  #define Delay1us()  _NOP()

  /*#define Delay1us()  _NOP();  \
                      _NOP();  \
                      _NOP();  \
                      _NOP();  \
                      _NOP();  \
                      _NOP();  \
                      _NOP();  \
                      _NOP();  \
                      _NOP();  \
                      _NOP();  \
                      _NOP();  \
                      _NOP();  \
                      _NOP();  \
                      _NOP()*/

COMPRESS_DISABLE;
  do
  { Delay1us();       /* 1us */
    Delay1us();       /* 2us */
    Delay1us();       /* 3us */
    Delay1us();       /* 4us */
    Delay1us();       /* 5us */
    Delay1us();       /* 6us */
    Delay1us();       /* 7us */
    Delay1us();       /* 8us */
    Delay1us();       /* 9us */
    Delay1us();       /* 10us */
    Delay1us();       /* 11us */
    Delay1us();       /* 12us */
    Delay1us();       /* 13us */
    Delay1us();       /* 14us */
    Delay1us();       /* 15us */
  }while (--cnt);
COMPRESS_REENABLE;
}



/*
 *  TM_Init()
 *
 *    This is here to initialize the 1-Wire bus devices.
 *
 *   Returns:
 *    > 0  ...  Number of appeared thermometeres on the 1-Wire bus.
 *      0  ...  Thermometer not present.
 */
u_char TM_Init(void)
{
  u_char tm_cnt = 0;

  #if !MULTI_DEVICE && DS_DEBUG
   TM_Read_rom(&tm_romdta[0]);
   hex_dump((char *)tm_romdta, 8);
  #endif

  /* TM_Search_rom() returns 0x80 if thermometer not connected */

  tm_cnt = 0x7F & TM_Search_rom(&tm_romdta[0]);

  if( tm_cnt )
  { /* here you can check if TM_Crc() works */

    #if 0
    { u_char  i, crc = 0;

      for (i = 0; i < 7; i++) crc = TM_Crc(crc, tm_romdta[i]);

      printf_P(PSTR("\ncrc:%X,%X\n"), crc, tm_romdta[7]);
    }
    #endif

    /* start conversion on all thermometers */
    TM_Sample_temperature(0xFF);
  }

  return tm_cnt;
}

/*
 *  TM_Scan()
 *
 *    If e.g. 1 thermometer is unplugged this can be called to refresh address table.
 *
 */
#if 0                     /* function is not currently used */
void TM_Scan(void)
{
  /* TM_Search_rom() returns 0x80 if thermometer not connected */
  return 0x7F & TM_Search_rom(&tm_romdta[0]);
}
#endif

/*
 * Display some debugging information - ascii/hex dump.
 */
#if DS_DEBUG
void hex_dump (u_char *buf, u_int length)
{ u_char abuf[19] = "[                ]\x0";	/* ascii buffer */
  u_int acnt = 1;								/* ascii counter */

  while(length--)
  {
	printf_P(PSTR("%02X "), *buf);

	if(*buf > ' ') abuf[acnt] = *buf;
	else abuf[acnt] = ' ';

	buf++;

	if(acnt++ == (sizeof(abuf)-3))
	{ printf_P(PSTR("   %s\n"), abuf);
   	  acnt = 1;
	}
  }

  if(acnt>1)
  { do
	{ printf_P(PSTR("   "));
	  abuf[acnt] = ' ';
	}while ( acnt++ < (sizeof(abuf)-3) );

    printf_P(PSTR("   %s\n"), abuf);
  }
}
#endif

#endif
/* ---------------------------- End Of File ------------------------------ */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产九九视频一区二区三区| 亚洲欧美另类久久久精品| 成人av免费在线观看| 国产一区美女在线| 极品美女销魂一区二区三区 | 日韩欧美国产精品一区| 精品99一区二区| 精品少妇一区二区三区在线播放 | 精品国产91久久久久久久妲己| 在线日韩av片| 欧美综合久久久| 91精品一区二区三区久久久久久| 91福利在线导航| 欧美日韩一区在线| 欧美剧情电影在线观看完整版免费励志电影 | av中文一区二区三区| 91亚洲国产成人精品一区二三| 成人午夜精品在线| 色噜噜狠狠一区二区三区果冻| 日本道色综合久久| 制服丝袜av成人在线看| 精品国产伦一区二区三区观看方式 | 国产成人av福利| eeuss鲁片一区二区三区| 91免费精品国自产拍在线不卡| 色狠狠av一区二区三区| 日韩视频在线永久播放| 国产日韩欧美综合在线| 亚洲精品免费在线观看| 奇米影视在线99精品| 国产老女人精品毛片久久| 成人不卡免费av| 欧洲中文字幕精品| 精品久久国产老人久久综合| 国产精品久久久久久户外露出| 亚洲精品乱码久久久久久黑人| 日本va欧美va精品发布| 高清在线成人网| 欧美伦理影视网| 国产校园另类小说区| 性做久久久久久免费观看 | 久久久久国产精品免费免费搜索| 亚洲免费大片在线观看| 久色婷婷小香蕉久久| 91欧美一区二区| 久久综合网色—综合色88| 综合久久给合久久狠狠狠97色| 性做久久久久久久免费看| 成人一区二区视频| 777欧美精品| 亚洲男人都懂的| 国产一区二区成人久久免费影院| 欧美日韩一区二区欧美激情 | 99精品一区二区三区| 亚洲精品一区二区精华| 亚洲国产成人porn| 99久久精品免费| 久久午夜国产精品| 日韩成人免费看| 欧美性受极品xxxx喷水| 亚洲欧洲www| 成人免费毛片app| 精品不卡在线视频| 老色鬼精品视频在线观看播放| 在线精品观看国产| 亚洲男同性恋视频| proumb性欧美在线观看| 国产片一区二区三区| 国产麻豆精品theporn| 精品国产自在久精品国产| 三级一区在线视频先锋| 欧美视频自拍偷拍| 亚洲午夜国产一区99re久久| 色综合视频一区二区三区高清| 亚洲国产精品精华液2区45| 国产馆精品极品| 久久久久国产精品厨房| 懂色av中文字幕一区二区三区| 久久综合狠狠综合久久综合88| 久久疯狂做爰流白浆xx| 欧美tickle裸体挠脚心vk| 精品一区二区三区免费播放| 欧美大黄免费观看| 国产乱码精品一区二区三区忘忧草 | 国产乱码精品一品二品| 久久精品亚洲乱码伦伦中文| 国产suv精品一区二区883| 久久伊99综合婷婷久久伊| 丁香激情综合国产| 国产精品盗摄一区二区三区| 色999日韩国产欧美一区二区| 亚洲综合色区另类av| 欧美性videosxxxxx| 免费不卡在线观看| 久久亚洲综合av| 99精品在线观看视频| 一区二区在线观看免费 | 欧美一区二区三区免费观看视频| 石原莉奈在线亚洲二区| 久久先锋资源网| av在线播放不卡| 午夜精品久久久久久不卡8050| 日韩精品一区二区三区视频在线观看 | 亚洲精品在线观看网站| 国产成人精品一区二区三区网站观看| 国产欧美一区二区精品久导航| 99久久精品国产一区| 天天影视网天天综合色在线播放| 精品国产乱码久久久久久闺蜜| 成人理论电影网| 午夜国产精品一区| 中文字幕第一区综合| 欧美日韩精品一二三区| 粉嫩久久99精品久久久久久夜| 一区二区三区视频在线观看| 日韩精品一区二区三区视频在线观看| 成人小视频在线观看| 亚洲mv在线观看| 日韩成人dvd| 国产精品视频免费看| 欧美日韩电影一区| 91在线国产福利| 精品在线观看免费| 亚洲一区二区精品3399| 国产日产精品一区| 日韩一区二区高清| 欧洲精品一区二区| 成+人+亚洲+综合天堂| 日韩综合小视频| 亚洲欧美日韩精品久久久久| 欧美r级在线观看| 欧美电影一区二区三区| 一本到高清视频免费精品| 国产高清精品在线| 蜜臀av国产精品久久久久| 亚洲一区二区三区在线| 一区免费观看视频| 久久精品一级爱片| 精品乱码亚洲一区二区不卡| 欧美精品色一区二区三区| 91在线观看地址| 国产精品1区2区3区在线观看| 欧美96一区二区免费视频| 亚洲bt欧美bt精品777| 曰韩精品一区二区| 中文字幕亚洲一区二区av在线| 久久亚洲精华国产精华液| 欧美一区二区久久| 91精品在线免费| 欧美久久久久中文字幕| 欧美视频第二页| 欧美在线不卡一区| 欧美亚洲综合在线| 色偷偷成人一区二区三区91| 91亚洲男人天堂| 91看片淫黄大片一级| 91偷拍与自偷拍精品| 色狠狠色噜噜噜综合网| 91久久精品午夜一区二区| 色哟哟国产精品| 欧美色电影在线| 欧美日韩和欧美的一区二区| 在线播放日韩导航| 日韩免费一区二区| 亚洲精品一线二线三线 | 高清国产午夜精品久久久久久| 大白屁股一区二区视频| 成人久久视频在线观看| 91色porny在线视频| 91黄色免费版| 日韩一级片网站| 久久久久久久久久久黄色| 亚洲国产成人在线| 亚洲欧美日韩久久精品| 午夜久久久久久久久久一区二区| 欧美aaaaaa午夜精品| 国产精品亚洲а∨天堂免在线| 91网站在线观看视频| 欧美日韩国产免费| 精品国产99国产精品| 中文字幕日本不卡| 首页综合国产亚洲丝袜| 久久99久久精品| 99久久伊人网影院| 欧美日韩国产区一| 欧美激情资源网| 亚洲一区二区三区不卡国产欧美| 捆绑紧缚一区二区三区视频| www.在线成人| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲免费高清视频在线| 蜜臀av在线播放一区二区三区| 成人午夜av影视| 欧美一区二区在线看| 国产精品久久久久天堂| 日本不卡在线视频| 91在线观看高清| 久久男人中文字幕资源站| 亚洲自拍偷拍综合| 成人性生交大片免费看中文 |