导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→AT93C56如何运用[yenongqing]

 *第48400篇: AT93C56如何运用

  
楼 主:yenongqing 2007年4月29日14:17
 AT93C56如何运用
#include   <reg51.h>  
#define u_char unsigned char
#define u_int unsigned int
sbit CS=P1^4;
sbit SK=P1^5;
sbit DI=P1^6;
sbit D=P1^7;
u_char xdata yangan=0x5e;
u_char data fanyangan;
/*void at93c56_ewen(void);
void at93c56_ewds(void);
u_char at93c56_read(u_char addr);
void at93c56_write(u_char addr,u_char mybyte);
void at93c56_erase(u_char addr);
void at93c56_wral(u_char mybyte);
void at93c56_eral(void);
  */

void at93c56_ewen(void)
{
  u_char i,temp;
  CS=0;SK=0;CS=1;DI=1;SK=1;SK=0;
  temp=0x30;
  for(i=0;i  <8;i++)
  {
     DI=temp&0x80;
     SK=1;SK=0;temp  <  <=1;
  }
  CS=0;
}

void at93c56_ewds(void)
{
  u_char i,temp;
  CS=0;SK=0;CS=1;DI=1;SK=1;SK=0;
  temp=0x00;
  for(i=0;i  <8;i++)
  {
    DI=temp&0x80;
    SK=1;SK=0;temp  <  <=1;
  }
  CS=0;
}

u_char at93c56_read(u_char addr)
{
  u_char i,result;
  CS=0;SK=0;CS=1;DI=1;SK=1;SK=0;
  DI=1;SK=1;SK=0;DI=0;SK=1;SK=0;
  for(i=0;i  <8;i++)
  {
    DI=addr&0x80;
    SK=1;SK=0;addr  <  <=1;
  }
  CS=0;D=1;CS=1;
  SK=0;
  while(!D)
  {
  SK=1;SK=0;
  }
  SK=1;SK=0;
  result=0;
  for(i=0;i  <8;i++)
  {
    result  <  <=1;
    result=result|D;
    SK=1;SK=0;
  }
  CS=0;
  return(result);
}

void at93c56_write(u_char addr,u_char mybyte)
{
  u_char i;
  at93c56_ewen();
  CS=0;SK=0;CS=1;DI=1;SK=1;SK=0;
  DI=0;SK=1;SK=0;DI=1;SK=1;SK=0;
  for(i=0;i  <8;i++)
  {
    DI=addr&0x80;
    SK=1;SK=0;addr  <  <=1;
  }
  for(i=0;i  <8;i++)
  {
     DI=mybyte&0x80;
     SK=1;SK=0;mybyte  <  <=1;
  }
  CS=0;D=1;CS=1;
  SK=0;
  while(D)
  {
    SK=1;SK=0;
  }
    SK=0;CS=0;
 at93c56_ewds();
}

void at93c56_erase(u_char addr)
{
  u_char i;
  at93c56_ewen();
  CS=0;SK=0;CS=1;DI=1;SK=1;SK=0;
  DI=1;SK=1;SK=0;DI=1;SK=1;SK=0;
  for(i=0;i  <8;i++)
  {
    DI=addr&0x80;
    SK=1;SK=0;addr  <  <=1;
  }
  CS=0;D=1;CS=1;
  SK=0;
  while(D)
  {
    SK=1;SK=0;
  }
    SK=0;CS=0;
 at93c56_ewds();
}

void at93c56_wral(u_char mybyte)
{
  u_char i,temp;
  at93c56_ewen();
  CS=0;SK=0;CS=1;DI=1;SK=1;SK=0;
  temp=0x10;
  for(i=0;i  <8;i++)
  {
    DI=temp&0x80;
    SK=1;SK=0;temp  <  <=1;
  }
  for(i=0;i  <8;i++)
  {
     DI=mybyte&0x80;
     SK=1;SK=0;mybyte  <  <=1;
  }
  CS=0;D=1;CS=1;
  SK=0;
  while(D)
  {
    SK=1;SK=0;
  }
    SK=0;CS=0;
 at93c56_ewds();
}


void at93c56_eral(void)
{
  u_char i,temp;
  at93c56_ewen();
  CS=0;SK=0;CS=1;DI=1;SK=1;SK=0;
  temp=0;
  for(i=0;i  <8;i++)
  {
    DI=temp&0x80;
    SK=1;SK=0;temp  <  <=1;
  }
  CS=0;D=1;CS=1;
  SK=0;
  while(D)
  {
    SK=1;SK=0;
  }
    SK=0;CS=0;
 at93c56_ewds();
}
void main()
{
  //at93c56_eral();
  at93c56_erase(0x05);
 // at93c56_wral(10) ;
  at93c56_write(0x05,01);
  fanyangan=at93c56_read(0x05);
  while(1);
}
有问题

f 麻烦大家看一下
怎么才能那个用好外部存储器 
用C语言改怎么写?


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

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


[上一篇主题]:单步或连续采样模式

[下一篇主题]:[求助]