📄 yt_key.c.bak
字号:
#include"includes.h"
#include"ytep.h"
#include"ytepfunction.h"
#define yt_Key_file
#define C_keyID1 4
#define C_keyID2 2
#define C_keyID3 1
#define C_keyID4 8
#define C_keyID5 0x10
#define C_keyID6 0x11
const Int16U Year_TAB[]={0,0x31,0x28,0x31,0x30,0x31,0x30,0x31,0x31,0x30,0x31,0x30,0x31};
const Int16U BAUD_TAB1[]={19500-50,9600,4800-50};
//--------------------------------------
//keyword scan
//--------------------------------------
void Set_UART()
{
USART_InitTypeDef UART_InitStructure;
UART_InitStructure.USART_BaudRate = BAUD_TAB1[_YT._Rate&7];//[_YT._Rate];
UART_InitStructure.USART_WordLength = USART_WordLength_8b;
UART_InitStructure.USART_StopBits = USART_StopBits_1;
UART_InitStructure.USART_Parity = USART_Parity_No ;
UART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
UART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
UART_InitStructure.USART_Clock = USART_Clock_Disable;
UART_InitStructure.USART_CPOL = USART_CPOL_Low;
UART_InitStructure.USART_CPHA = USART_CPHA_1Edge;
UART_InitStructure.USART_LastBit = USART_LastBit_Disable;
UART_InitStructure.USART_Parity = USART_Parity_No;
USART_DeInit(USART1);
}
Int8U scankey(KEY *KEYA)
{
Int8U i,k;
k=0;
i=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4);
if(i!=0)k|=1;
i=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5);
if(i!=0)k|=2;
i=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6);
if(i!=0)k|=4;
i=GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_7);
if(i!=0)k|=8;
i=GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4);
if(i!=0)k|=0x10;
if(k==0x1F)
{
KEYA->counter=0;
KEYA->execute=0;
return 0;
}
if(k!=0x1F)
{
if(((++KEYA->counter)>=10)&&(KEYA->execute==0))
{
KEYA->execute=1;
KEYA->ID=k^0x1F;
}else
if((KEYA->counter>=10)&&(KEYA->execute!=0)&&(k==0xe))
{
History[0].SpaceCount=100;
Set_HISTORY(&History[0].ATemper[0]);
Set_HISTORY(&History[0].BTemper[0]);
Set_HISTORY(&History[0].CTemper[0]);
}
}
return 0;
}
//***********************************************
Int8U key_setion(KEY *KEYA,_LCD *LCM)
{
switch (LCM->Mode)
{
case C_LCM_ALA_REG0:
case C_LCM_ALA_REG1:
case C_LCM_ALA_REG2:
case C_LCM_ALA_REG3:
case C_LCM_ALA_REG4:
case C_LCM_ALA_REG5:
case C_LCM_ALA_REG6:
case C_LCM_ALAMC:
case C_LCM_TEMRH:
case C_LCM_Mode0:
case C_LCM_Mode1:
case C_LCM_Mode2:
case C_LCM_Mode3:
case C_LCM_Mode4:
case C_LCM_Mode5:
case C_LCM_Mode6:
case C_LCM_Mode7:
case C_LCM_Mode8:
case C_LCM_Mode9:
case C_LCM_Mode10:
case C_LCM_Mode11:
case C_LCM_Mode12:
case C_LCM_Mode13:
case C_LCM_Mode14:
case C_LCM_Mode15:
case C_LCM_Mode0_16:
case C_LCM_Mode0_17:
case C_LCM_Mode0_18:
if(KEYA->counter>=200)
{
LCM->Mode=C_LCM_SET;
LCM->Timer=0;
LCM->FLAG=1;
return 0;
}else
break;
case C_LCM_SET:
case C_LCM_SET1:
case C_LCM_SET2:
case C_LCM_SET3:
case C_LCM_SET4:
case C_LCM_SET5:
case C_LCM_SET6:
case C_LCM_SET7:
if(KEYA->counter==10)
{
++LCM->Mode;
LCM->Timer=0;
LCM->FLAG=1;
LCM->Lcd_add=0;
if(LCM->Mode>C_LCM_SET7)LCM->Mode=C_LCM_SET;
}
if(KEYA->counter>=200)
{
LCM->Mode=C_LCM_TEMRH;
LCM->Timer=0;
LCM->FLAG=1;
return C_FM24C04;
}
break;
}
return KEYA->ID;
}
//***********************************************
Int16U key_up(KEY *KEYA,_LCD *LCM,_yt *Data)
{
Int16U a,b;
switch(LCM->Mode)
{
case C_LCM_ALA_REG0:
case C_LCM_ALA_REG1:
case C_LCM_ALA_REG2:
case C_LCM_ALA_REG3:
case C_LCM_ALA_REG4:
case C_LCM_ALA_REG5:
case C_LCM_ALA_REG6:
LCM->FLAG=1;
LCM->Mode=C_LCM_Mode0;
break;
case C_LCM_ALAMC:
case C_LCM_TEMRH:
case C_LCM_Mode0:
case C_LCM_Mode1:
case C_LCM_Mode2:
case C_LCM_Mode3:
case C_LCM_Mode4:
case C_LCM_Mode5:
case C_LCM_Mode6:
case C_LCM_Mode0_1:
case C_LCM_Mode7:
case C_LCM_Mode8:
case C_LCM_Mode9:
case C_LCM_Mode10:
case C_LCM_Mode11:
case C_LCM_Mode12:
case C_LCM_Mode13:
case C_LCM_Mode14:
case C_LCM_Mode15:
case C_LCM_Mode0_16:
case C_LCM_Mode0_17:
case C_LCM_Mode0_18:
if((++LCM->Mode)>=C_LCM_SET)
LCM->Mode=C_LCM_ALAMC;
LCM->Timer=0;
LCM->FLAG=1;
//CHK_DISP_MODE(Data->_Channal,&LCM->Mode);
if(LCM->Mode==C_LCM_Mode0)
{
if((Data->_Channal&0X70)==0x70)LCM->Mode=C_LCM_Mode1;//if(Data->_Channal&1)LCM->Mode=C_LCM_Mode1;
}
if(LCM->Mode==C_LCM_Mode1)
{
if((Data->_Channal&0X380)==0x380)LCM->Mode=C_LCM_Mode2;//if(Data->_Channal&2)LCM->Mode=C_LCM_Mode2;
}
if(LCM->Mode==C_LCM_Mode2)
{
if((Data->_Channal&0X1c00)==0x1c00)LCM->Mode=C_LCM_Mode3;//if(Data->_Channal&4)LCM->Mode=C_LCM_Mode3;
}
if(LCM->Mode==C_LCM_Mode3)
{
if((Data->_Channal&0Xe000)==0xe000)LCM->Mode=C_LCM_Mode0_1;//if(Data->_Channal&8)LCM->Mode=C_LCM_Mode4;
}
if(LCM->Mode==C_LCM_Mode0_1)
{
if((Data->_Channal&0Xe0)==0xe0)LCM->Mode=C_LCM_Mode4;
}
if(LCM->Mode==C_LCM_Mode4&&Data->_Channal&0x10)LCM->Mode=C_LCM_Mode5;
if(LCM->Mode==C_LCM_Mode5&&Data->_Channal&0x20)LCM->Mode=C_LCM_Mode6;
if(LCM->Mode==C_LCM_Mode6&&Data->_Channal&0x40)LCM->Mode=C_LCM_Mode7;
if(LCM->Mode==C_LCM_Mode7&&Data->_Channal&0x80)LCM->Mode=C_LCM_Mode8;
if(LCM->Mode==C_LCM_Mode8&&Data->_Channal&0x100)LCM->Mode=C_LCM_Mode9;
if(LCM->Mode==C_LCM_Mode9&&Data->_Channal&0x200)LCM->Mode=C_LCM_Mode10;
if(LCM->Mode==C_LCM_Mode10&&Data->_Channal&0x400)LCM->Mode=C_LCM_Mode11;
if(LCM->Mode==C_LCM_Mode11&&Data->_Channal&0x800)LCM->Mode=C_LCM_Mode12;
if(LCM->Mode==C_LCM_Mode12&&Data->_Channal&0x1000)LCM->Mode=C_LCM_Mode13;
if(LCM->Mode==C_LCM_Mode13&&Data->_Channal&0x2000)LCM->Mode=C_LCM_Mode14;
if(LCM->Mode==C_LCM_Mode14&&Data->_Channal&0x4000)LCM->Mode=C_LCM_Mode15;
if(LCM->Mode==C_LCM_Mode15&&Data->_Channal&0x8000)LCM->Mode=C_LCM_Mode0_16;
if(LCM->Mode==C_LCM_Mode0_16&&Data->_Channal&0x2)LCM->Mode=C_LCM_Mode0_17;
if(LCM->Mode==C_LCM_Mode0_17&&Data->_Channal&0x4)LCM->Mode=C_LCM_Mode0_18;
if(LCM->Mode==C_LCM_Mode0_18&&Data->_Channal&0x8)LCM->Mode=C_LCM_ALAMC;
break;
case C_LCM_SET:
if(++(Data->Sensor[LCM->Lcd_add].Type)>=22)Data->Sensor[LCM->Lcd_add].Type=0;
break;
case C_LCM_SET1:
if(LCM->Lcd_add==0)
{
++Data->_TemOver;
if((Data->_TemOver>=Data->_TemFault)||(Data->_TemOver>69))Data->_TemOver=10;
}
if(LCM->Lcd_add==1)
{
++Data->_TemFast;
if(Data->_TemFast>20)Data->_TemFast=2;
}
if(LCM->Lcd_add==2)
{
++Data->_TemTime;
if(Data->_TemTime>99)Data->_TemTime=5;
}
if(LCM->Lcd_add==3)
{
++Data->_TemRoom;
if(Data->_TemRoom>50)Data->_TemRoom=1;
}
break;
case C_LCM_SET2:
if(++Data->_TemFault>99)Data->_TemFault=Data->_TemOver+5;
break;
case C_LCM_SET3:
if(LCM->Lcd_add==0)
{
if(++Data->_Yorder>=18)Data->_Yorder=0;
}
else
{
Data->_Channal^=0x1;
}
break;
case C_LCM_SET4:
if(LCM->Lcd_add==0)
Data->_Rate^=8;
if(LCM->Lcd_add==1)
{
a=Data->_Rate&7;
if(++a>=3)a=0;
Data->_Rate&=0xfff8;
Data->_Rate|=a;
Uart1Init();
Init2515(Data->_Rate&3);
}
if(LCM->Lcd_add==2)
{
++Data->_Address;
if(Data->_Address>=255)Data->_Address=1;
}
break;
case C_LCM_SET5:
if(LCM->Lcd_add==0)
{
if(Year[6]>0x99)Year[6]=0x99;
++Year[6];
a=Year[6];
if((a&0x0f)>=10)Year[6]+=0x10,Year[6]&=0xf0;
if(Year[6]>0x99)Year[6]=0x0;
b=Year[5]>>4;
b=b*10+Year[5]&0x0f;
if(Year[4]>Year_TAB[b])
Year[4]=1;
}
if(LCM->Lcd_add==1)
{
if(Year[5]>0x12)Year[6]=0x12;
++Year[5];
a=Year[5];
if((a&0x0f)>=10)Year[5]+=0x10,Year[5]&=0xf0;
if(Year[5]>0x12)Year[5]=0x1;
b=Year[5]>>4;
b=b*10+Year[5]&0x0f;
b=Year_TAB[b];
if(Year[4]>=b)
Year[4]=b;
if(Year[5]==2&&Year[4]>=0x28)
{
a=Year[5]>>4;
a=a*10+Year[5]&0x0f;
if((a&0x3)==0)
{
if(Year[4]>0x29)Year[4]=0x29;
}else
{
if(Year[4]>0x28)Year[4]=0x28;
}
}
}
if(LCM->Lcd_add==2)
{
if(Year[4]>0x31)Year[4]=0x31;
++Year[4];
a=Year[6]>>4;
a=a*10+Year[6]&0x0f;
if((Year[4]&0x0f)>=10)Year[4]+=0x10,Year[4]&=0xf0;
b=Year[5]>>4;
b=b*10+Year[5]&0x0f;
if(Year[4]>Year_TAB[b])
{
if(((a&0x3)==0)&&(Year[5]==2))
{
if(Year[4]>0x29)Year[4]=1 ;
}
else Year[4]=1;
}
}
if(LCM->Lcd_add==3)
{
if(Year[3]>6)Year[3]=6;
if(++Year[3]>=7)Year[3]=0;
}
if(LCM->Lcd_add==4)
{
if(Year[2]>0x24)Year[3]=0x24;
++Year[2];
if((Year[2]&0x0f)>=10)Year[2]+=0x10,Year[2]&=0xf0;
if(Year[2]>=0x24)Year[2]=0;
}
if(LCM->Lcd_add==5)
{
if(Year[1]>0x59)Year[3]=0x59;
++Year[1];
if((Year[1]&0x0f)>=10)Year[1]+=0x10,Year[1]&=0xf0;
if(Year[1]>0x59)Year[1]=0;
}
WriteYear(&Year);
break;
case C_LCM_SET6:
if(LCM->Lcd_add==0)
{
if(Data->_Channal&0x70)Data->_Channal&=0xff8f;
else Data->_Channal|=0x70;
}
if(LCM->Lcd_add==1)
{
if(Data->_Channal&0x380)Data->_Channal&=0xfc7f;
else Data->_Channal|=0x380;
}
if(LCM->Lcd_add==2)
{
if(Data->_Channal&0x1c00)Data->_Channal&=0xe3ff;
else Data->_Channal|=0x1c00;
}
if(LCM->Lcd_add==3)
{
if(Data->_Channal&0xe000)Data->_Channal&=0x1fff;
else Data->_Channal|=0xe000;
}
//if(LCM->Lcd_add==0)Data->_Channal^=0X70;
//if(LCM->Lcd_add==1)Data->_Channal^=0X380;
//if(LCM->Lcd_add==2)Data->_Channal^=0X1C00;
//if(LCM->Lcd_add==3)Data->_Channal^=0XE000;
break;
case C_LCM_SET7:
if(LCM->Lcd_add==0)Data->_Channal^=0x10;
if(LCM->Lcd_add==1)Data->_Channal^=0x20;
if(LCM->Lcd_add==2)Data->_Channal^=0x40;
if(LCM->Lcd_add==3)Data->_Channal^=0x80;
if(LCM->Lcd_add==4)Data->_Channal^=0x100;
if(LCM->Lcd_add==5)Data->_Channal^=0x200;
if(LCM->Lcd_add==6)Data->_Channal^=0x400;
if(LCM->Lcd_add==7)Data->_Channal^=0x800;
if(LCM->Lcd_add==8)Data->_Channal^=0x1000;
if(LCM->Lcd_add==9)Data->_Channal^=0x2000;
if(LCM->Lcd_add==10)Data->_Channal^=0x4000;
if(LCM->Lcd_add==11)Data->_Channal^=0x8000;
break;
}
return 0;
}
//***********************************************
Int16U key_down(KEY *KEYA,_LCD *LCM,_yt *Data)
{
Int16U a,b;
switch(LCM->Mode)
{
case C_LCM_ALA_REG0:
case C_LCM_ALA_REG1:
case C_LCM_ALA_REG2:
case C_LCM_ALA_REG3:
case C_LCM_ALA_REG4:
case C_LCM_ALA_REG5:
case C_LCM_ALA_REG6:
LCM->FLAG=1;
LCM->Mode=C_LCM_Mode0;
break;
case C_LCM_ALAMC:
case C_LCM_TEMRH:
case C_LCM_Mode0:
case C_LCM_Mode1:
case C_LCM_Mode2:
case C_LCM_Mode3:
case C_LCM_Mode4:
case C_LCM_Mode5:
case C_LCM_Mode6:
case C_LCM_Mode0_1:
case C_LCM_Mode7:
case C_LCM_Mode8:
case C_LCM_Mode9:
case C_LCM_Mode10:
case C_LCM_Mode11:
case C_LCM_Mode12:
case C_LCM_Mode13:
case C_LCM_Mode14:
case C_LCM_Mode15:
case C_LCM_Mode0_16:
case C_LCM_Mode0_17:
case C_LCM_Mode0_18:
if((--LCM->Mode)<=(C_LCM_ALAMC-1))
LCM->Mode=C_LCM_SET-1;
LCM->Timer=0;
LCM->FLAG=1;
LCM->Lcd_add=0;
if(LCM->Mode==C_LCM_Mode0_18&&Data->_Channal&0x8000)LCM->Mode=C_LCM_Mode0_17;
if(LCM->Mode==C_LCM_Mode0_17&&Data->_Channal&0x8000)LCM->Mode=C_LCM_Mode0_16;
if(LCM->Mode==C_LCM_Mode0_16&&Data->_Channal&0x8000)LCM->Mode=C_LCM_Mode0_15;
if(LCM->Mode==C_LCM_Mode15&&Data->_Channal&0x8000)LCM->Mode=C_LCM_Mode14;
if(LCM->Mode==C_LCM_Mode14&&Data->_Channal&0x4000)LCM->Mode=C_LCM_Mode13;
if(LCM->Mode==C_LCM_Mode13&&Data->_Channal&0x2000)LCM->Mode=C_LCM_Mode12;
if(LCM->Mode==C_LCM_Mode12&&Data->_Channal&0x1000)LCM->Mode=C_LCM_Mode11;
if(LCM->Mode==C_LCM_Mode11&&Data->_Channal&0x800)LCM->Mode=C_LCM_Mode10;
if(LCM->Mode==C_LCM_Mode10&&Data->_Channal&0x400)LCM->Mode=C_LCM_Mode9;
if(LCM->Mode==C_LCM_Mode9&&Data->_Channal&0x200)LCM->Mode=C_LCM_Mode8;
if(LCM->Mode==C_LCM_Mode8&&Data->_Channal&0x100)LCM->Mode=C_LCM_Mode7;
if(LCM->Mode==C_LCM_Mode7&&Data->_Channal&0x80)LCM->Mode=C_LCM_Mode6;
if(LCM->Mode==C_LCM_Mode6&&Data->_Channal&0x40)LCM->Mode=C_LCM_Mode5;
if(LCM->Mode==C_LCM_Mode5&&Data->_Channal&0x20)LCM->Mode=C_LCM_Mode4;
if(LCM->Mode==C_LCM_Mode4&&Data->_Channal&0x10)LCM->Mode=C_LCM_Mode0_1;
if(LCM->Mode==C_LCM_Mode0_1)
{
if((Data->_Channal&0XE)==0xe)LCM->Mode=C_LCM_Mode3;
}
if(LCM->Mode==C_LCM_Mode3)
{
if((Data->_Channal&0XE000)==0xe000)LCM->Mode=C_LCM_Mode2;
}
if(LCM->Mode==C_LCM_Mode2)
{
if((Data->_Channal&0X1C00)==0x1c00)LCM->Mode=C_LCM_Mode1;
}
if(LCM->Mode==C_LCM_Mode1)
{
if((Data->_Channal&0X380)==0x380)LCM->Mode=C_LCM_Mode0;
}
if(LCM->Mode==C_LCM_Mode0)
{
if((Data->_Channal&0X70)==0x70)LCM->Mode=C_LCM_TEMRH;
}
break;
case C_LCM_SET:
if(--(Data->Sensor[LCM->Lcd_add].Type)>=22)Data->Sensor[LCM->Lcd_add].Type=21;
break;
case C_LCM_SET1:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -