📄 fm_eeprom.c
字号:
#pragma sfr
#pragma nop
#pragma di
#pragma ei
#pragma access
#pragma interrupt INTP1 intp1_func
void eeprom_operation();
void eeprom_read();
extern void eeprom_write();
extern void eeprom_erase();
sreg unsigned char write_start=0;
sreg unsigned int pre_FM_data=887;
sreg unsigned int new_FM_data=887;
sreg unsigned int end_data=0;
sreg unsigned int address=0x0dfb;
sreg unsigned int write_address=0;
void hardware_init()
{
DI();
PCC = 0x00;
PPCC = 0x00;
WDTE = 0xAC;
WDTM = 0b01110111;
LSRCM = 0x01;
PM4.3 = 1;
INTM0 = 0x00;
PIF1 = 0;
PMK1 = 0;
EI();
}
void main()
{
hardware_init();
eeprom_read();
while(1)
{
if(new_FM_data!=pre_FM_data)
{
pre_FM_data = new_FM_data;
eeprom_operation();
}
}
}
__interrupt void intp1_func()
{
PIF1 = 0;
new_FM_data++;
}
void eeprom_operation()
{
for(address=0x0efe; address>=0x0dfe; address=address-2)
{
end_data = peekw(address);
if(address==0x0efe)
{
if((end_data!=0xffff)&&(end_data!=0x0000))
{
write_address = 0x0e00;
eeprom_erase();
eeprom_write();
address = 0x0dfb;
}
}
else if((end_data!=0xffff)&&(end_data!=0x0000))
{
write_address = address + 2;
eeprom_write();
address = 0x0dfb;
}
}
}
void eeprom_read()
{
end_data = peekw(0x0e00);
if((end_data==0xffff)||(end_data==0x0000))
{
new_FM_data = pre_FM_data = 887;
}
else{
for(address=0x0efe; address>=0x0e00; address=address-2)
{
end_data = peekw(address);
if((end_data!=0xffff)&&(end_data!=0x0000))
{
new_FM_data = pre_FM_data = end_data;
address = 0x0dff;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -