📄 key.c
字号:
delay(500);
LedDisply();
}
else
{
smallLed[0] = smallLed[0]&(~led16);
LEDBuf[8] = smallLed[0];
delay(500);
SendGas_Flag=0;
delay(500);
LedDisply();
}
//Kill_Coder_Flag();
key_Flag = 0;
break;
case SWITCH:
if(Switch_Flag==0)
{
smallLed[3] = smallLed[3]|led37;
LEDBuf[11] = smallLed[3];
delay(500);
Switch_Flag=1;
delay(500);
LedDisply();
}
else
{
smallLed[3] = smallLed[3]&(~led37);
LEDBuf[11] = smallLed[3];
delay(500);
Switch_Flag=0;
delay(500);
LedDisply();
}
//Kill_Coder_Flag();
key_Flag = 0;
break;
case ROMOTE:
if(Romote_Flag==0)
{
smallLed[3] = smallLed[3]|led38;
LEDBuf[11] = smallLed[3];
delay(500);
Romote_Flag=1;
delay(500);
LedDisply();
}
else
{
smallLed[3] = smallLed[3]&(~led38);
LEDBuf[11] = smallLed[3];
delay(500);
Romote_Flag=0;
delay(500);
LedDisply();
}
//Kill_Coder_Flag();
key_Flag = 0;
break;
case FUNC:
if(FuncLed_Flag==0)
{
smallLed[2] = smallLed[2]&(~led25)&(~led26)|led31;
LEDBuf[10] = smallLed[2];
delay(500);
FuncLed_Flag=1;
delay(500);
LedDisply();
}
else if(FuncLed_Flag==1)
{
smallLed[2] = smallLed[2]&(~led31)&(~led26)|led25;
LEDBuf[10] = smallLed[2];
delay(500);
FuncLed_Flag=2;
delay(500);
LedDisply();
}
else
{
smallLed[2] = smallLed[2]&(~led25)&(~led31)|led26;
LEDBuf[10] = smallLed[2];
delay(500);
FuncLed_Flag=0;
delay(500);
LedDisply();
}
//Kill_Coder_Flag();
key_Flag = 0;
break;
case MODE:
if(ModeLed_Flag==0)
{
smallLed[2] = smallLed[2]&(~led27)|led32;
LEDBuf[10] = smallLed[2];
delay(500);
ModeLed_Flag=1;
delay(500);
LedDisply();
}
else
{
smallLed[2] = smallLed[2]&(~led32)|led27;
LEDBuf[10] = smallLed[2];
delay(500);
ModeLed_Flag=0;
delay(500);
LedDisply();
}
//Kill_Coder_Flag();
key_Flag = 0;
break;
case CONTROL:
if(Control_Flag==0)
{
smallLed[2] = smallLed[2]&(~led29)|led28;
LEDBuf[10] = smallLed[2];
delay(500);
Control_Flag=1;
delay(500);
LedDisply();
}
else
{
smallLed[2] = smallLed[2]&(~led28)|led29;
LEDBuf[10] = smallLed[2];
delay(500);
Control_Flag=0;
delay(500);
LedDisply();
}
//Kill_Coder_Flag();
key_Flag = 0;
break;
case SAVE:
if(Save_Flag==0)
{
smallLed[2] = smallLed[2]|led30;
LEDBuf[10] = smallLed[2];
smallLed[3] = smallLed[3]&(~led33);
LEDBuf[11] = smallLed[3];
delay(500);
Save_Flag=1;
smallLed[0] = smallLed[0]|led9;
LEDBuf[8] = smallLed[0];
LEDBuf[6] = NUM_LED[channel[0]];
LEDBuf[7] = NUM_LED[channel[1]];
delay(500);
LedDisply();
CURT_SELT = 0;
VOLE_SELT = 0;
CHAN_SELT = 1;
}
else
{
smallLed[2] = smallLed[2]&(~led30);
LEDBuf[10] = smallLed[2];
delay(500);
Save_Flag=0;
delay(500);
LedDisply();
}
//Kill_Coder_Flag();
key_Flag = 0;
break;
case LOAD:
if(Load_Flag==0)
{
smallLed[3] = smallLed[3]|led33;
LEDBuf[11] = smallLed[3];
smallLed[2] = smallLed[2]&(~led30);
LEDBuf[10] = smallLed[2];
delay(500);
Load_Flag=1;
smallLed[0] = smallLed[0]|led9;
LEDBuf[8] = smallLed[0];
LEDBuf[6] = NUM_LED[channel[0]];
LEDBuf[7] = NUM_LED[channel[1]];
delay(500);
LedDisply();
CURT_SELT = 0;
VOLE_SELT = 0;
CHAN_SELT = 1;
}
else
{
smallLed[3] = smallLed[3]&(~led33);
LEDBuf[11] = smallLed[3];
delay(500);
Load_Flag=0;
delay(500);
LedDisply();
}
//Kill_Coder_Flag();
key_Flag = 0;
break;
case CONFIRM:
if((Save_Flag==1)||(Load_Flag==1))
{
Chan_Num=10*channel[0]+channel[1];
switch(Chan_Num)
{
case 1:
if(Save_Flag==1)
Save((char*)FLASH1_ADR);
else if(Load_Flag==1)
Load((char*)FLASH1_ADR);
LedDisply();
key_Flag = 0;
break;
case 2:
if(Save_Flag==1)
Save((char*)FLASH2_ADR);
else if(Load_Flag==1)
Load((char*)FLASH2_ADR);
LedDisply();
key_Flag = 0;
break;
case 3:
if(Save_Flag==1)
Save((char*)FLASH3_ADR);
else if(Load_Flag==1)
Load((char*)FLASH3_ADR);
LedDisply();
key_Flag = 0;
break;
}
Kill_Coder_Flag();
}
else
{
smallLed[0] = smallLed[0]&(~led14)&(~led13)&(~led12)&(~led10)&(~led11);
LEDBuf[8] = smallLed[0];
LEDBuf[0] = NUM_LED[current[0]];
LEDBuf[1] = NUM_LED[current[1]];
LEDBuf[2] = NUM_LED[current[2]];
LEDBuf[3] = NUM_LED[voltage[0]];
LEDBuf[4] = NUM_LED[voltage[1]]&0x7F;
LEDBuf[5] = NUM_LED[voltage[2]];
LedDisply();
key_Flag = 0;
break;
}
Kill_Coder_Flag();
default:
key_Flag = 0;
break;
}
}
/******************************************************
* 文件说明:
* 文件名:flash.c
* 程序初始化Flash后,首先擦除flash的内容,
* 然后写入write_Buf的内容,接着读出内容到read_Buf
* 程序的执行结果可通过查看read_Buf的值确定是否操作正确
******************************************************/
/**************************************************************
* 读Flash
* 输入参数说明:
* addr: 读地址
* length: 要读取的字节数
* readBuf: 用以存储读取内容的缓存区地址
***************************************************************/
void read_Flash(char* addr,unsigned char* rbuf,int len)
{
unsigned int cnt;
while((FCTL3 & 0x01) == 0x0001); // 等待flash空闲
for(cnt=0;cnt<len;cnt++)
{
*(rbuf+ cnt) = *(addr + cnt); // 读数据
}
FCTL3 = FWKEY + LOCK; // Lock
}
/**************************************************************
*
* 函数功能:写数据到Flash
* 输入参数:
* addr: 地址
* buf: 要写数据的首地址
* len: 写入的字节数
***************************************************************/
void write_Flash(char*addr,unsigned char*buf,int len)
{
unsigned int cnt;
while((FCTL3 & 0x01) == 0x0001); // 等待Flash空闲
FCTL3 = FWKEY; // 清除“LOCK”标识
FCTL1 = FWKEY + WRT; // 准备写
for(cnt=0;cnt<len;cnt++)
{
*(addr+cnt) = *(buf + cnt); // 写数据
}
FCTL3 = FWKEY + LOCK; // Lock
}
/**************************************************************
*
* Erase Flash
* intput:
* add: address that sepecify a Segment
*
**************************************************************/
void erase_Flash(char* add)
{
while((FCTL3 & 0x01) == 0x0001); // 等待空闲
FCTL3 = FWKEY; // 清除 "Lock"
FCTL1 = FWKEY + ERASE; // 准备擦除
*add = 2; // 擦除,写任意数均可
FCTL3 = FWKEY + LOCK; // 置“LOCK”
}
/**************************************************************
**************************************************************/
unsigned char FlashBusy()
{
if((FCTL3&BUSY)==BUSY)
return 1;
else
return 0;
}
/**************************************************************
*
* shutdown_Save
* intput:
* add: address that sepecify a Segment
*
**************************************************************/
void Save(char* add)
{
unsigned char i;
for(i=0;i<9;i++)
write_Buf[i]=voltage[i];
for(i=0;i<6;i++)
write_Buf[i+9]=current[i];
for(i=0;i<2;i++)
write_Buf[i+15]=channel[i];
for(i=0;i<4;i++)
write_Buf[i+17]=smallLed[i];
erase_Flash(add);
write_Flash(add,write_Buf, 22);
while(FlashBusy()==1)
Kill_Coder_Flag();
}
void Load(char* addr)
{
unsigned char i;
read_Flash(addr,read_Buf,22);
for(i=0;i<9;i++)
voltage[i]=write_Buf[i];
for(i=0;i<6;i++)
current[i]=read_Buf[i+9];
for(i=0;i<2;i++)
channel[i]=read_Buf[i+15];
for(i=0;i<4;i++)
smallLed[i]=read_Buf[i+17];
while(FlashBusy()==1)
Kill_Coder_Flag();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -