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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? i2c.c

?? I2C library for LPC21xx processor
?? C
?? 第 1 頁 / 共 3 頁
字號:
   VICIntEnable  |= 0x00004000;       //-- Enable Int 0
   OSSemPost(gpSemI2Cop);             //-- Set sem on(I2C is free)
#elif defined(__TNKERNEL_)
   VICIntEnable  |= 0x00004000;       //-- Enable Int 0
   tn_sem_signal(&gSemI2Cop);         //-- Set sem on(I2C is free)
#endif

   return rc;
}

//---------------------------------------------------------------------------
int lm75_get_temp(int * ret_val)
{
   int rc;

#if defined(__UCOS_)
   INT8U err;

   OSSemPend(gpSemI2Cop,0,&err);  //-- Wait until I2C released(sem on)
   VICIntEnClear = 0x00004000;  //-- Disable Int 0 - from I/O extender PCA9555
#elif defined(__TNKERNEL_)
   tn_sem_acquire(&gSemI2Cop,TN_WAIT_INFINITE); //-- Wait until I2C released(sem on)
   VICIntEnClear |= 0x00004000;  //-- Disable Int 0 - from I/O extender PCA9555
#endif

   rc = lm75_read16(0,LM75_REG_TEMP,ret_val);

#if defined(__UCOS_)
   VICIntEnable  |= 0x00004000;       //-- Enable Int 0
   OSSemPost(gpSemI2Cop);             //-- Set sem on(I2C is free)
#elif defined(__TNKERNEL_)
   VICIntEnable  |= 0x00004000;       //-- Enable Int 0
   tn_sem_signal(&gSemI2Cop);         //-- Set sem on(I2C is free)
#endif

   return rc;
}

//===========================================================================
//================ I/O Extender PCA9555  ==================================
//===========================================================================

//----------------------------------------------------------------------------
int pca9555_write(int Mode, int val)
{

 //  I2C_Write(Mode,val);

   int ctrl;
   int rc;

   ctrl = 0x42; //--- 0100 001 0

   //--- wr START + CONTROL
   rc = i2c_lpc_ctrl(ctrl);  //-- Now WR (RD/WI = 0)
   if(rc != I2C_NO_ERR)
      return rc;
   //--- wr Mode
   i2c_lpc_wr_byte(Mode);
   //--- wr Port 0
   i2c_lpc_wr_byte(val & 0x000000FF);
   //--- wr Port 1
   i2c_lpc_wr_byte((val>>8) & 0x000000FF);

   i2c_lpc_stop();

   return I2C_NO_ERR;
}

//----------------------------------------------------------------------------
int pca9555_read(int Mode, int * ret_val)
{
   int ctrl;
   int rc;
   int rd_val;
   unsigned char buf[4];


   ctrl = 0x42; //--- 0100 001 0

   //--- wr START + CONTROL
   rc = i2c_lpc_ctrl(ctrl); //-- Now WR (RD/WI = 0)
   if(rc != I2C_NO_ERR)
      return rc;
   //--- wr Mode
   i2c_lpc_wr_byte(Mode);

   //--- wr START + CONTROL
   rc = i2c_lpc_ctrl(ctrl | 0x01); //-- Now RD (RD/WI = 1)
   if(rc != I2C_NO_ERR)
      return rc;

   rc = i2c_lpc_rx_to_buf(&buf[0],2);
   if(rc != I2C_NO_ERR)
      return rc;

   i2c_lpc_stop();                 //-- Set STOP condition

   rd_val = (buf[1]<<8)& 0x0000FF00; //-- Port1
   rd_val |= buf[0];  //-- Port 0

   *ret_val = rd_val;

   return I2C_NO_ERR;
}

//===========================================================================
//================ Real Time Clock DS1307  ==================================
//===========================================================================

//----------------------------------------------------------------------------
char ds1307_toBCD(char bin_val)
{
//-- this function converts an 8 bit binary value
//-- to an 8 bit BCD value. Input range from 0 to 99.

   char temp;
   char retval;

   temp = bin_val;
   retval = 0;

   for(;;)
   {  // get tens digit by multiple subtraction of 10 from bin_val
      if(temp >= 10)
      {
         temp -= 10;
         retval += 0x10; // increment tens digit
      }
      else  // get ones digit by adding remainder
      {
         retval += temp; // adjusted result
         break;
      }
   }
   return retval;
}

//----------------------------------------------------------------------------
char ds1307_fromBCD(char bcd_val)
{
   return ((bcd_val >> 4) & 0x0F)*10 + (bcd_val & 0x0F);
}

//----------------------------------------------------------------------------
int ds1307_set(DATETIMEINFO * dti)
{
   int i;
   char buf[8];
#if defined(__UCOS_)
   INT8U err;
#endif

   buf[0] = dti->second;    // Seconds
   buf[1] = dti->minute;    // Minutes
   buf[2] = dti->hour;      // Hours
   buf[3] = 1;             // Day of week not supported! -> Always 1
   buf[4] = dti->day;      // Date
   buf[5] = dti->month;     // Month
   buf[6] = dti->year;      // Year
   buf[7] = 0;             // Control  = 00h (SQWE disable)

  //-- convert to BCD
   for(i=0; i<7; i++)
   {
      buf[i] = ds1307_toBCD(buf[i]);
   }
   //-- Set control bits
   buf[0] &= 0x7f;    //-- Seconds  bit 7(CH)    = 0 (clock enabled)
   buf[2] &= 0xbf;    //-- Hours    bit 6(12/24) = 0(24-hour mode)

#if defined(__UCOS_)
   OSSemPend(gpSemI2Cop,0,&err);  //-- Wait until I2C released(sem on)
   VICIntEnClear = 0x00004000;  //-- Disable Int 0 - from I/O extender PCA9555
#elif defined(__TNKERNEL_)
   tn_sem_acquire(&gSemI2Cop,TN_WAIT_INFINITE); //-- Wait until I2C released(sem on)
   VICIntEnClear |= 0x00004000;  //-- Disable Int 0 - from I/O extender PCA9555
#endif

   i2c_lpc_init(I2C_SPEED_100);
   i = ds1307_wr_regs(buf);
   i2c_lpc_init(I2C_SPEED_400);

#if defined(__UCOS_)
   VICIntEnable  |= 0x00004000;       //-- Enable Int 0
   OSSemPost(gpSemI2Cop);             //-- Set sem on(I2C is free)
#elif defined(__TNKERNEL_)
   VICIntEnable  |= 0x00004000;       //-- Enable Int 0
   tn_sem_signal(&gSemI2Cop);         //-- Set sem on(I2C is free)
#endif

   return i;
}

//----------------------------------------------------------------------------
int ds1307_get(DATETIMEINFO * dti)
{
   int rc;
   char buf[8];

#if defined(__UCOS_)
   INT8U err;

   OSSemPend(gpSemI2Cop,0,&err);  //-- Wait until I2C released(sem on)
   VICIntEnClear = 0x00004000;  //-- Disable Int 0 - from I/O extender PCA9555
#elif defined(__TNKERNEL_)
   tn_sem_acquire(&gSemI2Cop,TN_WAIT_INFINITE); //-- Wait until I2C released(sem on)
   VICIntEnClear |= 0x00004000;  //-- Disable Int 0 - from I/O extender PCA9555
#endif

   i2c_lpc_init(I2C_SPEED_100);
   rc = ds1307_rd_regs(buf);
   i2c_lpc_init(I2C_SPEED_400);

#if defined(__UCOS_)
   VICIntEnable  |= 0x00004000;       //-- Enable Int 0
   OSSemPost(gpSemI2Cop);             //-- Set sem on(I2C is free)
#elif defined(__TNKERNEL_)
   VICIntEnable  |= 0x00004000;       //-- Enable Int 0
   tn_sem_signal(&gSemI2Cop);         //-- Set sem on(I2C is free)
#endif

   if(rc != I2C_NO_ERR)
      return rc;

   //-- Mask off the unused bits
   buf[0] &= 0x7F; // Seconds
   buf[1] &= 0x7F; // Minutes
   buf[2] &= 0x3F; // Hours
   buf[3] &= 0x07; // Day of week not supported! -> Always 1
   buf[4] &= 0x3F; // Date (day of month)
   buf[5] &= 0x1F; // Month
                   // Year - not need

   //-- Convert from BCD

   dti->second  = ds1307_fromBCD(buf[0]); // Seconds
   dti->minute  = ds1307_fromBCD(buf[1]); // Minutes
   dti->hour    = ds1307_fromBCD(buf[2]); // Hours
   dti->day     = ds1307_fromBCD(buf[4]); // Date
   dti->month   = ds1307_fromBCD(buf[5]); // Month
   dti->year    = ds1307_fromBCD(buf[6]); // Year

   return I2C_NO_ERR;
}

