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

📄 eeprom.c

📁 使用单片机mc68hc11f1对内部EEprom擦除的程序
💻 C
字号:
#include <iof1.h>
#include "eeprom.h"

//const uchar j[2]={10,1,};
unsigned char *erase;
//uint *eepromaddr;
void Init68hc11(void)
{//BPROT=0X00;//可以修改config,低4位为EEprom的保护
//CONFIG=0xBf;//高四位重新映像EEPROM
INIT=0X21;//寄存器,RAM空间映像,01为复位值
//TMSK2=0X00;//定时器分频,定时器屏蔽
//OPTION=0x10;//cop定时器溢出率
//SP=0X03FF;
//asm("LDS #0x03ff");//
CSCTL|=0x21;//64k
CSGSIZ|=0X40;
CSSTRH|=0x30;

}
/************************************/
void Delay(uchar n)
{uchar i,j,k;

	  for(i=0;i<n;i++)
	  {		for (j=0;j<200;j++)
		  {		for (k=0;k<10;k++)
			  {;
			  }
			COPRST=0X55;
			COPRST=0XAA;  
	 
		  }
		  }
}
/******************************************/
void EepromInit(void)
{
//OPTION|=0X40;//EEProm的时钟选择,低于1M时置Csel
//BPROT=0X00;//低4位置位时,禁止对一个区的EEprom进行编程
PPROG=0X00;//复位时:00
}
void EepromErase(uchar *addr)
{//erase=(volatile unsigned char*)(0xfe00);
 
 erase=((volatile unsigned char*)(addr));
//for(i=((volatile unsigned char*)(addr));i<(volatile unsigned char*)(addr+number);i++)
//while(erase<(volatile unsigned char*)(0xf e00))
{PPROG=0X16;//擦除方式 块擦除
(*erase)=0xff;

PPROG=0X17;//打开编程电源
Delay(100);//延时10Ms
PPROG=0X00;//置为读出方式
}
}
/**********************/
void EepromBulkErase(void)
{uchar *i;
PPROG=0X06;//擦除方式
//i=((volatile unsigned char*)(0xfe00));
//i++;
//*i=0XFF;

EEPROMBASEADDRESS=0xdd;

PPROG=0X07;//打开编程电源
Delay(100);//延时10Ms
PPROG=0X00;//置为读出方式

/*#asm
ldab #0x06
stab $103b
stab $fe00
ldab #0x07
stab $103b
#endasm
Delay(100);
#asm
clr	$103b

#endasm
*/
}
/*
******************写数据***************************
*/
void EepromByteWrite(uchar *aimaddr,uchar a)
{ //uchar *i;
	//erase=(volatile unsigned char*)(aimaddr);
	erase=(aimaddr);
	PPROG=0X02;//允许锁存地址和数据
	(*erase)=a;
	PPROG=0X03;//加编程电压
	Delay(20);//10ms
	PPROG=0X00;//清除
				

}
/*************************************************/
void EepromWrite(uchar *aimaddr,uint number,uchar *source)
{ uchar i=0;
 uchar *j;
j=(volatile unsigned char*)(aimaddr);


			for(i=0;i<(number);i++)						   //写入数据EEprom
				{PPROG=0X02;//允许锁存地址和数据
					(*j)=(*source);
					//EepromByteWrite(erase,*source);
					source++;
					j++;
					PPROG=0X03;//加编程电压
				/*PORTA|=0X08;
				Delay(20);
				PORTA&=0xf7;
				Delay(20);*/
				Delay(2);//10ms
				PPROG=0X00;//清除
				}

}

⌨️ 快捷键说明

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