导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→这个24C02的程序错误太多了能不能帮忙看一下.

* 51284: 这个24C02的程序错误太多了能不能帮忙看一下.

   wocy 
wocy发表的帖子 

 这个24C02的程序错误太多了能不能帮忙看一下.
#include  <reg52.h>  
#include  <intrins.h>  
#define uchar unsigned char 
#define uint  unsigned int 
sbit ASDA=P1^0;
sbit ACLK=P1^1;
sbit kd_key=P1^2;
sbit LEDP=P1^7;
sbit SDA=P3^4;
sbit SCL=P3^5;


 extern void Read24c02(unsigned char *RamAddress,
                     unsigned char RomAddress,unsigned char bytes);
 extern void Write24c02(unsigned char *RamAddress,
                     unsigned char RomAddress,unsigned char bytes);
/****************************************************************/
#define WriteDeviceAddress 0xa0
#define ReadDviceAddress 0xa1

 uchar i,k,second=0,minute=0;
 uint time;
uchar data display_bit ,display_buffer[4];
uchar code led[10]=
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void send(uchar a);
void delay(uint n);
void display(void);
void start(void);
void stop(void);
void ACK(void);
void NOACK(void);
void TESTACK(void);
bit Write8Bit(unsigned char input);
unsigned char Read8Bit();

void delay(uint n)
   {
    unsigned char i,j;
     
      for(i=0;i  <n;i++)
        {
         for(j=0;j  <250;j++);
        }
    }   

void send(uchar a)
   {
     uchar k;
    for (k=0;k  <8;k++)
      {
         if(_crol_(a,k)&0x80)
          ASDA=1;
         else
         ASDA=0;
         ACLK=1;
         ACLK=0;
        }
    }

void display()
   { 
     display_bit=0xbf;
    // uchar i,k;
     
     for(i=0;i  <4;i++)
      {   
        P1=0XFF;
   
     k=led[display_buffer[i]];
       send(k);
       delay(1);
       P1=display_bit;
       display_bit=_cror_(display_bit,1);
   
       
      }
    }

void time0(void)interrupt 1 using 1

   TH0=-9216/256;
   TL0=-9216%256;
   if(++time==100) 
       {
         ++second;
         time=0;
 

       }
   if(second==60) 
       {
       
     ++minute;   
         second=0;
         
       }
   
   if(minute==59)
      { 
        minute=0;
        
       }
   

//*******************************************************************
/********************/
void Start() {
 SDA=1;
 SCL=1;
 SDA=0;
 SCL=0;
}

/*********************/
void Stop() {
 SCL=0;
 SDA=0;
 SCL=1;
 SDA=1;
}


/**********************/
void Ack() {
 SDA=0;
 SCL=1;
 SCL=0;
 SDA=1;
}

/***********************/
void NoAck() {
 SDA=1;
 SCL=1;
 SCL=0;
}

//************************//
/*************************************/
bit TestAck() {
 bit ErrorBit;
 SDA=1;
 SCL=1;
 ErrorBit=SDA;
 SCL=0;
 return(ErrorBit);
}

/*************************************/
bit Write8Bit(unsigned char input) {
 unsigned char temp;
 for(temp=8;temp!=0;temp--) {
  SDA=(bit)(input&0x80);
  SCL=1;
  SCL=0;
  input=input  <  <1;
 }
}

//******************************************
/****************************************/
void Write24c02(unsigned char *Wdata,unsigned char RomAddress,
                          unsigned char number) {
 Start();
 Write8Bit(WriteDeviceAddress);
 TestAck();
 Write8Bit(RomAddress);
 TestAck();
 for(;number!=0;number--) {
  Write8Bit(*Wdata);
  TestAck();
  Wdata++;
 }
 Stop();
     delay(10);
}
//****************************************
//***************************************************/
unsigned char Read8Bit() {
 unsigned char temp,rbyte=0;
 for(temp=8;temp!=0;temp--) {
  SCL=1;
  rbyte=rbyte  <  <1;
  rbyte=rbyte|((unsigned char)(SDA));
  SCL=0;
 }
 return(rbyte);
}

//************************************************
void Read24c02(unsigned char *RamAddress,unsigned char RomAddress,
                         unsigned char bytes) {
 unsigned char temp,rbyte;
 Start();
 Write8Bit(WriteDeviceAddress);
 TestAck();
 Write8Bit(RomAddress);
 TestAck();
 Start();
 Write8Bit(ReadDviceAddress);
 TestAck();
 while(bytes!=1) {
 *RamAddress=Read8Bit();
 Ack();
 RamAddress++;
 bytes--;
 }
 *RamAddress=Read8Bit();
 NoAck();
 Stop();
}
//**************************************************

  void main()
  {
   TH0=-9216/256;
   TL0=-9216%256;
   TMOD=0x01;
   EA=1;
   ET0=1;
   TR0=1;
  while(1) {
    
    display_buffer[0]=minute/10;
    display_buffer[1]=minute%10;
    display_buffer[2]=second/10;
    display_buffer[3]=second%10;
    
  Write24c02(0x00,0xa0,second);
  Write24c02(0x01,0xa0,minute);
  Read24c02(0x00,0xa1,second);
  Read24c02(0x00,0xa1,minute);
 display();
  
   }
}

发表时间:2004年3月24日22:11:43

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:我也想要啊![quote][b]以下是引用[i]huihuizxc在2003-11-25 
[下一篇帖子]:你是什么公司???