打印

能不能帮我看看这段程序的问题啊,看了好久,写的是

[复制链接]
758|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
myongk|  楼主 | 2016-11-1 23:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
把数据传进e2prom,再读取的,一直找不到问题,p1是流水灯口

#include<reg52.h>
           #define uchar unsigned char
           sbit sda=P2^0;          //数据总线
           sbit scl=P2^1;          //时钟总线
          void delay()
          { ; ; }
         delay1()
         {       
            uchar f;
                 for(f=1000;f>0;f--);
         }
          void start()           //起始信号
           {
                           sda=1;
                        delay();
                        scl=1;
                        delay();
                        sda=0;
                        delay();

           }                 
           void stop()        //停止信号
           {
                           sda=1;
                        delay();
                        scl=0;
                        delay();
                        sda=1;
                        delay();
           }
           void response()         //应答信号
           {
                           uchar i=0;
                        scl=1;
                        delay();
                        while((sda==1)&&(i<250))
                        i++;
                        scl=0;
                        delay();
                       
           }
           void write(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();
                        sda=1;
                        delay();       
           }
         uchar read()                                 //读出信号
           {
                           uchar a,k;
                        scl=0;
                        delay();
                        sda=1;
                        for(a=0;a<8;a++)
                        {
                                scl=1;
                                delay();
                                k=(k<<1)|sda;
                                scl=0;
                                delay();
                        }
                         delay();
                        return k;
           }
           void init()
           {
                           scl=1;
                        delay();
                        sda=1;
                        delay();
           }
           void main()
           {
                           init();
                        start();
                        write(0xa0);           //地址
                        response();
                        write(2);                         //内部地址
                        response();
                        write(5);                         //数据
                        response();
                        stop();
                        delay1();
                    start();
                        write(0xa0);
                        response();
                        write(2);
                        response();
                         start();
                         write(0xa1);
                         response();
                         P1=read();
                        response();
                          stop();
                          while(1);

           }
         

相关帖子

沙发
xmar| | 2016-11-2 08:44 | 只看该作者
//至少需要改:

uchar read()    //读出信号
{
  uchar a,k=0;  //原来 uchar a, k;
  scl=0;
  delay();
  sda=1;
  for(a=0;a<8;a++)
  {
    scl=1;
    delay();
    k |=(sda<<a); //原来 k=(k<<1)|sda;
    scl=0;
    delay();
  }
  delay();
  return k;
}

使用特权

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

本版积分规则

3

主题

6

帖子

0

粉丝