📄 at45db041b.c
字号:
/*************************************************************************************
* 编程人员:徐松亮 qq:5387603 email:5387603@qq.com
*************************************************************************************/
/* AT45DB041B:
2.5--3.6V;SCK可达20MHz
2048页 264B/页 8页/块;
2个264B缓冲;
支持页,块擦除;
*/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
//-----------------------------------读命令;
#define continuous_array_read_0 0x68
#define continuous_array_read_3 0xe8
#define main_memory_page_read_0 0x52
#define main_memory_page_read_3 0xd2
#define buffer1_read_0 0x54
#define buffer1_read_3 0xd4
#define buffer2_read_0 0x56
#define buffer2_read_3 0xd6
#define status_register_read_0 0x57
#define status_register_read_3 0xd7
//------------------------------------写和檫命令
#define buffer1_write 0x84
#define buffer2_write 0x87
#define B1_to_main_page_program_erase 0x83
#define B2_to_main_page_program_erase 0x86
#define B1_to_main_page_program_without_erase 0x88
#define B2_to_main_page_program_without_erase 0x89
#define paga_erase 0x81
#define block_erase 0x50
#define main_page_program_through_B1 0x82
#define main_page_program_through_B2 0x85
//------------------------------------其他命令
#define mian_to_B1_transfer 0x53
#define mian_to_B2_transfer 0x55
#define main_paga_to_buffer1_compare 0x60
#define main_paga_to_buffer2_compare 0x61
#define auto_page_rewrite_through_B1 0x58
#define auto_page_rewrite_through_B2 0x59
sbit AT45db041B_SI=P2^4;
sbit AT45db041B_SCK=P2^5;
//sbit AT45db041B_nRESET=P0^0;
sbit AT45db041B_nCS=P2^7;
//sbit AT45db041B_nWP=P0^0;
sbit AT45db041B_SO=P2^6;
delay(uint i)
{while(--i);}
void CSH(void)
{
AT45db041B_SO=1;
AT45db041B_nCS=1;
AT45db041B_SCK=0;
AT45db041B_nCS=0;
delay(1);
}
void AT45041B_BYTE_WRITE(uchar d)
{
uchar i=0,j=8;
while(j--)
{
AT45db041B_SI=d&0x80;
d<<=1;
AT45db041B_SCK=1;delay(1);
AT45db041B_SCK=0;delay(1);
}
//AT45db041B_nCS=1;
delay(1);
}
uchar AT45041B_BYTE_READ ()
{
uchar i=0,j=8;
// AT45db041B_SCK=1;delay(1);
// AT45db041B_SCK=0;delay(1);
while(j--)
{
i<<=1;
if(AT45db041B_SO)i=i|0x01;
AT45db041B_SCK=1;delay(1);
AT45db041B_SCK=0;delay(1);
}
//AT45db041B_nCS=1;
return(i);
delay(1);
}
void main(void)
{
CSH();
AT45041B_BYTE_WRITE(buffer1_write);
AT45041B_BYTE_WRITE(0x00); //xxxx xxxx
AT45041B_BYTE_WRITE(0x00); //xxxx xxxb
AT45041B_BYTE_WRITE(0x01); //bbbb bbbb
AT45041B_BYTE_WRITE(0xfe); //数据。。。
AT45041B_BYTE_WRITE(0xfc);
AT45041B_BYTE_WRITE(0xf8);
AT45041B_BYTE_WRITE(0xf0);
AT45db041B_nCS=1;delay(10);
// CSH();
// AT45041B_BYTE_WRITE(status_register_read_0);
// AT45db041B_SCK=1;delay(1);
// AT45db041B_SCK=0;delay(1);
// P0=AT45041B_BYTE_READ ();
while(1)
{
CSH();
AT45041B_BYTE_WRITE(buffer1_read_0);
AT45041B_BYTE_WRITE(0x00); //xxxx xxxx
AT45041B_BYTE_WRITE(0x00); //xxxx xxxb
AT45041B_BYTE_WRITE(0x01); //bbbb bbbb
AT45041B_BYTE_WRITE(0x00); //xxxx xxxx
AT45db041B_SCK=1;delay(1); AT45db041B_SCK=0;delay(1);
P0=AT45041B_BYTE_READ ();delay(50000);delay(50000);delay(50000);delay(50000);delay(50000);
P0=AT45041B_BYTE_READ ();delay(50000);delay(50000);delay(50000);delay(50000);delay(50000);
P0=AT45041B_BYTE_READ ();delay(50000);delay(50000);delay(50000);delay(50000);delay(50000);
P0=AT45041B_BYTE_READ ();delay(50000);delay(50000);delay(50000);delay(50000);delay(50000);
AT45db041B_nCS=1;delay(10);
}
// while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -