打印

小学生求助24C02寄存器C语言编程

[复制链接]
1883|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
291707309|  楼主 | 2013-11-19 21:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
帮忙看下这个程序是干嘛的,看不是太懂
#include<reg52.h>
#define uchar unsigned char
sbit sda=P2^0;
sbit scl=P2^1;
uchar a;
void delay()
{ ;; }
void start()  //开始信号
{       
        sda=1;
        delay();
        scl=1;
        delay();
        sda=0;
        delay();
}

void stop()   //停止
{
        sda=0;
        delay();
        scl=1;
        delay();
        sda=1;
        delay();
}

void respons()  //应答
{
        uchar i;
        scl=1;
        delay();
        while((sda==1)&&(i<250))i++;
        scl=0;
        delay();
}

void init()
{
        sda=1;
        delay();
        scl=1;
        delay();
}

void write_byte(uchar date)
{
        uchar i,temp;
        temp=date;


        for(i=0;i<8;i++)
        {
                temp=temp<<1;
                scl=0;
            delay();
                sda=CY;
                delay();
                scl=1;
                delay();
        //        scl=0;
     //   delay();
        }
        scl=0;
        delay();
        sda=1;
        delay();
}

uchar read_byte()
{
        uchar i,k;
        scl=0;
        delay();
        sda=1;
        delay();
        for(i=0;i<8;i++)
        {
                scl=1;
                delay();       
                k=(k<<1)|sda;
                scl=0;
                delay();       
        }
        return k;
}

void delay1(uchar x)
{
        uchar a,b;
        for(a=x;a>0;a--)
         for(b=100;b>0;b--);
}

void write_add(uchar address,uchar date)
{
        start();
        write_byte(0xa0);
        respons();
        write_byte(address);
        respons();
        write_byte(date);
        respons();
        stop();
}

uchar read_add(uchar address)
{
        uchar date;
        start();
        write_byte(0xa0);
        respons();
        write_byte(address);
        respons();
        start();
        write_byte(0xa1);
        respons();
        date=read_byte();
        stop();
        return date;
}

void main()
{
        init();
        write_add(23,0xaa);
        delay1(100);
        P1=read_add(23);
        while(1);
}


相关帖子

沙发
dirtwillfly| | 2013-11-20 09:19 | 只看该作者
这是一个51单片机对24C02进行IIC操作的程序

使用特权

评论回复
板凳
hfren| | 2013-11-20 11:08 | 只看该作者
对着手册上的时序图看,应该知道时序图吧

使用特权

评论回复
地板
黄小俊| | 2013-11-20 13:17 | 只看该作者
小学生??

使用特权

评论回复
5
291707309|  楼主 | 2013-11-20 15:18 | 只看该作者
hfren 发表于 2013-11-20 11:08
对着手册上的时序图看,应该知道时序图吧

知道。但是这些子程序干嘛用的不是太清楚。我想把它改成能够储存五个数据,然后再把这五个数据通过液晶显示出来的功能找到了这个程序只是对24C02不太了解

使用特权

评论回复
6
291707309|  楼主 | 2013-11-20 15:19 | 只看该作者
291707309 发表于 2013-11-20 15:18
知道。但是这些子程序干嘛用的不是太清楚。我想把它改成能够储存五个数据,然后再把这五个数据通过液晶显 ...

当然是通过51单片机控制

使用特权

评论回复
7
291707309|  楼主 | 2013-11-20 15:25 | 只看该作者
dirtwillfly 发表于 2013-11-20 09:19
这是一个51单片机对24C02进行IIC操作的程序

我知道是51单片机对24C02控制的,就是不太明白这些子程序,本来想利用单片机和24C02,通过一个按键记录五个数据,然后再通过一个按键把这五个数据给用液晶显示出来,液晶部分清楚,找了这个24C02的程序看了一下,对24C02不清楚。

使用特权

评论回复
8
dirtwillfly| | 2013-11-20 15:30 | 只看该作者
291707309 发表于 2013-11-20 15:25
我知道是51单片机对24C02控制的,就是不太明白这些子程序,本来想利用单片机和24C02,通过一个按键记录五 ...

:L你找个24c02的数据手册看看吧,对照着程序来看,应该能看懂

使用特权

评论回复
9
291707309|  楼主 | 2013-11-20 15:39 | 只看该作者
dirtwillfly 发表于 2013-11-20 15:30
你找个24c02的数据手册看看吧,对照着程序来看,应该能看懂

好的 我还是先把手册摸透把 谢谢不动了再来问  嘿嘿

使用特权

评论回复
10
bbstr| | 2013-11-20 16:50 | 只看该作者
应该是个大学生吧或者高中生吧,现在的学生喜欢夸张,什么冰天雪地跪求,小白,...

使用特权

评论回复
11
文艺青年| | 2013-11-20 17:02 | 只看该作者

使用特权

评论回复
12
651927693| | 2013-11-20 19:22 | 只看该作者
我当年学习单片机的时候也纠结过IIC,主要当时没有示波器,汇编也不是很熟,最坑爹的是我看的那本书上的IIC时序图也有问题。后来就是一位21ic的网友给了我一份时序图,我照着写,就没有问题了。
所以,只要严格遵守时序,一定可以写出来的,LZ加油!

使用特权

评论回复
13
hfren| | 2013-11-20 21:41 | 只看该作者
iic说简单也简单,说不简单调试起来也很头疼。有些厂家并不严格按照iic规范来就更扯了

使用特权

评论回复
14
huangxz| | 2013-11-21 09:16 | 只看该作者
最好的就是看数据手册,

使用特权

评论回复
15
专注于嵌入式| | 2013-12-11 20:51 | 只看该作者
这一看就是郭天祥的程序。。。**坑人。。

使用特权

评论回复
16
ai小小声| | 2013-12-17 09:51 | 只看该作者

使用特权

评论回复
17
2294365327| | 2013-12-18 18:16 | 只看该作者
把延迟时间变长一点

使用特权

评论回复
18
leehp| | 2013-12-18 20:24 | 只看该作者
网上现成的IIC程序很多,拿过来用就行了。

使用特权

评论回复
19
zmmhmily| | 2013-12-18 22:52 | 只看该作者
IO口模拟IIC,调试时延时可能得变化。

使用特权

评论回复
20
rocdove| | 2013-12-18 23:18 | 只看该作者
感觉延时函数是不是应该有个时常参数

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