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

* 105370: AT93C56如何运用

   yenongqing 
yenongqing发表的帖子 

 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语言改怎么写?

发表时间:2007年4月29日14:17:33

  
回复该帖

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

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

[上一篇帖子]:单步或连续采样模式请问什么是单步采样模式?什么是连续采样模式呢? 两者有什么异同嘛?
[下一篇帖子]:[求助]各位前辈大家好,我是一名本科生,这段时间正在做一个与单片机有关的项目。我用的单片机是宏晶公司