#include <htc.h>
#include <stdio.h>
__CONFIG(0xFF32);
#define u8 unsigned char
#define u16 unsigned int
void Delay_ms(u16 xms)
{
int i,j;
for(i=0;i<xms;i++)
{ for(j=0;j<71;j++) ; }
}
void EEPROM_write(u8 addr,u8 data)
{
GIE=0;
while(WR==1);
EEADR=addr;
EEDATA=data;
EEPGD=0; //0-EEPROM 1-Program
WREN=1;
GIE=0;
EECON2=0x55;
EECON2=0xAA;
WR=1; //启动写周期
while(WR==1);
GIE=1;
WREN=0;
}
u8 EEPROM_read(u8 addr)
{
EEADR=addr;
EEPGD=0;
RD=1;
return EEDATA;
}
void SerialInit(void)
{
TXSTA=0x24; //开启发射使能位、高波特率,TRMT初始值可0可1
RCSTA=0x80;
SPBRG=0x19; //4M晶振,波特率9600,则SPBRG初值为25
}
//printf函数重定向
void putch(u8 c)
{
TXREG = c;
while(TRMT==0);
}
u8 readval;
void main()
{
SerialInit();
TRISD=0x00;
PORTD=0xFF;
printf("\n***** Hello,world1! *****\n\n");
readval=EEPROM_read(0);
printf("readval=%#x\n",readval);
if(readval==0xff)
{
EEPROM_write(0,0x36);
printf("write ok!\n");
}
while(1)
{
Delay_ms(500);
RD3=!RD3;
}
}