//----------------------------------------------------------------------------
int ds1307_wr_regs(char * buf)  //---- Wr 8 control bytes to DS1307
{
   int rc;
   int num;
//---- Wr ----------
   //--- wr START + CONTROL
   rc = i2c_lpc_ctrl(0xd0);     //-- Now WR (RD/WI = 0); 0xd0 - ID of DS1307
   if(rc != I2C_NO_ERR)
      return rc;
   //--- wr ADDRESS
   i2c_lpc_wr_byte(0);
   //---  Write  data
   num = 8;
   while(num--)                 //-- transmit data until length>0
   {
      rc = *buf++; //---
      i2c_lpc_wr_byte(rc);
   }
   i2c_lpc_stop();
 //--------------------
   return I2C_NO_ERR;
}

//----------------------------------------------------------------------------
int ds1307_rd_regs(char * buf)  //---- Rd 8 control bytes from DS1307
{
   int rc;
//---- RD ------
   //--- wr START + CONTROL
   rc = i2c_lpc_ctrl(0xd0); //-- Now WR (RD/WI = 0)
   if(rc != I2C_NO_ERR)
      return rc;
   //--- wr ADDRESS
   i2c_lpc_wr_byte(0);

   //--- wr START + CONTROL again - for read start
   rc = i2c_lpc_ctrl(0xd0 | 0x01); //-- Now RD (RD/WI = 1)
   if(rc != I2C_NO_ERR)
      return rc;

   rc = i2c_lpc_rx_to_buf(buf,8);
   if(rc != I2C_NO_ERR)
      return rc;

   i2c_lpc_stop();     //---- Set STOP ---
//-------------------------------------
   return I2C_NO_ERR;
}

//----------------------------------------------------------------------------
int ds1307_wr_nvram(int addr,int num, char * buf,int * b_wr)
{
   int n_wr;
   int rc;

   addr += 0x08;
   n_wr = 0x3f - addr;
   if(n_wr <= 0)
      return I2C_ERR_WRONG_PARAM;

   n_wr = __min(n_wr,num);
   if(n_wr <= 0)
      return I2C_ERR_WRONG_PARAM;

 //---- Wr ----------
   //--- wr START + CONTROL
   rc = i2c_lpc_ctrl(0xd0); //-- Now WR (RD/WI = 0); 0xd0 - ID of DS1307
   if(rc != I2C_NO_ERR)
      return rc;
   //--- wr ADDRESS
   i2c_lpc_wr_byte(addr);
   //---  Write  data
   num = n_wr;
   while(num--)                 //-- transmit data until length>0
   {
      rc = *buf++; //---
      i2c_lpc_wr_byte(rc);
   }
   i2c_lpc_stop();
 //--------------------
   *b_wr = n_wr;
   return I2C_NO_ERR;
}

