📄 m8demo._c
字号:
key_tick=0;
}
break;
}
case KBD_DEBOUNCE:
{
if (key_tick > KBD_DEBOUNCE_TEMPO)
key_state = KBD_DECODE;
break;
}
case KBD_DECODE:
{
if(key_value==Key_Decode())
{
//if(( key_value==key_dec)||(key_value==key_inc))
// key_state = KBD_DECODE5;
//else
key_state = KBD_DECODE2;
}
else
key_state = KBD_IDLE;
break;
}
case KBD_DECODE2:
{
if(key_value!=Key_Decode())
{key_pressed = true;
key_state = KBD_IDLE;
}
break;
}
case KBD_DECODE3:
{
if (key_tick > KBD_DEBOUNCE_TEMP1)
key_state = KBD_DECODE5;
break;
}
case KBD_DECODE4:
{
key_pressed = true;
key_state = KBD_DECODE3;
key_tick=0;
if(key_value!=Key_Decode())
{
key_pressed = true;
key_state = KBD_IDLE;
}
break;
}
case KBD_DECODE5:
{
if (key_tick > KBD_DEBOUNCE_TEMP1)
key_state = KBD_DECODE4;
if(key_value!=Key_Decode())
{
key_pressed = true;
key_state = KBD_IDLE;
}
break;
}
default: break;
}
}
void UserApplication(void)
{
unsigned char nn;;
init_devices();
TimerCount=0;
TimerCountOld=0;
key_state=KBD_IDLE;
mode_state=0;
PutChar(0x0a);
PutChar(0x0d);
PutStr("富友勤电子M8DEMO");
PutStr("时钟模式");
while(1)
{
Key_Task();
if(key_pressed)
{
switch(key_value)
{
case key_inc:
switch(mode_state)
{
case clock_mode:break;
case out_eeprom_addr_modify_mode:
out_eeprom_addr++;
out_eeprom_data=i2c_Read(out_eeprom_addr);
break;
case out_eeprom_data_modify_mode:
out_eeprom_data++;
i2c_Write(out_eeprom_addr,out_eeprom_data);
break;
case out_eeprom_read_mode:
out_eeprom_addr++;
out_eeprom_data=i2c_Read(out_eeprom_addr);
break;
case in_eeprom_addr_modify_mode:
in_eeprom_addr++;
EEPROM_READ(in_eeprom_addr, in_eeprom_data);
break;
case in_eeprom_data_modify_mode:
in_eeprom_data++;
EEPROM_WRITE (in_eeprom_addr,in_eeprom_data);
break;
case in_eeprom_read_mode:
out_eeprom_addr++;
EEPROM_READ(in_eeprom_addr, in_eeprom_data);
break;
case AT45DB021_addr_modify_mode:
AT45DB021_addr++;
if(AT45DB021_addr==0x80)
AT45DB021_addr=0x00;
PutStr("45DB21 Read Start Addr");
PutInt( AT45DB021_addr );
AT45DB021_data=ReadBlock(AT45DB021_addr);
PutStr("45DB21 Read Data");
PutInt( AT45DB021_data );
PutStr("45DB21 Read End");
break;
case AT45DB021_data_modify_mode:
AT45DB021_data++;
PutStr("45DB21 Write Start");
WriteBlock(AT45DB021_addr, AT45DB021_data);
PutInt( AT45DB021_data );
PutStr("45DB21 Write End");
break;
default :break;
}
break;
case key_dec:
switch(mode_state)
{
case clock_mode:break;
case out_eeprom_addr_modify_mode:
out_eeprom_addr--;
out_eeprom_data=i2c_Read(out_eeprom_addr);
break;
case out_eeprom_data_modify_mode:
out_eeprom_data--;
i2c_Write(out_eeprom_addr,out_eeprom_data);
break;
case out_eeprom_read_mode:
out_eeprom_addr--;
out_eeprom_data=i2c_Read(out_eeprom_addr);
break;
case in_eeprom_addr_modify_mode:
in_eeprom_addr--;
EEPROM_READ(in_eeprom_addr, in_eeprom_data);
break;
case in_eeprom_data_modify_mode:
in_eeprom_data--;
EEPROM_WRITE (in_eeprom_addr,in_eeprom_data);
break;
case in_eeprom_read_mode:
in_eeprom_addr--;
EEPROM_READ(in_eeprom_addr, in_eeprom_data);
break;
case AT45DB021_addr_modify_mode:
AT45DB021_addr--;
if(AT45DB021_addr==0xFF)
AT45DB021_addr=0x7F;
PutStr("45DB21 Read Start Addr");
PutInt( AT45DB021_addr );
AT45DB021_data=ReadBlock(AT45DB021_addr);
PutStr("45DB21 Read Data");
PutInt( AT45DB021_data );
PutStr("45DB21 Read End");
break;
case AT45DB021_data_modify_mode:
AT45DB021_data--;
PutStr("45DB21 Write Start");
WriteBlock(AT45DB021_addr, AT45DB021_data);
PutInt( AT45DB021_data );
PutStr("45DB21 Write End");
break;
default :break;
}
break;
case key_mode:
switch(mode_state)
{
case clock_mode:
mode_state=out_eeprom_addr_modify_mode;
PutStr("外部EEPROM地址修改");
out_eeprom_addr=0xFF;
out_eeprom_data=0xF1;
break;
case out_eeprom_addr_modify_mode:
mode_state=in_eeprom_addr_modify_mode;
PutStr("内部EEPROM地址修改");
in_eeprom_addr=0xFF;
in_eeprom_data=0xF2;
break;
case out_eeprom_data_modify_mode:
mode_state=in_eeprom_addr_modify_mode;
PutStr("内部EEPROM地址修改");
in_eeprom_addr=0xFF;
in_eeprom_data=0xF2;
break;
case in_eeprom_addr_modify_mode:
adc_Enable();
mode_state=adc_mode;
PutStr("ADC模式");
adc_value=8888;
key_pressed=false;
#ifdef query_adc
while(1)
{ Key_Task();
if(key_pressed)
if(key_value==key_mode)
{
adc_Disable();
AT45DB021_addr=0x7F;
AT45DB021_data=0xF3;
mode_state=AT45DB021_addr_modify_mode;
PutStr("45DB21块地址修改");
goto end_key_value;
}
adc_value=ReadADC(0);
}
#endif
break;
case in_eeprom_data_modify_mode:
adc_Enable();
mode_state=adc_mode;
PutStr("ADC模式");
adc_value=8888;
key_pressed=false;
#ifdef query_adc
while(1)
{ Key_Task();
if(key_pressed)
if(key_value==key_mode)
{
adc_Disable();
AT45DB021_addr=0x7F;
AT45DB021_data=0xF3;
mode_state=AT45DB021_addr_modify_mode;
PutStr("45DB21块地址修改");
goto end_key_value;
}
adc_value=ReadADC(0);
}
#endif
break;
case AT45DB021_addr_modify_mode:
case AT45DB021_data_modify_mode:
mode_state=clock_mode;
PutStr("时钟模式");
break;
default :break;
}
break;
case key_enter:
/* PutStr("key_enter");
if(UCSRB&0x10)
uart0_RX_Enable();
else
uart0_RX_Disable();*/
switch(mode_state)
{
case out_eeprom_addr_modify_mode:
PutStr("外部EEPROM数据修改");
mode_state=out_eeprom_data_modify_mode;
break;
case out_eeprom_data_modify_mode:
PutStr("外部EEPROM地址修改");
mode_state=out_eeprom_addr_modify_mode;
break;
case in_eeprom_addr_modify_mode:
PutStr("内部EEPROM数据修改");
mode_state=in_eeprom_data_modify_mode;
break;
case in_eeprom_data_modify_mode:
PutStr("内部EEPROM地址修改");
mode_state=in_eeprom_addr_modify_mode;
break;
case AT45DB021_addr_modify_mode:
PutStr("45DB21数据修改");
mode_state=AT45DB021_data_modify_mode;
break;
case AT45DB021_data_modify_mode:
PutStr("45DB21地址修改");
mode_state=AT45DB021_addr_modify_mode;
break;
default :break;
}
break;
default:break;
}
end_key_value:
key_pressed=false;
}
}
//insert your functional code here...
}
void main()
{
UserApplication();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -