基本信息
源码名称:ATT7026程序
源码大小:0.13M
文件格式:.c
开发语言:C/C++
更新时间:2021-07-20
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

/**********FRM25040******************************************/

unsigned char FM_Read(void)   
{   
  unsigned char Loop;   
  unsigned char Data; 
Data=0;  
DO_25040=1;
  for(Loop=0;Loop<8;Loop )   
  {   
  CLK_25040=1;   
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
  CLK_25040=0;   
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
  
  if(DO_25040)
  Data=(Data<<1)|0x01;
else
  Data=(Data<<1)|0x00;
    }   
    return Data;   
 }   
   
void FM_Write(unsigned char Data)   
{   
  unsigned char Loop;   
  for(Loop=0;Loop<8;Loop )   
  {   
    if((Data&0x80)==0x80)
    DI_25040=1;   
    else  
DI_25040=0;   
  CLK_25040=0;   
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
  CLK_25040=1;   
  Data<<=1;   
asm("nop"); 
asm("nop"); 
    }   
    DI_25040=1;   
}   


void FM_wren_cmd(void) //发送写使能命令 

CLK_25040=0; //CLK为低电平时才能片选 
asm("nop"); 
asm("nop"); 
CS_25040=0; // 选定FRAM  
asm("nop");
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
FM_Write(WREN); //Send WREN instruction 写使能 
 
CLK_25040=0; // 
asm("nop"); 
asm("nop"); 
CS_25040=1; // 

 
 
 
void FM_wrdi_cmd(void) //发送写使能取消命令 

CLK_25040=0; //CLK为低电平时才能片选 
asm("nop"); 
asm("nop"); 
CS_25040=0; // 选定FRAM  
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop");
FM_Write(WRDI); //Send WREN instruction OFF写使能 
 
CLK_25040=0; // 
asm("nop"); 
asm("nop"); 
CS_25040=1; // 


 
unsigned char FM_rdsr_cmd (void) 

unsigned char rstruction; 
CLK_25040=0; //CLK为低电平时才能片选 
asm("nop"); 
asm("nop"); 
CS_25040=0; // 选定FRAM  
asm("nop");
FM_Write(RDSR); //Send WREN instruction 写使能 

rstruction=FM_Read(); 
 
CLK_25040=0; // 
asm("nop"); 
asm("nop"); 
CS_25040=1; // 
return (rstruction); 

 
 
 
void FM_wrsr_cmd(unsigned char status) 

FM_wren_cmd(); 

CLK_25040=0; //CLK为低电平时才能片选 
asm("nop"); 
asm("nop"); 
CS_25040=0; // 选定FRAM  
asm("nop");

FM_Write(WRSR); //Send WREN instruction 写使能 
FM_Write(status); //Send WREN instruction 写使能 
 
CLK_25040=0; // 
asm("nop"); 
asm("nop"); 
CS_25040=1; // 

 
 
void FM_byte_write(unsigned int Addr,unsigned char Data) 

unsigned char temp;
FM_wren_cmd(); //write enable 
CLK_25040=0; //CLK为低电平时才能片选 
asm("nop"); 
asm("nop"); 
CS_25040=0; // 选定FRAM  
asm("nop");
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
if((Addr&0x0100)==0x0100)
temp=0x08;
else
temp=0x00;
temp=temp|WRITE;
FM_Write(temp);// Send WRITE instruction including MSB of address  

FM_Write((unsigned char)(Addr)); 
FM_Write(Data); 

CLK_25040=0; // 
asm("nop"); 
asm("nop"); 
CS_25040=1; // 


void FM_word_write(unsigned int Addr,unsigned int Data) 

unsigned char x,y;
FM_wren_cmd(); //write enable 
CLK_25040=0; //CLK为低电平时才能片选 
asm("nop"); 
asm("nop"); 
CS_25040=0; // 选定FRAM  
asm("nop");
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
if((Addr&0x0100)==0x0100)
x=0x08;
else
x=0x00;
x=x|WRITE;
FM_Write(x);// Send WRITE instruction including MSB of address  

FM_Write((unsigned char)(Addr)); 
x=Data/256;
FM_Write(x); 
y=Data%256;
FM_Write(y); 

CLK_25040=0; // 
asm("nop"); 
asm("nop"); 
CS_25040=1; // 


void FM_long_write(unsigned int Addr,unsigned long data) 

unsigned char i, x,y,h,k;
unsigned temp;
x=data>>24;
y=data>>16;
h=data>>8;
k=data;

temp=Addr;
FM_byte_write(temp,x);
temp=Addr 1;
FM_byte_write(temp,y);
temp=Addr 2;
FM_byte_write(temp,h);
temp=Addr 3;
FM_byte_write(temp,k);


unsigned long FM_long_read(unsigned int Addr) 

unsigned char temp,x,y,h,k; 
unsigned long data;
CLK_25040=0; //CLK为低电平时才能片选 
asm("nop"); 
asm("nop"); 
CS_25040=0; // 选定FRAM  
asm("nop");
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
 
if((Addr&0x0100)==0x0100)
temp=0x08;
else
temp=0x00;

temp=temp|READ;
FM_Write(temp);// Send WRITE instruction including MSB of address  
FM_Write((unsigned char)(Addr)); 
x=FM_Read(); 
y=FM_Read(); 
h=FM_Read(); 
k=FM_Read(); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
CLK_25040=0; // 
asm("nop"); 
asm("nop"); 
CS_25040=1; // 
data=((unsigned long)x<<24) ((unsigned long)y<<16) ((unsigned long)h<<8) (unsigned long)k;

return(data); 


//====================================== 
 
unsigned char FM_byte_read(unsigned int Addr) 

unsigned char temp; 
CLK_25040=0; //CLK为低电平时才能片选 
asm("nop"); 
asm("nop"); 
CS_25040=0; // 选定FRAM  
asm("nop");
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
 
if((Addr&0x0100)==0x0100)
temp=0x08;
else
temp=0x00;

temp=temp|READ;
FM_Write(temp);// Send WRITE instruction including MSB of address  
FM_Write((unsigned char)(Addr)); 
temp=FM_Read(); 

asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
CLK_25040=0; // 
asm("nop"); 
asm("nop"); 
CS_25040=1; // 

return(temp); 

 
unsigned int FM_word_read(unsigned int Addr) 

unsigned char temp,x,y; 
unsigned int data;
CLK_25040=0; //CLK为低电平时才能片选 
asm("nop"); 
asm("nop"); 
CS_25040=0; // 选定FRAM  
asm("nop");
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
 
if((Addr&0x0100)==0x0100)
temp=0x08;
else
temp=0x00;

temp=temp|READ;
FM_Write(temp);// Send WRITE instruction including MSB of address  
FM_Write((unsigned char)(Addr)); 
x=FM_Read(); 
y=FM_Read(); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
asm("nop"); 
CLK_25040=0; // 
asm("nop"); 
asm("nop"); 
CS_25040=1; // 
data=(unsigned int)x*256 y;

return(data);