📄 45db041.c
字号:
#include <stc89c54rd+.h>
#include <stdio.h>
#include <string.h>
#include <intrins.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include "main.h"
#include <absacc.h>
#include "45db041.h"
unsigned char read_byte(void)
{
unsigned char i;
unsigned char data999=0;
// f_io=1; //SET_45IO();
for (i=0;i<8;i++)
{
f_clk=1; //SET_45SCK();
data999<<=1;
data999|=f_io;
f_clk=0; //CLEAR_45SCK();
}
return data999;
}
void write_byte(unsigned char data1)
{
unsigned char i;
for(i=0;i<8;i++)
{
if (data1&0x80)
f_io=1; //SET_45IO();
else
f_io=0; //CLEAR_45IO();
f_clk=1;
f_clk=0;
data1<<=1;
}
}
unsigned char read_mainmemory(unsigned int pagenum,unsigned int bits)
{
unsigned char i;
unsigned char byte11,temp11;
f_cs=0; //CLEAR_45CS();
write_byte(0x52);
i=pagenum>>6;
write_byte((unsigned char)i);
i=pagenum<<2;
byte11=bits>>8;
i=(unsigned char)i+(unsigned char)byte11;
write_byte((unsigned char)i);
write_byte((unsigned char)bits);
write_byte(0x00);
write_byte(0x00);
write_byte(0x00);
write_byte(0x00);
CLOCK1();
temp11=read_byte();
f_cs=1; //SET_45CS();
return temp11;
}
unsigned char read_status(void)
{
unsigned char temp2;
f_cs=0; //CLEAR_45CS();
f_clk=0; //CLEAR_45SCK();
f_io=1; //SET_45IO();
write_byte(0x57);
CLOCK1();
// NOP();
temp2=read_byte();
f_cs=1; //SET_45CS();
return temp2;
}
/*void write_buffer1(unsigned int bitnum,unsigned char *pt)
{
unsigned int i;
f_cs=0;
f_clk=0;
f_io=1;
write_byte(0x84);
write_byte(0x00);
i=bitnum>>8;
write_byte((unsigned char)i);
write_byte((unsigned char)bitnum);
for(i=0;i<264;i++)
write_byte(*pt++);
// DELAY();
f_cs=1;
}*/
void write_mainmemory(unsigned int pagenum,unsigned char *pt)
{
unsigned int i;
f_cs=0;
f_io=1;
f_clk=0;
write_byte(0x82);
i=pagenum>>6;
write_byte((unsigned char)i);
i=pagenum<<2;
write_byte((unsigned char)i);
write_byte(0x00);
for(i=0;i<264;i++)
write_byte(*pt++);
// NOP();
f_io=1;
f_clk=0;
f_cs=1;
for(i=0;i<10000;i++);
}
void write_buffer2(unsigned int bitnum,unsigned char *pt)
{
unsigned int i;
f_cs=0;
DELAY();
write_byte(0x87);
write_byte(0x00);
i=bitnum>>8;
write_byte((unsigned char)i);
write_byte((unsigned char)bitnum);
for(i=0;i<264;i++)
write_byte(*pt++);
f_cs=1;
}
void write_buffer1mainmemory(unsigned int pagenum)
{
unsigned int i;
unsigned char flag;
// write_buffer1(chip_cs,0,yyj02);
while(1)
{
flag=read_status();
if((flag&0x80)==0x80)
break;
}
f_cs=0;
f_clk=0;
f_io=1;
DELAY();
write_byte(0x83);
i=pagenum>>6;
write_byte((unsigned char)i);
i=pagenum<<2;
write_byte((unsigned char)i);
write_byte(0x00);
// DELAY();
f_cs=1;
}
/*void write_buffer2mainmemory(unsigned int pagenum)
{
unsigned int i;
unsigned char flag;
// write_buffer2(chip_cs,0,yyj02);
while(1)
{
flag=read_status();
if((flag&0x80)==0x80)
break;
}
f_cs=0;
f_clk=0;
f_io=1;
DELAY();
write_byte(0x86);
i=pagenum>>6;
write_byte((unsigned char)i);
i=pagenum<<2;
write_byte((unsigned char)i);
write_byte(0x00);
// DELAY();
f_cs=1;
}
void read_startarry(unsigned int pagenum,unsigned int bitnum,
unsigned char *pt,unsigned int len)
{
unsigned int i;
unsigned char flag;
while(1)
{
flag=read_status();
if(flag&0x80)
break;
}
f_cs=0;
f_io=1;
f_clk=0;
DELAY();
write_byte(0x68);
i=pagenum>>6;
write_byte((unsigned char)i);
i=pagenum<<2+bitnum>>8;
write_byte((unsigned char)i);
write_byte((unsigned char)bitnum);
write_byte(0x00);
write_byte(0x00);
write_byte(0x00);
write_byte(0x00);
CLOCK1();
for(i=0;i<len;i++)
*pt++=read_byte();
f_cs=1;
}
void compare_buffer1page(unsigned int pagenum)
{
unsigned int i;
unsigned char flag;
while(1)
{
flag=read_status();
if(flag&0x80)
break;
}
f_cs=0;
f_io=1;
f_clk=0;
DELAY();
write_byte(0x60);
i=pagenum>>6;
write_byte((unsigned char)i);
i=pagenum<<2;
write_byte((unsigned char)i);
write_byte(0x00);
f_cs=1;
} */
void CLOCK1(void)
{
f_clk=1;
DELAY();
f_clk=0;
}
void DELAY(void)
{
unsigned char i;
for (i=0;i<2;i++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -