flash.c

来自「本程序能实现温度的实时采集与显示」· C语言 代码 · 共 70 行

C
70
字号
#include <stdio.h>
#include <reg1210.h>
#include "rom1210.h"
//#include <msc1210.h>

#define PAGE_START 0x0400
#define PAGE_SIZE 0x80

extern void autobaud(void);

char xdata *pFlashPage;

unsigned int xdata buffer[PAGE_SIZE];

//读flash存储器子程序
//page为页数取值范围0-7,byte_num为字节数,取值范围为0-127
int flash_read(int page,int byte_num)
{
		unsigned int m,read_add;
		read_add=0x400+0x80*page+byte_num;    //实际地址

		pFlashPage=(char xdata*)read_add;
		buffer[0]=*pFlashPage;
		if(buffer[0]>128)
			buffer[0]+=256;
		printf("buffer[0]=%d\n",buffer[0]);
		return buffer[0];
}
//写flash存储器子程序
//page为页数取值范围0-7,byte_num为字节数,取值范围为0-127,write_data为要写入的数据
void flash_write(int page,int byte_num,int write_data)
{
		unsigned int m,lead_add;
		lead_add=0x400+0x80*page;				//页首地址

		pFlashPage=(char xdata*)lead_add;
		for(m=0;m<128;m++)
			buffer[m]=*pFlashPage++;

		page_erase(lead_add,0x0ff,DATA_FLASH);

		buffer[byte_num]=write_data;
		for(m=0;m<128;m++)
			write_flash_byte(lead_add+m,buffer[m],DATA_FLASH);

}

main()
{
		char result;
		unsigned int i,add,dat;
		autobaud();
		FTCON=0x64;
		USEC=11-1;
		MSEC=11059-1;

		dat=flash_read(0,0);
		printf("dat=%d\n",dat);

		flash_write(0,0,0x0A);

		dat=flash_read(0,0);
		printf("dat=%d\n",dat);

		while(RI=0);
		RI=0;
}


⌨️ 快捷键说明

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