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

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

?? 24c256zhuan.c

?? 轉(zhuǎn)貼 剛剛調(diào)好了個24c256的操作
?? C
字號:
/*
 剛剛調(diào)好了個24c256的操作,自己在程序里搞了個連續(xù)讀寫的函數(shù)!很煩那頁寫跨頁的問題,所以干脆做了個通用點的函數(shù),小于3字節(jié)的寫就用隨機寫,大于3字節(jié)的就用頁寫!共享拉! 
真正供其他操作調(diào)用的函數(shù)是: 
unchar SeqWriteTo24c256(unchar sla_add,unint addr_op,unchar write_size,unchar *write_buf); 
unchar SeqReadFrom24c256(unchar sla_add,unint addr_op,unchar read_size,unchar *read_buf); 
其他的都是本文件內(nèi)自己調(diào)用的函數(shù)!! */

//*****************************************************調(diào)試函數(shù) 
void DebugEepromService(void) 
 { 
  unchar debug_buf[255]; 
  debug_buf[0]=0x91; 
  debug_buf[1]=0x92; 
  debug_buf[2]=0x93; 
  debug_buf[3]=0x94; 
  debug_buf[4]=0x95; 
  debug_buf[250]=0x05; 
  debug_buf[251]=0x06; 
  debug_buf[252]=0x07; 
  debug_buf[253]=0x08; 
  debug_buf[254]=0x09; 
  SeqWriteTo24c256(EEP1_ADDR,1,255,debug_buf); 
  SeqReadFrom24c256(EEP1_ADDR,1,255,debug_buf); 
 } 
//************************************************************* 



#define IIC_SDA_PB      0x20 
#define IIC_SCL_PB      0x80 
#define IIC_DEL_WAIT   0x10      //>4.7us(12.80us)  for Fre=11.0592M 
#define IIC_DEL_WRITE   0x2700      //>6ms(7266.54us=7.266ms) for Fre=11.0592M 

#define EEP1_ADDR      0xa4 
#define PAGE_CAP_BYTE   64      //24C256頁寫容量:64字節(jié) 


/* 
功能函數(shù)文件 
2005-9-22 9:54 by xth 
版本: v1.0 
-------------------------------------------- 
Mcu: avr mega32     Frequency: 11.0592M 
-------------------------------------------- 
功能概述:Eeprom操作文件 
-------------------------------------------- 
*/ 
//=============================函數(shù)聲明 
//----------IIC操作調(diào)用函數(shù) 
void IicDelayService(unint delay_time); 
void IicStartBitSend(void); 
void IicStopBitSend(void); 
void IicAckService(unchar ack_data); 
unchar IicSendByteService(unchar tx_data); 
unchar IicAccByteService(void); 
//----------At24c256操作函數(shù) 
unchar RandWriteByteTo24c256(unchar sla_add,unint addr_op,unchar data_op); 
unchar WritePageTo24c256(unchar sla_add,unint addr_op,unchar *write_data_buf); 
unchar SeqWriteTo24c256ByPage(unchar sla_add,unint addr_op,unchar write_size,unchar *write_buf); 
unchar SeqWriteTo24c256(unchar sla_add,unint addr_op,unchar write_size,unchar *write_buf); 
unchar SeqReadFrom24c256(unchar sla_add,unint addr_op,unchar read_size,unchar *read_buf); 
//=============================函數(shù)定義 
void IicDelayService(unint delay_count) 
 { 
  unint count; 
  for(count=0;count<delay_count;count++) 
   asm("NOP"); 
 } 

void IicStartBitSend(void) 
 { 
  PORTB |= IIC_SCL_PB;   //發(fā)送起始條件的時鐘信號 
  asm("NOP"); 
  PORTB |= IIC_SDA_PB;   //起始條件建立時間大于4.7us,延時 
  IicDelayService(IIC_DEL_WAIT); 
  PORTB &= ~IIC_SDA_PB; 
  IicDelayService(IIC_DEL_WAIT); 
  PORTB &= ~IIC_SCL_PB; //鉗住I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù) 
  asm("NOP"); 
 } 

void IicStopBitSend(void) 
 { 
  PORTB &= ~IIC_SDA_PB;//發(fā)送結(jié)束條件的時鐘信號 
  IicDelayService(IIC_DEL_WAIT); 
  PORTB |= IIC_SCL_PB; //結(jié)束條件建立時間大于4μs 
  IicDelayService(IIC_DEL_WAIT); 
  PORTB |= IIC_SDA_PB; 
  asm("NOP"); 
 } 

void IicAckService(unchar ack_data) 
 {//作為主控器件應(yīng)答->發(fā)應(yīng)答或非應(yīng)答信號 
  if(ack_data==0) PORTB &= ~IIC_SDA_PB; 
  else PORTB |= IIC_SDA_PB; 
  IicDelayService(IIC_DEL_WAIT); 
  PORTB |= IIC_SCL_PB; 
  IicDelayService(IIC_DEL_WAIT); 
  PORTB &= ~IIC_SCL_PB;//清時鐘線,鉗住I2C總線以便繼續(xù)接收 
  asm("NOP"); 
 } 

unchar IicSendByteService(unchar tx_data) 
 {//將字節(jié)發(fā)送出去,可以是地址,也可以是數(shù)據(jù),發(fā)完后等待應(yīng)答并返回 
  unchar bit_count,ack_flag; 
  for(bit_count=0;bit_count<8;bit_count++) 
   { 
      if((tx_data<<bit_count)&0x80) 
       PORTB |= IIC_SDA_PB; 
      else 
       PORTB &= ~IIC_SDA_PB; 
      IicDelayService(IIC_DEL_WAIT); 
      PORTB |= IIC_SCL_PB;            //置時鐘線為高,通知被控器開始接收數(shù)據(jù)位 
      IicDelayService(IIC_DEL_WAIT);      //保證時鐘高電平周期大于4μs 
      PORTB &= ~IIC_SCL_PB; 
   } 
  IicDelayService(IIC_DEL_WAIT); 
  PORTB &= ~IIC_SDA_PB; 
  DDRB &= ~IIC_SDA_PB;               //SDA置成輸入 
  asm("NOP"); 
  PORTB |= IIC_SCL_PB; 
  IicDelayService(IIC_DEL_WAIT); 
  IicDelayService(IIC_DEL_WAIT); 
  if(PINB&IIC_SDA_PB)      //判斷是否接收到應(yīng)答信號 
   ack_flag=NO; 
  else 
   ack_flag=YES;         //有應(yīng)答信號 
  DDRB |= IIC_SDA_PB; 
  PORTB &= ~IIC_SCL_PB; 
  asm("NOP"); 
  return(ack_flag); 
 } 

unchar IicAccByteService(void) 
 {//接收從器件傳來的數(shù)據(jù),并判斷總線錯誤 
  unchar bit_count,get_data; 
  DDRB &= ~IIC_SDA_PB; 
  get_data=0; 
  for(bit_count=0;bit_count<8;bit_count++) 
   { 
      asm("NOP"); 
      PORTB &= ~IIC_SCL_PB;            //置時鐘線為低,準(zhǔn)備接收數(shù)據(jù)位 
    IicDelayService(IIC_DEL_WAIT);      //時鐘低電平周期大于4.7μs; 
   PORTB |= IIC_SCL_PB;            //置時鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效 
   get_data<<=1; 
   if(PINB&IIC_SDA_PB) 
    get_data++; 
   asm("NOP"); 
   asm("NOP"); 
   } 
  PORTB &= ~IIC_SCL_PB; 
  DDRB |= IIC_SDA_PB; 
  asm("NOP"); 
  return(get_data); 
 } 

