导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→可以帮看一下吗我的2402读写不了[wocy]

 *第20716篇: 可以帮看一下吗我的2402读写不了

  
楼 主:wocy 2004年4月2日21:39
 可以帮看一下吗我的2402读写不了
#include  <reg52.h>  
#include  <intrins.h>  
sbit ASDA=P1^0;
sbit ACLK=P1^1;
sbit sda=P3^4;
sbit scl=P3^5;
sbit a0=ACC^0;
sbit a1=ACC^1;
sbit a2=ACC^2;
sbit a3=ACC^3;
sbit a4=ACC^4;
sbit a5=ACC^5;
sbit a6=ACC^6;
sbit a7=ACC^7;

#define uchar unsigned char 
#define uint  unsigned int 
#define WriteDeviceAddress 0xa0
#define ReadDviceAddress 0xa1
//sbit kd_key=P1^2;
unsigned char  data  display_bit,display_buffer[5],keyscan_bit,buffer;
unsigned char  code  led[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
unsigned char time,second,minute,key5,key6;
void delay(uint n);
//void key(void)
  
  ///   {
   //   if(buffer==0xfb)
     //   {switch(minute)
      //     {
        //   case 0x00: minute=60;minute--;break;
        //   }
        // }
     // }    
   

//******************************************
void start(void)
 {
  sda=1;
  scl=1;
  delay(2);
  sda=0;
  delay(6);
  scl=0;
  delay(6);
  }

void stop(void)
 {
  
  sda=0;
  scl=1;
  delay(6);
  sda=1;
  delay(6);
  scl=0;
  sda=0;
  }

/////////*************
 //void ack(void)
 // {
  // sda=0;
  // delay(3);
   //scl=1;
  // delay(3);
  // scl=0;
  // sda=1;
  // }
/////////////////////////////////


  uchar rd24(void)
   {
     sda=1;
  scl=1;a7=sda;scl=0;
  scl=1;a6=sda;scl=0;
  scl=1;a5=sda;scl=0;
  scl=1;a4=sda;scl=0;
  scl=1;a3=sda;scl=0;
  scl=1;a2=sda;scl=0;
  scl=1;a1=sda;scl=0;
   scl=1;a0=sda;scl=0;
   return(ACC);
 }


void wd24(uchar dd)
{
 ACC=dd;
 sda=a7;scl=1;scl=0;
 sda=a6;scl=1;scl=0;
 sda=a5;scl=1;scl=0;
 sda=a4;scl=1;scl=0;
 sda=a3;scl=1;scl=0;
 sda=a2;scl=1;scl=0;
 sda=a1;scl=1;scl=0;
 sda=a0;scl=1;scl=0;
 sda=1;scl=1;
while(sda==1)
scl=0;
}

uchar read_byter(uchar address)
 {
   uchar x;
   start();
   wd24(0xa0);
   wd24(address);
   start();
   wd24(0xa1);
   x=rd24();
   stop();
   return(x);
 }

 uchar read(uchar address,uchar n)
  {
   uchar a,y;
   for(y=0;y  <n;y++)
    {
  a=read_byter(address+y);
  display_buffer[y]=a;
  return(display_buffer[y]);
  }

   }

 void write_byte(uchar address,uchar dd)
   {
     start();
  wd24(0xa0);
  wd24(address);
  wd24(dd);
  stop();
   }


void write(uchar address,uchar n)
{
 uchar y;
 for(y=0;y  <n;y++)
 write_byte(address+y,display_buffer[y]);
 delay(10);
 }


//********************************************

 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 delay(uint n)//不能定义J为CHAR因为CHAR只能定义256个数
   {
    unsigned char i,j;
     
      for(i=0;i  <n;i++)
        {
         for(j=0;j  <20;j++);
        }
    }   

void send(unsigned char a)
    
      {
       unsigned char k;
         for(k=0;k  <8;k++)
           {
             if(_crol_(a,k)&0x80)
              ASDA=1;
              else
              ASDA=0;
              ACLK=1;
              ACLK=0;
            }
      }   
       
    
void display()
{
  unsigned char i,k;
  display_bit=0xbf;
   
   for(i=1;i  <=4;i++)
    {  P1=0xff;
       k=led[display_buffer[i]];
       send(k);
       P1=display_bit;
       delay(1);
       display_bit=_cror_(display_bit,1);
    } 

}

 

 void main(void)
{
   TH0=-9216/256;
   TL0=-9216%256;
   TMOD=0x01;
   EA=1;
   ET0=1;
   TR0=1;
   while(1)
    {
      
    
        display_buffer[1]=minute/10; 
        display_buffer[2]=minute%10; 
        display_buffer[3]=second/10; 
     display_buffer[4]=second%10; 
      display();  
        write(0x00,4);
        read(0x00,4);
        //key_scan();
       // keyprosser();
     }

}


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:好消息,超低价出售arm9开发板(at91rm9200)

[下一篇主题]:求購IC,需帶有萬年歷和計算器功能.數量大約在10K左右.有意請聯繫nonbush@163.com