//----------------------------------------------------------------------------
int ds1307_rd_nvram(int addr,int num, char * buf,int * b_rd)
{
   int n_rd;
   int rc;

   addr += 0x08;
   n_rd = 0x3f - addr;
   if(n_rd <= 0)
      return I2C_ERR_WRONG_PARAM;

   n_rd = __min(n_rd,num);

   if(n_rd <= 0)
      return I2C_ERR_WRONG_PARAM;

   i2c_lpc_init(I2C_SPEED_100);

//---- RD ------
   //--- wr START + CONTROL
   rc = i2c_lpc_ctrl(0xd0); //-- Now WR (RD/WI = 0)
   if(rc != I2C_NO_ERR)
      return rc;
   //--- wr ADDRESS
   i2c_lpc_wr_byte(addr);

   //--- wr START + CONTROL again - for read start
   rc = i2c_lpc_ctrl(0xd0 | 0x01); //-- Now RD (RD/WI = 1)
   if(rc != I2C_NO_ERR)
      return rc;

   rc = i2c_lpc_rx_to_buf(buf,n_rd);
   if(rc != I2C_NO_ERR)
      return rc;

   i2c_lpc_stop();     //---- Set STOP ---

//--------------

   *b_rd = n_rd;
   return I2C_NO_ERR;
}

