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

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

?? twi_lib.c

?? 1IC網友 做的硬盤MP3資料公開 該播放器使用了美國atmel公司出品的mp3播放器專用芯片at89c51snd1c. 本芯片特性如下: 1)MCS51內核
?? C
?? 第 1 頁 / 共 2 頁
字號:
    //STATE 78h:   Arbitration lost in SLA+R/W as MASTER. General call
    //             has arrived ack returned
    //ACTION:      Receive DATA. return ACK. Restart master
    case 0x78 :
      I2C_SET_START;
      b_I2C_busy = TRUE;
    break;

    //STATE 80h:   Previously addressed with own SLA. Data received 
    //             and ACK returned 
    //ACTION:      Read DATA. 
    case 0x80 :
      I2C_slave_data[I2C_RecPtr] = SSDAT;
      I2C_RecPtr ++;
      if ( I2C_RecPtr < I2C_NB_SLAVE_DATA )
      {
        I2C_SET_AA;  // ACK will be returned
      }
      else
      {
        I2C_CLEAR_AA; // it was last data not ACK will be returned ( buffer full )
      }
    break;

    //STATE 88h:   Previously addressed with own SLA. Data received     
    //             and NOT ACK returned                                 
    //ACTION:      Dont' Read DATA. Enter NOT addressed SLV mode        
    case 0x88 :
      I2C_SET_AA;  // ready to send another ACK if addresed as slave
    break;

    //STATE 90h:   Previously addressed with general call. Data received
    //             and ACK returned                                     
    //ACTION:      Read DATA.                                           
    case 0x90 :
      I2C_slave_data[I2C_RecPtr] = SSDAT;
      I2C_RecPtr = I2C_RecPtr + 1;
      SSCON  = 0xC1;
    break;

    //STATE 98h:   Previously addressed with general call. Data arrved
    //             and NOT ACK returned 
    //ACTION:      Dont Read DATA. Enter NOT addressed SLV mode
    case 0x98 :
      I2C_SET_AA;
    break;

    //STATE A0h:   A stop or repeated start has arrived, whilst still
    //             addressed as SLV/REC or SLV/TRX
    //ACTION:      Dont Read DATA. Enter NOT addressed SLV mode
    case 0xA0 :
      I2C_SET_AA;
      b_I2C_busy = FALSE;
      I2C_Err = Tranfer_OK;
    break;

    //STATE A8h:   addressed with own SLA+R
    //ACTION:      Prepare first data to be transmited
    case 0xA8 :
      I2C_SET_AA;
      b_I2C_busy = TRUE;
      I2C_RecPtr=0;
      SSDAT = I2C_slave_data[0];  //Prepare next data
    break;


    //STATE B8h:   Previously addressed with own SLA. Data sent 
    //             and ACK returned 
    //ACTION:      Write DATA. 
    case 0xB8 :
      I2C_RecPtr ++;
      if ( I2C_RecPtr < I2C_NB_SLAVE_DATA )
      {
        SSDAT = I2C_slave_data[I2C_RecPtr];
      }
      else
      {
      ///////// FIX ME : adressed with as slave + R : but not enought data"
        I2C_CLEAR_AA; // it was last data not ACK will be returned ( buffer full )
      }
    break;


    //STATE C0h:   Previously addressed with own SLA. Data sent 
    //             and NACK returned 
    //ACTION:      It was last data to be sent 
    case 0xC0 :
      b_I2C_busy=FALSE;
      I2C_Err  = Tranfer_OK;
    break;

     //if we arrived here, unknown state has occurred..... 
    default :
      I2C_SET_STOP;
      b_I2C_busy = FALSE;
      I2C_Err  = UnknownError;
    break;
  }
}


/*F**************************************************************************
* NAME: I2C_Send_Message_polling 
*----------------------------------------------------------------------------
* PARAMS:
* *slave_adr:  The slave component address
* rw: Read or write operation flag ( read = 1 )
* nbbytes: number of bytes to be read or write 
* *info: pointer to the data to be processed
* return:  I2C error code state
*----------------------------------------------------------------------------
* PURPOSE: 
* This function can be used to send an I2C message to a slave 
* in polling mode.
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE: 
*----------------------------------------------------------------------------
* REQUIREMENTS: 
*****************************************************************************/
unsigned char I2C_Send_Message_polling (unsigned char slave_adr,bit rw, unsigned char nbbytes, unsigned char *info )
{
  I2C_message.address = slave_adr;
  I2C_message.rw = rw;
  I2C_message.nbbytes = nbbytes;
  I2C_message.buf = info;
  I2C_CLEAR_STOP;
  DISABLE_I2C_IT;
  I2C_nb_transmited=0;

  if ( ~b_I2C_busy )
  {
    b_I2C_busy =1;
    I2C_Err = Tranfer_OK;
    I2C_SET_START;
    while( b_I2C_busy  )
    {
      I2C_WAIT_EVENT;
      I2C_decode_status();
      I2C_CLEAR_SI;
    }
    I2C_SET_STOP;
    return I2C_Err;
  }
  else
  {
    I2C_SET_STOP;
    return I2C_NOT_FREE;
  }
}



