📄 per.c
字号:
#include "config.h"
/*********************************************************************************************************
** 函数名称: Delay()
** 功能描述: 延时
** 输 入:
** 输 出:
** 全局变量:
** 调用模块:
** 作 者: 吴成加
** 日 期: 2008年3月12日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void Delay(uint32 dly)
{
uint32 i;uint32 j;
for(j=0;j<dly;j++)
{
for(i=0;i<9;i++);
}
}
/*********************************************************************************************************
** 函数名称: write_enable()
** 功能描述: 写使能控制
** 输 入:
** 输 出:
** 全局变量:
** 调用模块:
** 作 者: 吴成加
** 日 期: 2007年8月12日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void write_enable(void)
{
uint8 i=0;
uint8 dump=0xc0;
cs_set; //C46_CS=1;
Delay(1);
sck_clr; //MCLK=0;
si_set; //MOSI=1;
Delay(1);
sck_set; //MCLK=1;
Delay(1);
sck_clr; //MCLK=0;
si_clr; //MOSI=0;
Delay(1);
sck_set; //MCLK=1;
Delay(1);
sck_clr; //MCLK=0;
si_clr; //MOSI=0;
Delay(1);
sck_set; //MCLK=1;
for(i=0;i<7;i++)
{ Delay(1);
sck_clr; //MCLK=0;
if(dump&0x80) si_set;
else si_clr;
Delay(1);
sck_set; //MCLK=1;
dump=(dump<<1);
}
Delay(1);
sck_clr; //MCLK=0;
Delay(1);
cs_clr; //C46_CS=0;
}
/*********************************************************************************************************
** 函数名称: write_disable()
** 功能描述: 写禁止
** 输 入:
** 输 出:
** 全局变量:
** 调用模块:
** 作 者: 吴成加
** 日 期: 2007年8月12日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void write_disable(void)
{
uint8 i=0;
uint8 dump=0x00;
cs_set; //C46_CS=1;
Delay(1);
sck_clr; //MCLK=0;
si_set; //MOSI=1;
Delay(1);
sck_set; //MCLK=1;
Delay(1);
sck_clr; //MCLK=0;
si_clr; //MOSI=0;
Delay(1);
sck_set; //MCLK=1;
Delay(1);
sck_clr; //MCLK=0;
si_clr; //MOSI=0;
Delay(1);
sck_set; //MCLK=1;
for(i=0;i<7;i++)
{ Delay(1);
sck_clr; //MCLK=0;
if(dump&0x80) si_set;
else si_clr;
Delay(1);
sck_set; //MCLK=1;
dump=(dump<<1);
}
Delay(1);
sck_clr; //MCLK=0;
Delay(1);
cs_clr; //C46_CS=0;
}
/*********************************************************************************************************
** 函数名称: ee_write()
** 功能描述: 向指定的地址单元写入一个数
** 输 入:
** 输 出:
** 全局变量:
** 调用模块: write_enable(),write_disable()
** 作 者: 吴成加
** 日 期: 2007年8月12日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void ee_write(unsigned char address , unsigned char data)
{
uint8 i=0;
uint32 rd_tmp;
write_enable();
address=address|0x80;
Delay(1);
cs_set; //C46_CS=1;
Delay(1);
sck_clr; //MCLK=0;
si_set; //MOSI=1;
Delay(1);
sck_set; //MCLK=1;
Delay(1);
sck_clr; //MCLK=0;
si_clr; //MOSI=0;
Delay(1);
sck_set; //MCLK=1;
for(i=0;i<8;i++)
{
Delay(1);
sck_clr; //MCLK=0;
if(address&0x80) si_set;
else si_clr;
Delay(1);
sck_set; //MCLK=1;
address=address<<1;
}
for(i=0;i<8;i++)
{
Delay(1);
sck_clr; //MCLK=0;
if(data&0x80) si_set;
else si_clr;
Delay(1);
sck_set; //MCLK=1;
data=data<<1;
}
Delay(1);
sck_clr;
cs_clr; //C46_CS=0;
Delay(1);
cs_set; //C46_CS=1;
while(1)
{
sck_clr; // MCLK=0;
Delay(1);
sck_set; //MCLK=1;
Delay(1);
rd_tmp =IO0PIN;
rd_tmp &=0x00010000;
if(0x00010000==rd_tmp) break;
}
cs_clr; //C46_CS=0;
write_disable();
}
/*********************************************************************************************************
** 函数名称: ee_read()
** 功能描述: 从指定的地址单元读出一个数据
** 输 入:
** 输 出:
** 全局变量:
** 调用模块:
** 作 者:
** 日 期:
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
unsigned char ee_read(unsigned char address)
{
uint8 i=0;
uint8 rd_data;
cs_set; //C46_CS=1;
Delay(1);
sck_clr; //MCLK=0;
si_set; //MOSI=1;
Delay(1);
sck_set; //MCLK=1;
Delay(1);
sck_clr; //MCLK=0;
si_set; //MOSI=1;
Delay(1);
sck_set; //MCLK=1;
Delay(1);
sck_clr; //MCLK=0;
si_clr; //MOSI=0;
Delay(1);
sck_set; //MCLK=1;
address=(address<<1);
for(i=0;i<8;i++)
{
Delay(1);
sck_clr; //MCLK=0;
if(address&0x80) si_set;
else si_clr;
Delay(1);
sck_set; //MCLK=1;
address=(address<<1);
}
rd_data=0;
for(i=0;i<8;i++)
{
rd_data=rd_data<<1;
sck_set; //MCLK=1;
Delay(1);
// rd_tmp =IO0PIN;
// rd_tmp &=0x00800000;
// if(0x00800000==rd_tmp)
if( (IO0PIN&0x00010000)!=0 )
{
rd_data=rd_data | 0x01;
}
else
{
;
}
sck_clr; //MCLK=0;
Delay(1);
}
Delay(1); Delay(1);
cs_clr; //C46_CS=0;
return rd_data;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -