#include<pic.h>
__CONFIG(HS &WDTDIS &PWRTDIS &BORDIS &LVPDIS &DUNPROT &UNPROTECT );
#define uchar unsigned char //(00~255)
#define uint unsigned int //(00~65535)
#define s1 RC0
uchar num,num1;
uint intnum;
bit write=0;
const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar in_ee_addr,num; //内部操作的EEPROM的地址(00H~FFH)
uchar EEPROMread(uchar EEAddr);
void EEPROMwrite(uchar EEAddr,uchar Cmd);
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void display(uchar z)
{
PORTD=table[z];
delay(10);
}
void scan0()
{
uchar i;
if(s1==0)
{
delay(10);
{
if(s1==0)
{
num++;
if(num==4)
num=1;
while(!s1);
}
}
}
}
//主函数
void main(void)
{
TRISC=0xff;
TRISD=0x00;
PORTD=0x00;
while(1)
{
//scan0();
EEPROMwrite(2,9);
num1=EEPROMread(2);
display(num1);
}
}
void EEPROMwrite(uchar EEAddr,uchar Cmd)
{
GIE=0;
while(WR==1);
EEADR = EEAddr; //EEPROM的地址
EEDATA = Cmd; //EEPROM的写数据
EEPGD = 0;
WREN = 1;
GIE=0;
EECON2 = 0x55; //必须按这样的时序
EECON2 = 0xAA;
WR = 1;
while(WR==1); //等待写操作完成
GIE=1;
WREN= 0;
}
uchar EEPROMread(uchar EEAddr)
{
uchar d;
EEADR = EEAddr;
EEPGD = 0;
GIE=0;
RD = 1;
while(RD==1);
d = EEDATA; //EEPROM的读数据
RD=0;
GIE=1;
return d;
}
以上程序可以保存9。
|