久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2642|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

關(guān)于51單片機(jī)模擬iic讀寫at24c256問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:589491 發(fā)表于 2021-2-17 21:49 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我在網(wǎng)上找到了一個24c64的程序(不確定能用),看到內(nèi)存地址相關(guān)的是先發(fā)送地址高8位,在發(fā)送地址低8位,我的24c256也是這樣寫的,但是不可以讀和寫(用外部燒錄器讀取沒變化,寫入單片機(jī)讀不出來),11.0592晶振,stc89c516RD+單片機(jī),WP接地,a0,a1,a2接地,SCL接P01,SDA接P02,因GND不夠用,將WP接P24并置低電平

下面是我的單片機(jī)程序,求大佬指點一下

#include <reg52.h>
#include <intrins.h>
#define ui unsigned int
#define uc unsigned char

sbit IIC_SCL = P0^1;
sbit IIC_SDA = P0^2;
sbit IIC_WP  = P2^4;

void delay0(){;;}

void IIC_start(){
        IIC_SDA = 1;
        delay0();
        IIC_SCL = 1;
        delay0();
        IIC_SDA = 0;
        delay0();
}

void IIC_stop(){
    IIC_SDA = 0;
    delay0();
    IIC_SCL = 1;
    delay0();
    IIC_SDA = 1;
    delay0();
}

void IIC_ACK(){
    uc i;
    IIC_SCL = 1;
    delay0();
    while((IIC_SDA == 1) && (i < 250)) i++;
    IIC_SCL = 0;
    delay0();
}

void IIC_Init(){
    IIC_SDA = 1;
    delay0();
    IIC_SCL = 1;
    delay0();
}

void IIC_WR_byte(uc dat){
    uc i;
    for(i = 0;i < 8;i ++){
        dat <<= 1;
        IIC_SCL = 0;
        delay0();
        IIC_SDA = CY;
        delay0();
        IIC_SCL = 1;
        delay0();
    }
    IIC_SCL = 0;
    delay0();
    IIC_SDA = 1;
    delay0();
}

uc IIC_RD_byte(){
    uc i,dat;
    IIC_SCL = 0;
    delay0();
    IIC_SDA = 1;
    delay0();
    for(i = 0;i < 8;i ++){
        IIC_SCL = 1;
        delay0();
        dat = (dat << 1) | IIC_SDA;
        delay0();
    }
    return dat;
}


void IIC_WR_ADD_256(uc add1,add2,dat){
        IIC_start();
        IIC_WR_byte(0xa0);
        IIC_ACK();
        IIC_WR_byte(add1);
        IIC_WR_byte(add2);
        IIC_ACK();
        IIC_WR_byte(dat);
        IIC_stop();

}

uc IIC_RD_ADD_256(uc add1,add2){
        uc dat;
        IIC_start();
        IIC_WR_byte(0xa0);
        IIC_ACK();
        IIC_WR_byte(add1);
        IIC_WR_byte(add2);
        IIC_ACK();
        IIC_start();
        IIC_WR_byte(0xa1);
        IIC_ACK();
        dat = IIC_RD_byte();
        IIC_stop();
        return dat;
}

void main(){
        IIC_WP = 0;
        IIC_Init();
        IIC_WR_ADD_256(0x10,0x10,0xf0);
        P0 = IIC_RD_ADD_256(0x00,0x01);
        
        while(1);
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:654028 發(fā)表于 2021-2-18 10:44 | 只看該作者
要延時啊
回復(fù)

使用道具 舉報

板凳
ID:141497 發(fā)表于 2021-2-18 10:51 | 只看該作者
樓主可以找IC的規(guī)格書看一下,首先要保證I2C協(xié)議正確,其次要注意IC讀寫時序和方式,一步步的查找問題,最后解決問題。
回復(fù)

使用道具 舉報

地板
ID:373388 發(fā)表于 2021-2-18 11:04 | 只看該作者
1,寫完要等待寫周期完成才能讀出來
2,發(fā)地址高位后,也需要等待應(yīng)答位
3,讀數(shù)時,發(fā)完讀指令,需要向EEPROM發(fā)送應(yīng)答位,表示單片機(jī)準(zhǔn)備好接受,而不是等待應(yīng)答位
4,以上都改好了還不行的話,就用示波器查波形是否正確。
回復(fù)

使用道具 舉報

5#
ID:112099 發(fā)表于 2021-2-19 11:29 | 只看該作者
        IIC_WR_byte(add1);         IIC_WR_byte(add2);之間好像還要加個IIC_ACK();,dat = IIC_RD_byte();后面好像還要加個非應(yīng)答;最好還是用示波器抓下波形看時序?qū)Σ粚?/td>
回復(fù)

使用道具 舉報

6#
ID:592807 發(fā)表于 2021-2-20 13:44 | 只看該作者
IIC通訊地址呢?
回復(fù)

使用道具 舉報

7#
ID:299193 發(fā)表于 2021-2-20 21:54 | 只看該作者
xhaity 回答是正確的,你地址1和地址2之間沒有應(yīng)答,寫完之后沒有延時5~10毫秒
回復(fù)

使用道具 舉報

8#
ID:883031 發(fā)表于 2021-2-21 11:43 | 只看該作者
主要是時序配合的問題,配合不好是不行的
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 综合二区 | 日韩高清电影 | 欧美中文字幕在线观看 | 欧美精品一区二区三区视频 | 日韩一区二区三区av | 国产精品一区二区久久久久 | 99久久国产综合精品麻豆 | 九七午夜剧场福利写真 | 国产成人精品久久二区二区91 | 国产精品国产成人国产三级 | 不卡在线视频 | 久久精品成人 | 免费天天干 | 美女黄频| 久久久久亚洲精品国产 | h视频在线播放 | 久久综合色综合 | 日韩a v在线免费观看 | 国产精品3区 | 美女爽到呻吟久久久久 | 欧美日韩亚洲一区二区 | 91麻豆精品一区二区三区 | 无码国模国产在线观看 | 一区视频 | 国产精品一区二区久久 | 91免费在线| 亚洲一区二区三区视频免费观看 | 久久久久国产精品一区三寸 | 在线免费小视频 | 日韩1区| 黄色一级免费观看 | 在线播放国产一区二区三区 | 欧美日韩一区二区三区在线观看 | 欧洲精品视频一区 | 欧美精品一二区 | 毛片片| 欧美成人二区 | 亚洲国产成人精 | aa级毛片毛片免费观看久 | 久久之精品 | 在线观看av不卡 |