unchar RandWriteByteTo24c256(unchar sla_add,unint addr_op,unchar data_op) 
 { 
  unchar result_now,temp_data; 
  IicStartBitSend();                     //起始條件 
  temp_data=sla_add;                     //從器件地址 
  result_now=IicSendByteService(temp_data); 
  if(result_now==NO) return(result_now); 
  temp_data=addr_op>>8;                     //操作單元地址高8位 
  result_now=IicSendByteService(temp_data); 
  if(result_now==NO) return(result_now); 
  temp_data=addr_op;                     //操作單元地址低8位 
  result_now=IicSendByteService(temp_data); 
  if(result_now==NO) return(result_now); 
  temp_data=data_op;                     //操作數(shù)據(jù) 
  result_now=IicSendByteService(temp_data); 
  if(result_now==NO) return(result_now); 
  IicStopBitSend();                        //停止條件 
  IicDelayService(IIC_DEL_WRITE); 
  result_now=YES; 
  return(result_now); 
 } 

unchar SeqReadFrom24c256(unchar sla_add,unint addr_op,unchar read_size,unchar *read_buf) 
 {//addr “roll over” during read:from last byte of the last page, to the first byte of the first page 
  unchar result_now,temp_data,read_count; 
  IicStartBitSend();                     //起始條件 
  temp_data=sla_add;                     //從器件地址 
  result_now=IicSendByteService(temp_data); 
  if(result_now==NO) return(result_now); 
  temp_data=addr_op>>8;                     //操作單元地址高8位 
  result_now=IicSendByteService(temp_data); 
  if(result_now==NO) return(result_now); 
  temp_data=addr_op;                     //操作單元地址低8位 
  result_now=IicSendByteService(temp_data); 
  if(result_now==NO) return(result_now); 
  IicStartBitSend(); 
  temp_data=sla_add+1;                     //讀操作 
  result_now=IicSendByteService(temp_data); 
  if(result_now==NO) return(result_now); 
  for(read_count=0;read_count<read_size-1;read_count++) 
   {                                 //連續(xù)讀數(shù)據(jù) 
      *(read_buf+read_count)=IicAccByteService(); 
      IicAckService(NO); 
   } 
  *(read_buf+read_count)=IicAccByteService(); 
  IicAckService(YES); 
  IicStopBitSend(); 
  result_now=YES; 
  return(result_now); 
 } 

unchar WritePageTo24c256(unchar sla_add,unint addr_op,unchar *write_data_buf) 
 {//頁寫 
  unchar count,result_now,temp_data; 
  IicStartBitSend();                     //起始條件 
  temp_data=sla_add;                     //從器件地址 
  result_now=IicSendByteService(temp_data); 
  if(result_now==NO) return(result_now); 
  temp_data=addr_op>>8;                     //操作單元地址高8位 
  result_now=IicSendByteService(temp_data); 
  if(result_now==NO) return(result_now); 
  temp_data=addr_op;                     //操作單元地址低8位 
  result_now=IicSendByteService(temp_data); 
  if(result_now==NO) return(result_now); 
  for(count=0;count<PAGE_CAP_BYTE;count++) 
   {//連續(xù)寫 
    temp_data=*(write_data_buf+count); 
    result_now=IicSendByteService(temp_data); 
    if(result_now==NO) return(result_now); 
   } 
  IicStopBitSend();                        //停止條件 
  IicDelayService(IIC_DEL_WRITE); 
  result_now=YES; 
  return(result_now); 
 } 

unchar SeqWriteTo24c256ByPage(unchar sla_add,unint addr_op,unchar write_size,unchar *write_buf) 
 {//addr “roll over” during write:from last byte of the current page to first byte of the same page. 
  unint page_write,read_addr,temp_op_int; 
  unchar data_count,result_out,modify_count,count,write_data_buf[PAGE_CAP_BYTE]; 
  result_out=YES; 
  data_count=0; 
  while(write_size>0) 
   { 
      page_write=addr_op/PAGE_CAP_BYTE;            //得到當(dāng)前頁 
    read_addr=page_write*PAGE_CAP_BYTE; 
    SeqReadFrom24c256(sla_add,read_addr,PAGE_CAP_BYTE,write_data_buf); 
    temp_op_int=addr_op&(PAGE_CAP_BYTE-1);         //得到在頁內(nèi)的起始字節(jié)地址 
    if(temp_op_int+write_size>=PAGE_CAP_BYTE) 
     { 
      modify_count=PAGE_CAP_BYTE; 
      addr_op=(page_write+1)*PAGE_CAP_BYTE;         //寫下一頁的起始地址 
     } 
    else 
     modify_count=write_size; 
    count=temp_op_int; 
    write_size=write_size-modify_count+count;      //寫下一頁的數(shù)據(jù)量 
    for(;count<modify_count;count++,data_count++) 
     write_data_buf[count]=*(write_buf+data_count); 
    result_out=WritePageTo24c256(sla_add,read_addr,write_data_buf); 
   } 
  return(result_out); 
 } 

