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

📄 flashcard.c.bak

📁 用于小商品消费的SMS消费机程序
💻 BAK
字号:
#include <api.h>
#include <console.h>

#define BYTESPERPAGE	256
#define PAGES		2048



unsigned char ResetFlash(unsigned char *ptr, unsigned char *len)
{
	ICC_select_sock(ICC_SOCK_SAM);
        if(ICC_memcard_atr(ptr,len, ICC_VOLTAGE_3)==0)
        {
        	Reset_AT45D();        	
        	return 1;
        }        
        else
        	return 0;
}

void ReadFlashData(unsigned long lAddress, unsigned int cLength, unsigned char *cBuffer)
{
	int Page, ByteAddress, NOB, i;
	unsigned char *pBuffer;
	
	pBuffer = cBuffer;	
	Page = lAddress / BYTESPERPAGE;
	ByteAddress = Page % BYTESPERPAGE;
	
	while(cLength>0)
	{
		if(ByteAddress+cLength>=BYTESPERPAGE)
		{
			NOB = BYTESPERPAGE - ByteAddress;
		}
		else			
		{
			NOB = cLength;
		}
		while((Read_Status_AT45D()&0x80)==0);		
		Transfer_AT45D(Page, 0);
		while((Read_Status_AT45D()&0x80)==0);		
		Read_Buffer_AT45D(0, ByteAddress, NOB, pBuffer);
		pBuffer += NOB;
		Page ++;
		if (Page==PAGES)
			Page = 0;		
		ByteAddress = 0;
		cLength -= NOB;
	}
}

void WriteFlashData(unsigned long lAddress, unsigned int cLength, unsigned char *cBuffer)
{
	int Page, ByteAddress, NOB, i;
	unsigned char *pBuffer;
	
	pBuffer = cBuffer;	
	Page = lAddress / BYTESPERPAGE;
	ByteAddress = Page % BYTESPERPAGE;
	
	while(cLength>0)
	{
		if(ByteAddress+cLength>=BYTESPERPAGE)
		{
			NOB = BYTESPERPAGE - ByteAddress;
		}
		else			
		{
			NOB = cLength;
		}		
		while((Read_Status_AT45D()&0x80)==0);		
		Buffer_Write_AT45D(1, ByteAddress, NOB, pBuffer);
		while((Read_Status_AT45D()&0x80)==0);		
		Program_Erase_AT45D(1, Page);
		pBuffer += NOB;
		Page ++;
		if (Page==PAGES)
			Page = 0;		
		ByteAddress = 0;
		cLength -= NOB;
	}
}

⌨️ 快捷键说明

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