找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1984|回复: 2
打印 上一主题 下一主题
收起左侧

求助!!!大神请进

[复制链接]
跳转到指定楼层
楼主
ID:63057 发表于 2014-7-3 15:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit scl=P3^4;
sbit sda=P3^5 ;
void delay()
{;;}
void delay1(uchar x)
{
        uchar i,j;
        for(i=x;i>0;i--);
        for(j=100;j>0;j--);
}

void start()  //起始信号
{
        sda=1;
        delay();
        scl=1;
        delay();
        sda=0;
        delay();       
}
void stop()        //停止信号
{
        sda=0;
        delay();
        scl=1;
        delay();
        sda=1;
        delay();
}
void ask()         //应答
{
        uchar i;
        scl=1;
        delay();
        while((sda==1)&&(i<250))
        i++;
        scl=0;
        delay();
}
void write_byte(uchar date)        //写入一个字节
{
        uchar i,temp;
        temp=date;
//        scl=0;
        //delay();
        for(i;i<8;i++)
        {
                temp=temp<<1;
                scl=0;
                delay();
                sda=CY;
                delay();
                scl=1;
                delay();
        }
        scl=0;
        delay();
        sda=1;
        delay();       
}
uchar read_byte() //读取一个字节
{
        uchar i,j,k;
        scl=0;
        delay();
        sda=1;
        delay();
        for(i;i<8;i++)
        {
                scl=1;
                delay();
                j=sda;
                k=(k<<1)|j;
                scl=0;
                delay();       
        }
        delay();
        return k;
}
void init()                   //初始化
{
        scl=1;
        sda=1;
}
void write_add(uchar address,uchar date)//指定地址写数据
{
        start();
        write_byte(0xa0);
        ask();
        write_byte(address);
        ask();
        write_byte(date);
        ask();
        stop();
}
uchar read_add(uchar address)        //指定地址读
{
        uchar date;
        start();
        write_byte(0xa0);
        ask();
        write_byte(address);
        ask();
   start();
   write_byte(0xa1);
   ask();
   date=read_byte();
   stop();
   return date;               
}
void main()
{
        init();
        write_add(3,0xaa);
        delay1(1000);
        P0=read_add(3);
        while(1);
}分析分析为什么p0输出的是0xa1;并且改变write_byte(0Xa1)括号里的参数,P0输出改变
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:63057 发表于 2014-7-3 15:34 | 只看该作者
大神们!!拜托了!
回复

使用道具 举报

板凳
ID:2318 发表于 2014-7-8 15:46 来自触屏版 | 只看该作者
24c程序吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表