unchar SeqWriteTo24c256(unchar sla_add,unint addr_op,unchar write_size,unchar *write_buf) 
 {//連續(xù)寫(非頁寫) 
  unchar write_result; 
  if(write_size<3) 
   {//如果要寫入的數(shù)據(jù)小于3個,則用隨機寫實現(xiàn) 
    write_result=RandWriteByteTo24c256(sla_add,addr_op,*write_buf); 
    write_result=RandWriteByteTo24c256(sla_add,addr_op+1,*(write_buf+1)); 
   } 
  else 
   write_result=SeqWriteTo24c256ByPage(sla_add,addr_op,write_size,write_buf); 
  return(write_result); 
 } 
 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品免费一区二区三区| 国产一区二区调教| 亚洲欧美日韩中文字幕一区二区三区| 欧美r级电影在线观看| 欧美一级黄色录像| 日韩欧美激情在线| 国产午夜亚洲精品羞羞网站| 国产色91在线| 国产精品免费av| 一区二区三区在线视频免费观看| 亚洲欧美日韩小说| 亚洲香肠在线观看| 日本不卡不码高清免费观看| 国内精品免费**视频| 国产精品18久久久久久久久久久久 | 91精品中文字幕一区二区三区| 欧洲激情一区二区| 欧美日韩国产另类一区| 日韩欧美高清dvd碟片| 精品av久久707| 中文字幕中文在线不卡住| 中文字幕一区二区三| 亚洲自拍偷拍九九九| 日韩不卡免费视频| 蜜臀av一区二区在线免费观看| 老司机精品视频在线| 成人在线综合网| 欧洲精品中文字幕| 欧美精品一区二区高清在线观看| 国产精品美女久久久久久久久久久 | 经典一区二区三区| 粉嫩蜜臀av国产精品网站| 91香蕉视频mp4| 日韩欧美成人午夜| 欧美韩日一区二区三区| 一片黄亚洲嫩模| 狠狠色丁香婷婷综合| 97超碰欧美中文字幕| 欧美剧情片在线观看| 中文字幕永久在线不卡| 日韩成人精品在线观看| 夫妻av一区二区| 精品久久久久久久久久久久久久久| 国产精品视频线看| 石原莉奈在线亚洲三区| 91日韩精品一区| 国产亚洲制服色| 美女在线观看视频一区二区| 91丨九色丨蝌蚪富婆spa| 久久亚洲精品国产精品紫薇| 视频一区二区中文字幕| 色狠狠综合天天综合综合| 国产性色一区二区| 精品一区二区三区免费播放| 欧美精品色一区二区三区| 伊人婷婷欧美激情| 99免费精品视频| 国产无人区一区二区三区| av在线综合网| 国产欧美日韩精品一区| 狠狠色伊人亚洲综合成人| 欧美一卡2卡3卡4卡| 天天综合网天天综合色| 欧美日韩在线免费视频| 亚洲综合在线视频| 欧洲视频一区二区| 一区二区在线观看不卡| 在线看不卡av| 亚洲一区二区三区小说| 欧美伊人精品成人久久综合97| 亚洲男帅同性gay1069| 色婷婷激情综合| 亚洲国产欧美在线人成| 91.麻豆视频| 青娱乐精品视频| 日韩欧美一二区| 韩国v欧美v亚洲v日本v| 国产欧美综合色| 成人黄动漫网站免费app| 国产精品日韩成人| 91蜜桃在线免费视频| 亚洲欧美国产毛片在线| 91行情网站电视在线观看高清版| 一区二区三区免费在线观看| 欧美伊人精品成人久久综合97 | 欧美日韩国产一区| 三级在线观看一区二区| 欧美电视剧免费观看| 国产成人啪免费观看软件| 亚洲欧美在线高清| 欧美日韩激情一区| 久久er精品视频| 亚洲欧洲精品一区二区三区| 在线视频欧美区| 美女任你摸久久| 国产精品理伦片| 欧美视频完全免费看| 国产麻豆成人精品| 亚洲精品国产成人久久av盗摄| 欧美日韩国产成人在线91| 九九国产精品视频| 亚洲男同性恋视频| 26uuu精品一区二区在线观看| 成人精品小蝌蚪| 奇米精品一区二区三区在线观看一| 久久网站最新地址| 欧美日韩aaaaaa| 成人深夜在线观看| 麻豆国产精品777777在线| 国产欧美日韩三级| 9191国产精品| 99精品热视频| 激情文学综合网| 一区二区三区四区高清精品免费观看| 欧美一级二级在线观看| 色悠悠久久综合| 国产高清成人在线| 日韩高清中文字幕一区| 亚洲丝袜另类动漫二区| 欧美xfplay| 欧美日韩国产123区| 91影院在线免费观看| 国产精品一线二线三线| 丝袜a∨在线一区二区三区不卡| 国产精品天干天干在观线| 日韩美女一区二区三区| 欧美日韩在线亚洲一区蜜芽| av激情综合网| 成人午夜视频网站| 国产一区二区三区免费播放| 日韩电影一区二区三区四区| 亚洲综合色在线| 亚洲精品乱码久久久久久黑人 | 欧美sm美女调教| 欧美性猛交xxxx黑人交| 91片在线免费观看| 成人av资源在线观看| 高清不卡在线观看av| 激情国产一区二区| 蜜桃久久av一区| 日韩av中文在线观看| 亚洲一区中文在线| 亚洲自拍与偷拍| 亚洲一区二区三区视频在线| 亚洲精品大片www| 亚洲欧美一区二区三区国产精品| 中文字幕乱码日本亚洲一区二区| 久久久蜜桃精品| 久久久久国产成人精品亚洲午夜| 精品国产百合女同互慰| 欧美一区二区三区视频在线| 777奇米成人网| 欧美成人一区二区三区片免费 | 中文在线免费一区三区高中清不卡| 日韩精品一区国产麻豆| 欧美大肚乱孕交hd孕妇| 精品女同一区二区| 久久精品一区二区| 中文字幕亚洲一区二区va在线| 国产精品国产三级国产a| 综合久久久久久久| 午夜视频在线观看一区二区 | 久久精品噜噜噜成人av农村| 久久 天天综合| 国产福利精品导航| 99re热这里只有精品视频| 欧美在线一二三| 91精品国产色综合久久不卡蜜臀| 日韩一二三四区| 久久久久久久久蜜桃| 亚洲天堂久久久久久久| 午夜视频在线观看一区| 国内精品伊人久久久久av影院| 成人福利电影精品一区二区在线观看 | 91精品国模一区二区三区| 欧美成人激情免费网| 国产精品国产三级国产有无不卡| 亚洲综合色自拍一区| 国产自产视频一区二区三区| 成人毛片老司机大片| 在线观看日韩毛片| 日韩欧美在线1卡| 国产精品久久久久久久久快鸭 | 在线看国产日韩| 久久夜色精品国产欧美乱极品| 中文字幕制服丝袜成人av | 日韩美女天天操| 亚洲人吸女人奶水| 亚洲另类一区二区| 激情伊人五月天久久综合| 色久综合一二码| 日本一区二区三级电影在线观看 | 欧美色欧美亚洲另类二区| 日韩欧美一级片| 亚洲免费在线观看| 国产成人自拍在线| 欧美一区二区三区在线电影| 亚洲欧美一区二区视频| 久久精品国产秦先生| 欧美三级电影精品|