?? eeprom.c
字號(hào):
#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的保護(hù)
//CONFIG=0xBf;//高四位重新映像EEPROM
INIT=0X21;//寄存器,RAM空間映像,01為復(fù)位值
//TMSK2=0X00;//定時(shí)器分頻,定時(shí)器屏蔽
//OPTION=0x10;//cop定時(shí)器溢出率
//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的時(shí)鐘選擇,低于1M時(shí)置Csel
//BPROT=0X00;//低4位置位時(shí),禁止對(duì)一個(gè)區(qū)的EEprom進(jìn)行編程
PPROG=0X00;//復(fù)位時(shí):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);//延時(shí)10Ms
PPROG=0X00;//置為讀出方式
}
}
/**********************/
void EepromBulkErase(void)
{uchar *i;
PPROG=0X06;//擦除方式
//i=((volatile unsigned char*)(0xfe00));
//i++;
//*i=0XFF;
EEPROMBASEADDRESS=0xdd;
PPROG=0X07;//打開編程電源
Delay(100);//延時(shí)10Ms
PPROG=0X00;//置為讀出方式
/*#asm
ldab #0x06
stab $103b
stab $fe00
ldab #0x07
stab $103b
#endasm
Delay(100);
#asm
clr $103b
#endasm
*/
}
/*
******************寫數(shù)據(jù)***************************
*/
void EepromByteWrite(uchar *aimaddr,uchar a)
{ //uchar *i;
//erase=(volatile unsigned char*)(aimaddr);
erase=(aimaddr);
PPROG=0X02;//允許鎖存地址和數(shù)據(jù)
(*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++) //寫入數(shù)據(jù)EEprom
{PPROG=0X02;//允許鎖存地址和數(shù)據(jù)
(*j)=(*source);
//EepromByteWrite(erase,*source);
source++;
j++;
PPROG=0X03;//加編程電壓
/*PORTA|=0X08;
Delay(20);
PORTA&=0xf7;
Delay(20);*/
Delay(2);//10ms
PPROG=0X00;//清除
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -