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

標題: 關于I2C總線 兩個小時 一個凡人還是沒調試成功 [打印本頁]

作者: 憤怒的小鳥嗷    時間: 2017-4-22 18:29
標題: 關于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);       
}



作者: 憤怒的小鳥嗷    時間: 2017-4-22 18:38
來人阿 謝謝
作者: wosiyabo    時間: 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()//發(fā)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)//寫入一個字節(jié)到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個字節(jié)
{
        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);
}       


作者: zl2168    時間: 2017-4-22 22:13
本帖最后由 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,北航社出版.。書中電路和程序設計有詳細說明,程序語句條條有注解。









歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久国产三级 | 在线成人www免费观看视频 | 最新中文字幕 | 婷婷在线视频 | 亚洲午夜一区二区 | 国产精品极品美女在线观看免费 | 欧美日韩高清一区 | 日本福利在线 | www.国产一区 | 国产精品久久久久久久粉嫩 | 2020亚洲天堂 | 久久久青草婷婷精品综合日韩 | 欧美多人在线 | 第四色狠狠 | 国产乱码精品一区二区三区忘忧草 | 国产一区二区精品在线 | 午夜精品久久久久99蜜 | 日韩精品免费视频 | a爱视频| 国产乱码精品一区二三赶尸艳谈 | 日韩电影a | 成人精品国产免费网站 | 九九国产在线观看 | 亚洲成人av在线播放 | 一区精品国产欧美在线 | 99亚洲精品 | 毛片国产| 日韩成人免费中文字幕 | 久久99精品久久久久久国产越南 | 国产成人久久久 | 久久久久国产 | 欧美色a v | 亚洲第一在线视频 | 91精品国产一区二区三区 | 羞羞视频网站免费观看 | 国产美女一区二区 | 精品国产不卡一区二区三区 | 亚洲欧美日韩久久久 | 青草青草久热精品视频在线观看 | 久久精品国产一区 | 81精品国产乱码久久久久久 |