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

📄 flash.c

📁 gprs通讯程序手持机程序gprs通讯程序手持机程序gprs通讯程序手持机程序gprs通讯程序手持机程序
💻 C
字号:

#include <console.h>

#define DATA_ADDR	0x100000 	//写的起始地址
#define DATA_LEN	32			//数据长度

char rec_buf[32]="abcdefghijklmnopqrstuvwxyz    \xd\xa";//设定一条记录
int count;
int write_flash(char * rec_buf)	//写数据到FLASH
{
	FLASH_wr_param wp;
	
	wp.ptr_buffer = rec_buf;
	wp.data_length = DATA_LEN >> 1;
	wp.ptr_FLASH_addr = (char *)(DATA_ADDR+count*DATA_LEN);
	if (FLASH_write_record(&wp) != 0x80)
		return -2;				//写错误
	return 0;					//正确
}

//-------------------------------------------------------------------------------------
//删除FLASH存储区
int FLASH_erase_block_with(void * block_address)
{
	int q;
	for (q=0;q<3;q++) if (FLASH_erase_block(block_address)==0x80) break;
	if (q<3) return 0;
		return -1;
}
//传送数据
void UART_send(unsigned char *lb, short len)
{
	short i;
	for(i=0;i<len;i++)
	{
		while(UART_send_char(*lb));
		lb++;
	}
}

void menu_disp(void)
{
	clr_scr();
	goto_xy(32,0);
	puts("1.写记录");
	goto_xy(32,2);
	puts("2.清除记录");
	goto_xy(32,4);
	puts("3.上传记录");
	goto_xy(32,6);
	puts("4.显示总数");
}

main(void)
{
	int i;
	char buffer[128];
	init_console(CONSOLE_CHINESE);
	FLASH_erase_block_with((void *)DATA_ADDR);
	count = 0;
	menu_disp();
	while (1)
	{
		switch(getch())
		{
			case KEY_1:
				if(!write_flash(rec_buf))
				{
					clr_scr();
					goto_xy(0, 0);
					puts("写入成功");
					count++;
					memcpy(buffer,(char *)(DATA_ADDR+(count-1)*DATA_LEN),30);
					goto_xy(0, 2);
					puts(buffer);
					goto_xy(0, 4);
					puts(buffer + 16);
				}
				else
				{
					clr_scr();
					goto_xy(0, 3);
					puts("写入不成功");
				}
				getch();
				break;
			case KEY_2:
				FLASH_erase_block_with((void *)DATA_ADDR);
				count=0;
				clr_scr();
				goto_xy(0, 3);
				puts("已删除");
				getch();
				break;
			case KEY_3:
				UART_init(UART_232_ON|UART_ON|UART_8_DATA_BITS|UART_BAUD_9600);
				UART_fcntl(UART_fcntl(UART_F_INQ)|UART_F_NO_CTS);
				for (i = 0; i < 300; i++) delay_1ms();
				for(i = 0; i < count; i++)
				{
					UART_send((char *)DATA_ADDR + i * DATA_LEN, DATA_LEN);
				}
				clr_scr();
				goto_xy(0, 0);
				puts("传送完成");
				getch();
				UART_init(UART_OFF);
				break;
			case KEY_4:
				sprintf(buffer, "记录数为:%d", count);
				clr_scr();
				goto_xy(0, 0);
				puts(buffer);
				getch();
				break;
		}
		menu_disp();
	}
}

⌨️ 快捷键说明

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