/*F**************************************************************************
* NAME: I2C_Send_Message_interrupt 
*----------------------------------------------------------------------------
* PARAMS:
* *slave_adr:  The slave component address
* rw: Read or write operation flag ( read = 1 )
* nbbytes: number of bytes to be read or write 
* *info: pointer to the data to be processed
* return:  I2C error code state
*----------------------------------------------------------------------------
* PURPOSE: 
* This function can be used to send an I2C message to a slave 
* in interrupt mode.
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE: 
*----------------------------------------------------------------------------
* REQUIREMENTS: 
*****************************************************************************/
unsigned char I2C_Send_Message_interrupt (unsigned char slave_adr,bit rw, unsigned char nbytes, unsigned char *info)
{
  I2C_message.address = slave_adr;
  I2C_message.rw = rw;
  I2C_message.nbbytes = nbytes;
  I2C_message.buf = info;
  I2C_CLEAR_STOP;
  I2C_nb_transmited=0;
  if ( ~b_I2C_busy )
  {
    I2C_Err = Tranfer_OK;
    b_I2C_busy =1;
    ENABLE_I2C_IT;
    I2C_SET_START; 
  }
  else
  {
    I2C_SET_STOP;
    return I2C_NOT_FREE;
  }
}


/*F**************************************************************************
* NAME: I2C_slave_polling 
*----------------------------------------------------------------------------
* PARAMS:
* return:  I2C error code state
*----------------------------------------------------------------------------
* PURPOSE: 
* This function can be called to be able to answer another master request
* in polling mode.
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE: 
*----------------------------------------------------------------------------
* REQUIREMENTS: 
*****************************************************************************/
unsigned char I2C_slave_polling (void)
{
  I2C_WAIT_EVENT;
  I2C_decode_status();
  I2C_CLEAR_SI;
  while( b_I2C_busy  )
  {
    I2C_WAIT_EVENT;
    I2C_decode_status();
    I2C_CLEAR_SI;
  }
  return I2C_Err;
}


/*F**************************************************************************
* NAME: I2C_slave_interrupt 
*----------------------------------------------------------------------------
* PARAMS:
* return:  none
*----------------------------------------------------------------------------
* PURPOSE: 
* This function can be called to be able to answer another master request
* in interrupt mode (stand alone mode).
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE: 
*----------------------------------------------------------------------------
* REQUIREMENTS: 
*****************************************************************************/
void I2C_slave_interrupt (void)
{
  ENABLE_IT;
  ENABLE_I2C_IT;
}



