我知道大约5MS一个字节,我不明白的是,CPU运行相同的程序两,执行写E2PROM,然后执行读E2PROM,怎么有时是2秒,有时却要用12秒,差6倍的时间,CPU干什么去了(中断仅扫描键盘和LED)?
void e2prom_r() //由main1.c主程序调用,初始化参数表
{
unsigned char i;
EEPGD=0;
for(i=0;i<59;i++)
ram_canshu[i]=ReadFromEeprom(i);
}
void e2prom_w1() //将默认参数写入E2PROM,长击参数键时调用
{
unsigned char i;
EEPGD=0;
for(i=0;i<59;i++) WriteToEeprom(i,rom_canshu[i]);
}
void e2prom_w2() //将内存中的参数写入E2PROM,无击时调用
{
unsigned char i;
EEPGD=0;
for(i=0;i<59;i++) WriteToEeprom(i,ram_canshu[i]);
}
void WriteToEeprom(Addr,WriteData)
unsigned char Addr,WriteData;
{
EEADR=Addr;
EEDATA=WriteData;
asm("nop");
asm("nop");
WREN=1;
GIE=0;
EECON2=0x55;
EECON2=0xaa;
WR=1;
GIE=1;
WREN=0;
asm("clrwdt");
while(WR==1);
}
unsigned char ReadFromEeprom(Addr)
unsigned char Addr;
{
EEADR=Addr;
RD=1;
return (EEDATA);
}
|