#include <xc.h>
// CONFIG
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
typedef unsigned char uchar;
void WriteEE(uchar addr, uchar data);
uchar ReadEE(uchar addr);
uchar led_data;
__EEPROM_DATA(0xfe,0xff,0xef,0,0,0,0,0);
void main(void)
{
PORTD = 0xff;
TRISD = 0x00;
//WriteEE(0, 0xff);
while(1)
{
//led_data = ReadEE(0);
led_data = eeprom_read(2);
PORTD = led_data;
}
}
void WriteEE(uchar addr, uchar data)
{
do{}
while(WR == 1); //等待完成
EEADR = addr; //写入地址信息
EEDATA = data; //写入数据信息
EEPGD = 0; //操作EEPROM,访问数据存储器
WREN = 1; //写入EEPROM允许
EECON2 = 0x55;
EECON2 = 0xAA; //特定时序
WR = 1; //执行写操作
do{}
while(WR == 1); //等待写入完成
WREN = 0; //禁止写入EEPROM
}
uchar ReadEE(uchar addr)
{
uchar _data;
do{}
while(RD == 1); //等待读完成
EEADR = addr; //地址
EEPGD = 0; //访问数据存储器
RD = 1; //执行读操作
do{}
while(RD == 1);
_data = EEDATA;
return _data;
}
|