99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

關于AT24C02 c51的問題.

用c51寫的at24c02的讀寫程序,先寫后讀,全是ff.

元件是好的,我用匯編寫過一個,運行是ok的.

查了兩天沒找到問題.
#include   /*51標準庫函數*/
#include /*定義了_nop_()*/

#define uchar unsigned char
#define uint unsigned int

sbit SCL=P1^6;
sbit SDA=P1^7;


/*
* 1,函數介紹:延時8us(以12M晶振為準)
* 輸入參數: 無
* 輸出參數: 無
* 返回值:   無
*/
void delay8us(void)
{
_nop_();
_nop_();
_nop_();
_nop_();
}

/*
* 2,函數介紹:延時n_msec ms(以12M晶振為準)
* 輸入參數: n_msec,最大256
* 輸出參數: 無
* 返回值:   無
*/
void delay_ms(uchar n_msec)
{
uchar i;
do
{  
  i=245;
  while(--i);
  i=245;
  while(--i);    
}
while(--n_msec);
}

/*
* 3,函數介紹:I2C起動總線函數  
* 輸入參數: 無
* 輸出參數: 無
* 返回值:      無
*/
void i2c_start(void)
{
SDA=1;
SCL=1;
delay8us();
SDA=0;  
SCL=0;
}

/*
* 4,函數介紹:I2C結束函數  
* 輸入參數: 無
* 輸出參數: 無
* 返回值:      無
*/
void i2c_stop(void)
{
  
SDA=0; /*發送結束條件的數據信號*/
SCL=1;
delay8us();
SDA=1;
SCL=1;
}

/*
* 5,函數介紹:I2C寫一個字節str
* 輸入參數: str
* 輸出參數: 返回應答位
* 返回值:      為0 成功
*/
bit i2c_write_byte(uchar str)
{
uchar bitnum;
uchar temp;
bit ack;
temp=str;
for(bitnum=0;bitnum<8;bitnum++)
{
  SCL=0;    
  SDA=temp&0x80;  
  SCL=1;  
  delay8us();
  temp=temp<<1;
}
SCL=0;
SDA=1;
delay8us();
SCL=1;  
ack=SDA;  
return(ack); /*判斷是否接收到應答,1表示沒有應答*/
}




/*AT24C02eeprom系列函數

,函數介紹:(以12M晶振為準)*/

void delay8us(void);/*延時子程序*/
void delay_ms(uchar);/*延時子程序*/
void i2c_start(void);
void i2c_stop(void);
bit i2c_write_byte(uchar str);

/*
* 1,函數介紹:發送應答        
* 輸入參數: 址
* 輸出參數:
* 返回值:      
*/
void send_ack(void)
{
SCL=0;
delay8us();
SDA=0;
delay8us();
SCL=1;
SDA=1;
}

/*
* 2,函數介紹:發送不應答        
* 輸入參數:
* 輸出參數:
* 返回值:      
*/
void send_no_ack(void)
{
SCL=0;
delay8us();
SDA=1;
delay8us();
SCL=1;
SDA=1;
}

/*
* 3,函數介紹:I2C讀一個字節str
* 輸入參數: str
* 輸出參數: 返回讀得的字節
* 返回值:    
*/
uchar i2c_read_byte()
{
bit bdata onebit=0;
uchar bitnum;
uchar read_abyte=0;

for(bitnum=0;bitnum<8;bitnum++)
{
  read_abyte<<=1;
  SCL=0;    
  SDA=1;
  delay8us();    
  SCL=1;
  delay8us();
  onebit=SDA;
  if(onebit==1)
  read_abyte++;
}
return(read_abyte);
}


/*
* 4,函數介紹:EEPROM頁讀n個字節從起始到結束        
* 輸入參數: part_add:器件地址
            ram_add:片內字節地址,
            write_num:欲寫個數
            data_add:欲寫數據地址
* 輸出參數:
* 返回值:      
*/
void eeprom_read_page(part_add,ram_add,read_num,data_add)

uchar part_add;
uchar ram_add;
uchar read_num;
uchar *data_add;
{
uchar i;
i2c_start();
i2c_write_byte(part_add);
i2c_write_byte(ram_add);
i2c_start();
i=part_add|0x01;
i2c_write_byte(i);
for(i=0;i {
  *(data_add+i)=i2c_read_byte();
  if(i!=read_num-1)send_ack();
  else send_no_ack();
}
i2c_stop();
}

/*
* 5,函數介紹:EEPROM發送頁寫n個字節從起始到結束        
* 輸入參數: part_add:器件地址
            ram_add:片內字節地址,
            write_num:欲寫個數
            data_add:欲寫數據地址
* 輸出參數:
* 返回值:      
*/
void eeprom_write_page(part_add,ram_add,write_num,data_add)
uchar part_add;
uchar ram_add;
uchar write_num;
uchar *data_add;
{
uchar i;
bit ack;
i2c_start();
ack=i2c_write_byte(part_add);
if(ack==1)FRONT_LED=0;
i2c_write_byte(ram_add);
REAR_LED=0;
for(i=0;i {
  i2c_write_byte(*(data_add+i));
  delay_ms(1);
}
i2c_stop();
delay_ms(20);
_nop_();
_nop_();
}
全部回復(5)
正序查看
倒序查看
2008-04-09 21:04
檢查過時序,沒發現什么問題.看來有空得研究下匯編,C交叉應用了.
0
回復
lauvictor
LV.1
3
2008-05-14 18:44
沒看出有啥問題.能講講是實現啥功能的嗎?還有,你仿真單片機用什么軟件啊?我做數字電源的課題,好像沒辦法仿真,不知有沒有什么解決方案.
0
回復
2008-05-17 23:14
@lauvictor
沒看出有啥問題.能講講是實現啥功能的嗎?還有,你仿真單片機用什么軟件啊?我做數字電源的課題,好像沒辦法仿真,不知有沒有什么解決方案.
我這是一個EEPROM的讀寫子程序.后來查到問題是在寫一個BYTE到EERPOM時檢查應答的時間不夠引起的.

軟件仿真我用MedWin.電源仿真沒試過..

仿真還不如果直接裝硬件上去調.
0
回復
lauvictor
LV.1
5
2008-05-20 10:07
@zj47988302
我這是一個EEPROM的讀寫子程序.后來查到問題是在寫一個BYTE到EERPOM時檢查應答的時間不夠引起的.軟件仿真我用MedWin.電源仿真沒試過..仿真還不如果直接裝硬件上去調.
主要是時間不夠,沒辦法實物調試.謝謝了
0
回復
2008-08-22 14:43
LZ你好,能否將匯編的發給我一份嗎?我現在正在學習寫這個!謝謝!
0
回復
主站蜘蛛池模板: 日韩成人精品一区二区三区 | 国产精品成人一区二区三区吃奶 | 亚洲国产精品999久久久婷婷 | 韩国午夜影院 | 吃奶呻吟打开双腿做受视频 | 无码人妻精品一区二区三 | 久久w5ww成w人免费 | 成人无码午夜在线观看 | 伊人精品视频在线观看 | 亚洲手机在线播放 | 亚洲肉感在线 | 夜夜爽天天干 | 国产中文区4幕区2023 | 免费的午夜毛片 | 久久一二区 | 国产精品一区二区三区视频网站 | 亚洲手机在线播放 | 真实人与人性恔配视频 | 日本啪啪网站永久免费 | 黄色一级久久 | 加勒比色老久久爱综合网 | 亚洲性视频网站 | 在线中文字幕国产 | 国内精品久久久久影院免费 | 国产成人精品午夜福利软件 | 久久精品人妻无码专区 | 国产精品一区视频网站 | 久久亚洲aⅴ永久无码精品 精品久久久久久久久久ntr影视 | 裸体女人高潮毛片扒开一一区 | 韩日中文字幕 | 成人免费视频一区二区三区 | 国产成人午夜性a一级毛片 涩涩久久久 | 免费无遮挡www小视频 | 久久久久久无码AV成人影院 | 亚洲中文无码成人手机版 | 午夜精品久久久久久久四虎 | 中出国产 | VA在线看国产免费 | 亚洲日韩中文在线精品第一 | 大地资源在线观看官网第三页 | www啦啦啦视频在线观看免费 |