//---------------------------------------------------------------------------

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲动漫第一页| 精品久久久久久久久久久久久久久久久 | 麻豆一区二区在线| 欧美日韩在线精品一区二区三区激情| 久久久久久久久伊人| 黄页视频在线91| 国产午夜精品一区二区三区四区| 韩国女主播一区二区三区| 久久婷婷综合激情| 国产99精品国产| 中文字幕中文字幕在线一区| eeuss鲁片一区二区三区在线观看| 国产欧美一区二区精品仙草咪| 国产激情视频一区二区在线观看 | 美腿丝袜亚洲色图| 精品国产免费人成电影在线观看四季 | 国产精品久久久久久久岛一牛影视| 久久国产乱子精品免费女| 精品卡一卡二卡三卡四在线| 国产精品伊人色| 国产精品国产三级国产| 色综合夜色一区| 亚洲高清视频中文字幕| 欧美一区二区三区免费在线看| 美腿丝袜亚洲一区| 国产精品乱码人人做人人爱 | 国产在线精品不卡| 国产精品不卡在线观看| 欧美日韩国产欧美日美国产精品| 午夜精品久久久久久久久| 久久综合久久综合亚洲| 91免费看视频| 久久成人18免费观看| 国产精品理论片在线观看| 欧美日韩国产免费| 国产一区二区三区美女| 亚洲免费观看高清完整 | 精品久久久久久久久久久久久久久久久| 国产精品一区二区三区乱码| 亚洲手机成人高清视频| 91精品麻豆日日躁夜夜躁| 亚洲高清在线精品| 精品捆绑美女sm三区| 成人av集中营| 五月激情丁香一区二区三区| 久久亚洲二区三区| 日本精品裸体写真集在线观看| 国产精品初高中害羞小美女文| av一区二区不卡| 亚洲国产wwwccc36天堂| 2024国产精品| 日本韩国欧美在线| 久久电影国产免费久久电影| 国产精品日韩精品欧美在线| 欧美性xxxxx极品少妇| 狠狠狠色丁香婷婷综合久久五月| 中文字幕综合网| 日韩欧美综合一区| 成人v精品蜜桃久久一区| 亚洲成人福利片| 欧美国产禁国产网站cc| 欧美精品在线一区二区| 成人一区在线看| 一区二区三区中文在线| 精品国产区一区| 欧美性感一区二区三区| 成人激情黄色小说| 麻豆精品国产91久久久久久| 亚洲欧美激情小说另类| 精品盗摄一区二区三区| 欧美性猛交xxxxxx富婆| 成人免费毛片aaaaa**| 久久se精品一区精品二区| 一区二区三区免费看视频| 国产精品免费av| 精品日产卡一卡二卡麻豆| 欧美网站一区二区| 成人激情文学综合网| 日韩伦理av电影| 亚洲国产成人私人影院tom| 欧美r级电影在线观看| 欧美日韩精品一区二区在线播放| 不卡一区二区三区四区| 国模少妇一区二区三区| 奇米四色…亚洲| 亚洲国产另类精品专区| 亚洲欧美乱综合| 中文字幕日韩一区| 26uuu精品一区二区三区四区在线| 欧美日本视频在线| 欧美三日本三级三级在线播放| 成人app下载| 国产一区日韩二区欧美三区| 久久99久久精品| 久久国产精品色婷婷| 青娱乐精品视频在线| 日本成人在线电影网| 午夜久久久久久| 亚洲电影中文字幕在线观看| 亚洲激情图片小说视频| 亚洲理论在线观看| 一区二区三区在线观看网站| 亚洲美女免费在线| 亚洲一区二区三区小说| 亚洲一区二区在线视频| 悠悠色在线精品| 亚洲午夜在线电影| 午夜久久久影院| 蜜桃视频第一区免费观看| 久久av老司机精品网站导航| 久久电影网电视剧免费观看| 国产精品一级黄| 成人午夜激情影院| 99久久免费视频.com| 一本一道波多野结衣一区二区| 92精品国产成人观看免费| 色婷婷av久久久久久久| 欧美日韩一级二级| 在线观看av不卡| 日韩美女视频一区二区在线观看| 欧美成人精品二区三区99精品| 精品999在线播放| 国产精品免费免费| 亚洲一区在线观看视频| 日韩电影网1区2区| 国产传媒日韩欧美成人| 91在线视频免费91| 91精品国产综合久久福利软件| 精品国产凹凸成av人导航| 国产欧美日韩在线看| 亚洲另类中文字| 亚洲成人精品一区| 蜜臀av性久久久久蜜臀av麻豆| 国产美女视频91| 91高清视频在线| 日韩写真欧美这视频| 久久久久亚洲蜜桃| 一区二区三区在线视频免费观看| 亚洲综合在线电影| 久久er精品视频| 91伊人久久大香线蕉| 91精品在线观看入口| 国产拍揄自揄精品视频麻豆| 一区二区激情小说| 国模一区二区三区白浆| 欧洲一区在线电影| 久久夜色精品一区| 亚洲一卡二卡三卡四卡五卡| 国产中文一区二区三区| 91色综合久久久久婷婷| 欧美一区二区精品在线| 亚洲精品国久久99热| 国产在线观看一区二区| 在线观看国产精品网站| 久久久精品一品道一区| 天天色综合成人网| 成人黄色软件下载| 91精品国产一区二区三区| 亚洲激情自拍视频| 国产精品夜夜嗨| 91麻豆精品国产91久久久久久 | 亚洲精品在线一区二区| 亚洲国产精品嫩草影院| youjizz国产精品| 日韩精品专区在线| 一色屋精品亚洲香蕉网站| 国产综合色在线视频区| 欧美情侣在线播放| 一区二区三区在线免费| 国产福利一区二区三区视频在线| 69堂精品视频| 亚洲3atv精品一区二区三区| 99久久精品国产毛片| 久久影院午夜片一区| 视频一区免费在线观看| 91热门视频在线观看| 精品免费日韩av| 久久精品国产久精国产爱| 欧美日韩激情在线| 亚洲六月丁香色婷婷综合久久 | 精品欧美一区二区久久| 日韩成人午夜精品| 欧美日韩在线电影| 亚洲美女少妇撒尿| 色呦呦日韩精品| 一区二区三区中文字幕在线观看| 97久久精品人人做人人爽| 国产日韩精品一区二区三区| 国产乱码精品1区2区3区| 久久这里都是精品| 奇米色777欧美一区二区| 精品伦理精品一区| 激情小说欧美图片| 久久只精品国产| 国产福利视频一区二区三区| 国产女人aaa级久久久级| 国产成人久久精品77777最新版本| 久久女同性恋中文字幕| 国产91综合一区在线观看| 国产日韩欧美综合一区|