/*F**************************************************************************
* NAME: I2C_interrupt 
*----------------------------------------------------------------------------
* PARAMS:
* return:  none
*----------------------------------------------------------------------------
* PURPOSE: 
* I2C interrupt routine service
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE: 
*----------------------------------------------------------------------------
* REQUIREMENTS: 
*****************************************************************************/
void I2C_interrupt() interrupt IRQ_I2C using 1
{
  I2C_decode_status();
  I2C_CLEAR_SI;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲动漫第一页| 综合久久久久综合| 欧美日韩一区二区三区不卡| 成人综合在线视频| 国产 日韩 欧美大片| 国产成人啪午夜精品网站男同| 裸体健美xxxx欧美裸体表演| 久久国产尿小便嘘嘘| 九色porny丨国产精品| 国产综合久久久久久鬼色| 九色综合狠狠综合久久| 国产伦精一区二区三区| 国产aⅴ综合色| 99久久国产综合色|国产精品| 91麻豆自制传媒国产之光| 色妞www精品视频| 欧美日韩高清一区二区不卡| 5566中文字幕一区二区电影| 欧美va在线播放| 国产视频一区在线观看 | 欧美日韩激情一区二区| 欧美精品亚洲一区二区在线播放| 欧美日韩一区高清| 久久伊人蜜桃av一区二区| 久久午夜羞羞影院免费观看| 一区在线播放视频| 亚洲 欧美综合在线网络| 久久99久久精品| av一区二区不卡| 4438x成人网最大色成网站| 日韩欧美色电影| 国产精品高潮呻吟久久| 亚洲图片一区二区| 成人国产精品免费观看| 欧美精选午夜久久久乱码6080| 精品久久久久一区二区国产| 国产精品久久午夜夜伦鲁鲁| 五月天国产精品| 成人一区在线看| 欧美日本一区二区三区四区| 久久久国产综合精品女国产盗摄| 一区二区三区欧美在线观看| 久久精品99国产精品| 色一情一伦一子一伦一区| 日韩欧美国产小视频| 国产精品毛片久久久久久| 日韩电影一区二区三区四区| 成人99免费视频| 欧美xxxx老人做受| 亚洲成a人片在线观看中文| 成人18精品视频| 精品国产一区二区三区久久久蜜月| 国产精品网站在线| 国产精品69毛片高清亚洲| 欧美日韩高清不卡| 亚洲免费av高清| 大陆成人av片| 国产偷v国产偷v亚洲高清| 日本亚洲最大的色成网站www| 99久久精品一区| 国产精品久久看| 国产精品夜夜爽| 久久久久综合网| 国产一区二区主播在线| 91精品国产综合久久香蕉的特点| 亚洲男人的天堂av| 成人精品视频一区| 日本一区二区动态图| 韩国视频一区二区| 精品对白一区国产伦| 日韩国产精品91| 日韩一区国产二区欧美三区| 三级精品在线观看| 欧美日韩国产美女| 日韩电影免费在线看| 欧美午夜精品免费| 国产馆精品极品| 2021中文字幕一区亚洲| 另类欧美日韩国产在线| 精品欧美黑人一区二区三区| 精品一区二区免费视频| 国产午夜亚洲精品午夜鲁丝片| 国产在线精品不卡| 国产女人水真多18毛片18精品视频| 韩国午夜理伦三级不卡影院| 久久精品视频免费| 99精品在线观看视频| 亚洲美女免费在线| 欧美日韩高清在线播放| 麻豆成人久久精品二区三区小说| 精品久久人人做人人爰| 国产91精品一区二区麻豆亚洲| 中文字幕av免费专区久久| 91老师国产黑色丝袜在线| 一区二区三区在线观看国产 | 婷婷成人激情在线网| 欧美另类videos死尸| 日韩avvvv在线播放| 欧美va亚洲va| 成人午夜视频免费看| 亚洲女女做受ⅹxx高潮| 日韩三级免费观看| 国产999精品久久久久久绿帽| 中文字幕色av一区二区三区| 欧美性高清videossexo| 毛片不卡一区二区| ●精品国产综合乱码久久久久| 欧美午夜免费电影| 国产成人日日夜夜| 亚洲va欧美va天堂v国产综合| 精品国产一区二区三区忘忧草 | 欧美久久久久久蜜桃| 国产一区日韩二区欧美三区| 亚洲综合丝袜美腿| 精品国产91亚洲一区二区三区婷婷 | 亚洲高清视频的网址| 久久久久久久久久久黄色| 色成年激情久久综合| 国产一区二区成人久久免费影院| 亚洲蜜桃精久久久久久久| 久久亚洲综合色一区二区三区| 一本一本大道香蕉久在线精品| 久久精品国产精品亚洲综合| 亚洲激情欧美激情| 国产精品天美传媒| 日韩欧美国产三级| 欧美人妇做爰xxxⅹ性高电影| 国产大片一区二区| 日韩精品乱码免费| 中文字幕日韩精品一区| 久久久久久黄色| 欧美挠脚心视频网站| 一本久久a久久免费精品不卡| 国产麻豆精品theporn| 亚洲成a人片综合在线| 亚洲男人天堂一区| 中文字幕av一区二区三区| 精品成人一区二区三区| 91精品婷婷国产综合久久竹菊| 91免费在线播放| av在线播放成人| 国产一区二区视频在线播放| 蜜桃视频一区二区三区在线观看| 国产一区视频网站| 美女视频黄久久| 美女一区二区在线观看| 日本美女一区二区三区| 天涯成人国产亚洲精品一区av| 亚洲一区在线观看免费 | 欧美电影一区二区| 欧美日韩精品免费| 欧美性大战久久| 在线一区二区三区做爰视频网站| 99re视频精品| 91色婷婷久久久久合中文| 99精品国产热久久91蜜凸| av午夜精品一区二区三区| 国产91精品精华液一区二区三区| 国产精选一区二区三区| 国产成人精品三级| 99久久er热在这里只有精品15| 福利一区二区在线观看| 丁香五精品蜜臀久久久久99网站| 不卡一区二区三区四区| 一本久久精品一区二区| 欧美视频中文字幕| 欧美一卡2卡三卡4卡5免费| 日韩视频免费观看高清完整版在线观看 | 亚洲欧美日韩人成在线播放| 国产精品久久久久久久久图文区| 欧美极品xxx| 亚洲精品乱码久久久久| 亚洲国产精品视频| 蜜臀精品久久久久久蜜臀| 国产精品原创巨作av| 波多野结衣一区二区三区| 欧美亚洲综合在线| 日韩欧美一二三区| 国产精品盗摄一区二区三区| 亚洲自拍偷拍九九九| 麻豆精品在线视频| 99久久精品国产观看| 欧美日韩国产bt| 亚洲精品一区二区在线观看| 中文av一区二区| 午夜一区二区三区视频| 国产一区二区福利| 精品视频全国免费看| 精品国产乱码久久久久久免费| 17c精品麻豆一区二区免费| 亚洲成人av电影在线| 国产精品一区二区无线| 欧美自拍偷拍午夜视频| 欧美一级久久久| 综合欧美一区二区三区| 久久精品二区亚洲w码| 91久久奴性调教| 久久综合狠狠综合久久激情 | 精品第一国产综合精品aⅴ| 亚洲女人****多毛耸耸8|