⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 DataFlash芯片AT45DB081读写程序
💻 C
字号:
#include<at89x52.h>
#include<stdio.h>
#include"typedef.h"
#include"flash.h"
#include"data.h"

#define LED1	P3_7
#define LED2	P2_0

uchar idata tempbuf[71];

void RS232Initialize()
{
 	PCON |= SMOD_;
   SCON  = 0x50;		/* SCON: mode 1, 8-bit UART, enable rcvr */
   TMOD  = 0x20;    /* TMOD: timer 1, mode 2, 8-bit reload */
   TH1   = 0xff;    /* TH1:  reload value for 1200 baud @ 11.059200MHz */
   TR1   = 1;       /* TR1:  timer 1 run */
	ET0   = 0;
	ES	 = 0;
   TI    = 1;      /* TI:   set TI to send first char of UART */
}

void delayms(uint num)
{
	uint i,j;
	for(i=0;i<num;i++)for(j=0;j<150;j++);
}


void main(void)
{
	uchar i;
	static ulong idata OptItemAdd=0;
	static uchar TestMode=1;
	
	LED1=LED2=0;
	P1=0xff;
	delayms(50);
	RS232Initialize();
	printf("Start Run Flash Testing!FlashMaxPage=%d\n",(uint)FlashMaxPage);
//	for(i=0;i<20;i++)
//		tempbuf[i]=i;
//	At45DB081_Buf1Write(0,20,tempbuf);
//	At45DB081_Buf1Read(0,20,tempbuf);
	
	At45DB081_ReadBytesInPage(FlashAdd_OptRecord,20,tempbuf);//read bytes from one page
	printf("1.1 Read Flash Data:\n");
	for(i=0;i<20;i++)
	{
		printf("%02x ",(uint)tempbuf[i]);
	}
	printf("\n");

	for(i=0;i<20;i++)
		tempbuf[i]=0xff-i;

	if(!At45DB081_WritBytesInPage(FlashAdd_OptRecord,10,tempbuf))//write
		printf("Write Failly!\n");
	At45DB081_ReadBytesInPage(FlashAdd_OptRecord,20,tempbuf);//read bytes from one page

	printf("1.2 Read Flash Data:\n");
	for(i=0;i<20;i++)
	{
		printf("%02x ",(uint)tempbuf[i]);
	}
	printf("\n");

	At45DB081_ReadBytesInPage(FlashAdd_HanZiLib,20,tempbuf);//read bytes from one page
	printf("2.1 Read Flash Data:\n");
	for(i=0;i<20;i++)
	{
		printf("%02x ",(uint)tempbuf[i]);
	}
	printf("\n");

	for(i=0;i<20;i++)
		tempbuf[i]=2*i;

	if(!At45DB081_WritBytesInPage(FlashAdd_HanZiLib,20,&tempbuf[0]))//write
		printf("Write Failly!\n");

	At45DB081_ReadBytesInPage(FlashAdd_HanZiLib,20,&tempbuf[0]);//read bytes from one page
	printf("2.2 Read Flash Data:\n");
	for(i=0;i<20;i++)
	{
		printf("%02x ",(uint)tempbuf[i]);
	}
	printf("\n");

	At45DB081_ReadBytesInPage(FlashAdd_PassCode,20,&tempbuf[0]);//read bytes from one page
	printf("3.1 Read Flash Data:\n");
	for(i=0;i<20;i++)
	{
		printf("%02x ",(uint)tempbuf[i]);
	}
	printf("\n");

	for(i=0;i<20;i++)
		tempbuf[i]=2*i-1;

	if(!At45DB081_WritBytesInPage(FlashAdd_PassCode,20,&tempbuf[0]))//write
		printf("Write Failly!\n");
	At45DB081_ReadBytesInPage(FlashAdd_PassCode,20,&tempbuf[0]);//read bytes from one page

	printf("3.2 Read Flash Data:\n");
	for(i=0;i<20;i++)
	{
		printf("%02x ",(uint)tempbuf[i]);
	}
	printf("\n");
	
	tempbuf[0]=0x09;
	if(FlashWritePassCode(1,tempbuf))
		printf("Write 1 Code Successfully!\n");
	else
		printf("Write 1 Code Failly!\n");
	i=FlashComparePassCode(tempbuf);
	printf("Passcode=%d\n",(uint)i);

if(TestMode)
{
tempbuf[19]=0;
	if(FlashWriteOptRecord(0,tempbuf,20))//write operation record to Flash
	{
		if(FlashMakeCheckSum(FlashRangeNum_OptRecord))
			printf("Write OptItem Successfully!\n");
		else
			printf("Write OptItem CheckSum Err!\n");
	}
	else
		printf("Write OptItem Failly!\n");
	OptItemAdd = FlashReadOptRecord(0,(uchar *)tempbuf);
	printf("OptItem end Add=%lx\n",(ulong)OptItemAdd);
	while(tempbuf[i])
	{
		printf("%02x ",(uint)tempbuf[i++]);
	}
	printf("\n");
tempbuf[9]=0;
	if(FlashWriteSelfLrn(0,tempbuf,10))//write operation record to Flash
	{
		if(FlashMakeCheckSum(FlashRangeNum_SelfLrn))
			printf("Write SelfLrn Successfully!\n");
		else
			printf("Write SelfLrn CheckSum Err!\n");
	}
	else
		printf("Write SelfLrn Failly!\n");

	for(i=0;i<FlashDataRangeNum;i++)
	{
		if(FlashMakeCheckSum(i))
			printf("Make Range %02x CheckSum Successfully!\n",(uint)i);
		else
			printf("Make Range %02x CheckSum Failly!\n",(uint)i);
	}
	
	if(!FlashSelfTest())
		printf("Flash Test True!\n");
	else
		printf("Flash Test Error!\n");
}
	while(1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -