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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2816|回復: 3
打印 上一主題 下一主題
收起左側

關于I2C總線 兩個小時 一個凡人還是沒調試成功

[復制鏈接]
跳轉到指定樓層
樓主
兩個小時 我沒調好這個程序  幫忙看一下大哥們 謝謝這是IIC總線程序  我相讓LED燈亮  但是他從AT24C02讀出來的不是我給他的數據  幫忙一下
這是程序代碼
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
bit write=0;
sbit sda=P2^0;
sbit scl=P2^1;
uchar x,y,a,b,date;
void delay1(uchar z)
{
       
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void delay()
{;;}
void init()
{
        scl=1;
        sda=1;
}
void respons()
{       
        scl=1;
        delay();
        while((sda=1)&&(b<250))
        b++;
        delay();
        scl=0;
       
}
void start()
{
        sda=1;
        delay();
        scl=1;
        delay();
        sda=0;
        delay();
}
void stop()
{
        sda=0;
        delay();
        scl=1;
        delay();
        sda=1;
        delay();
}
void write_byte(uchar date)
{
        uchar a,temp;
        temp=date;
        for(a=0;a<8;a++)
        {
                temp=temp<<1;
                scl=0;
                delay();
                sda=CY;
                delay();
                scl=1;
                delay();
        }
        scl=0;
        delay();
       
}
uchar read_byte(uchar date)
{
        uchar k;
        scl=0;
        delay();
        sda=1;
        for(k=0;k<8;k++)
        {
                scl=1;
                delay();
                k=(k<<1)|sda;
                delay();
                scl=0;
        }
        delay();
        return k;
}

void main()
{
        init();
        start();
        write_byte(0xa0);
        respons();
        write_byte(5);
        respons();
        write_byte(0xaa);
        respons();
        stop();
        delay1(10);
        start();
        write_byte(0xa0);
        respons();
        write_byte(5);
        respons();
        start();
        write_byte(0xa1);
        respons();
        P1=read_byte();
        respons();
        stop();
        while(1);       
}


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

使用道具 舉報

沙發
ID:170144 發表于 2017-4-22 18:38 | 只看該作者
來人阿 謝謝
回復

使用道具 舉報

板凳
ID:146949 發表于 2017-4-22 21:39 | 只看該作者
建議樓主做一個I2C讀寫工具,方便自已調試AT24C02.
http://www.zg4o1577.cn/bbs/dpj-79714-1.html
試試我的看看
#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int

//---------I2C讀寫EEPROM 24c02-----------
sbit   IIC_SDA  =  P0^2;  //
sbit   IIC_SCL  =  P0^3;  //


void Delayms(uint ms) //1mS@12.000MHz
{
   unsigned char i, j;
   while(ms--)
   {       
        i = 12;
        j = 169;
        do
        {
                while (--j);
        } while (--i);
   }
}

//--------------------------------------------------------------------------//讀寫24c02
void Start()//開始總線
{
        IIC_SDA=1;_nop_();
        IIC_SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();
        IIC_SDA=0;_nop_();_nop_();_nop_();_nop_();_nop_();
        IIC_SCL=0;_nop_();_nop_();
}
void Stop()//結束總線
{
        IIC_SCL=0;_nop_();
        IIC_SDA=0;_nop_();_nop_();_nop_();_nop_();_nop_();
        IIC_SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();
        IIC_SDA=1;_nop_();_nop_();
}
void NoAck()//發ACK0
{
        IIC_SDA=1;
        IIC_SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();
        IIC_SCL=0;_nop_();_nop_();_nop_();_nop_();_nop_();
}
bit TestAck()//測試ACK
{
        bit ErrorBit;
        IIC_SDA=1;_nop_();_nop_();_nop_();_nop_();_nop_();
        IIC_SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();
        ErrorBit=IIC_SDA;
        IIC_SCL=0;_nop_();_nop_();_nop_();_nop_();_nop_();
        return(ErrorBit);
}
void Write8Bit(uchar input)//寫入8 個bit
{
        uchar temp;
         for(temp=8;temp!=0;temp--)
                {
                        IIC_SDA=(bit)(input&0x80);
                        IIC_SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();
                        IIC_SCL=0;_nop_();_nop_();_nop_();_nop_();_nop_();
                        input=input<<1;
                }
}
void WriteIIC(uchar address,uchar Data)//寫入一個字節到24c02 中
{
        Start();
        Write8Bit(0xA0);
        TestAck();
        Write8Bit(address);
        TestAck();
        Write8Bit(Data);
        TestAck();
        Stop();
        Delayms(10);
}
uchar Read8Bit()//從24c02中讀出8個bit
{
        unsigned char temp,rbyte=0;
        for(temp=8;temp!=0;temp--)
                {
                        IIC_SCL=1;_nop_();_nop_();_nop_();_nop_();_nop_();
                        rbyte=rbyte<<1;
                        rbyte=rbyte|((unsigned char)(IIC_SDA));
                        IIC_SCL=0;_nop_();_nop_();_nop_();_nop_();_nop_();
                }
         return(rbyte);
}
uchar ReadIIC(uchar address)//從24c02中讀出1個字節
{
        uchar ch;
        Start();
        Write8Bit(0xA0);//讀地址
        TestAck();
        Write8Bit(address);//寫位置
        TestAck();
        Start();
        Write8Bit(0xA1);//寫地址
        TestAck();
        ch=Read8Bit();
        NoAck();
        Stop();
        return(ch);
}
main()
{
WriteIIC(5,0xAA);
P1=ReadIIC(5);
while(1);
}       

回復

使用道具 舉報

地板
ID:111634 發表于 2017-4-22 22:13 | 只看該作者

回帖獎勵 +1

本帖最后由 zl2168 于 2017-4-22 22:16 編輯

首先要解決讀寫24c02問題
實例49 讀寫AT24C02
實例50 非零地址讀寫AT24C02



先Proteus仿真一下,確認有效。
實例49 讀寫IIC AT24C02.rar (38.96 KB, 下載次數: 6)
實例50 非零地址讀寫AT24C02.rar (39.09 KB, 下載次數: 4)
以上摘自張志良編著《單片機實驗實訓100例》 ISBN 978-7-5124-1603-1,北航社出版.。書中電路和程序設計有詳細說明,程序語句條條有注解。




回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产高清高潮精品美女 | 国产精品久久久久久婷婷天堂 | 18av在线播放 | 久久久精品网站 | 一区免费| 欧美亚洲一区二区三区 | 欧美成人精品激情在线观看 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 日韩高清中文字幕 | 在线播放亚洲 | 亚洲激情视频在线 | 大象一区 | 亚洲久久久 | 美国黄色一级片 | 国产精品久久久久久高潮 | 四虎成人av | 91xxx在线观看 | 精品久久久一区 | 91精品国产欧美一区二区成人 | 日本超碰 | 老司机久久 | 欧美中文一区 | 久久久久久女 | 亚洲成年影院 | 精品国产乱码久久久久久蜜退臀 | 伊人在线 | 欧美一区二区三区在线观看 | 精品欧美一区二区精品久久 | 日韩免费福利视频 | 国产精品入口久久 | 不卡欧美| 97人澡人人添人人爽欧美 | 久久久久国产一区二区三区 | 久久99精品久久久久久国产越南 | 久久久久国产一区二区三区四区 | 一区二区三区在线 | 又爽又黄axxx片免费观看 | 久久这里只有精品首页 | 99精品国产一区二区三区 | 久草免费在线视频 | 日韩欧美精品在线播放 |