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

📄 sramfwr.bak

📁 msc1201 编程3
💻 BAK
字号:
// Texas Instruments
// Name:	SRAMFWR.c
// Revision: 	1.0
// Description: Write/ErasePage Flash Data/Program using BootRom Routine
// 				Using MSC1210-DAQEVM 
#include <REG1210.H>
#include <stdio.h>
#define FDM				1			// Flash Data Memory
#define FPM				0			// Flash Program Memory
//extern char page_erase (int faddr, char fdata, char fdm);
extern void init_VonNeumann(void);
extern void cmd_parser(void);
extern void write_flash_byte (int faddr, char fdata);
char write_flash_chk(int faddr, char fdata, char fdm)
{	unsigned char ie, eicon, c;
	ie=IE; eicon=EICON; //Backup Interrupt values
	IE &= 0x7f;				// Turn off EA;
	EICON &= 0xdf;			// Turn off AuxInt
	MWS = !fdm;				// redirect MOVX to program write for FPM
	write_flash_byte(faddr,fdata); 
	MWS=0; EICON=eicon; IE=ie;
	c=(fdm==FDM)?*(char xdata *) faddr: *(char code *) faddr;
	if (fdata==c) return(0); else return(1);
}
char page_erase(int faddr, char fdata, char fdm)
{  char i;
	FMCON |= 0x40; // set flash page erase bit
	i=write_flash_chk(faddr,fdata,fdm);
	FMCON &= 0xbf; // clear flash page erase bit
	return(i);
}

void main(void)
{ 
	xdata char xchar _at_ 0x0400; 
	code  char cchar _at_ 0x1000;
	char error=0;
	CKCON &= 0xf8; 	// 0 MOVX cycle stretch
	PDCON &= 0xfd;		// turn on sys timer	
	USEC = 2-1;			// Flash Related Timer Setup
	MSEC = 1843-1;  
   T2CON  = 0x34;   // UART0 setup: T2 as baudrate generator 
   RCAP2  = 65535;  // 		57600 Baud @ 1.8432MHz
   SCON   = 0x52;   // 		Async mode 1, 8-bit UART, enable rcvr, TI=1, RI=0
	printf("\x1b[46;37m\x1b[25C\x1b[2J");
	printf("MSC1210 VonNeumann SRAM Routines for Flash Data/Program Memory Write/Erase\n");
	init_VonNeumann();
	if (!write_flash_chk(&xchar,0x55,FDM) && xchar==0x55 ) 		
		printf("Pass: Write Xdata 0x0400 with 0x55\n"); 	else error=1;
	if (!page_erase(&xchar, 0xff, FDM) && xchar== 0xff)
	   printf("Pass: Erase Xdata 0x400~0x47F\n"); 			else error=1;
	if (!write_flash_chk(&cchar,0xAA,FPM) && cchar==0xAA )
		printf("Pass: Write Code 0x1000 with 0xAA\n"); 		else error=1;
	if (!page_erase(&cchar, 0xff, FPM) && cchar== 0xff)
	   printf("Pass: Erase Code 0x1000~0x107F\n"); 			else error=1;	   
	if (error==1) printf("Error found. Testing fail.\n");
	while(1){;}
}

⌨️ 快捷键说明

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