📄 ex_support.c
字号:
else if (!(PINC & (BIT(5))))
{
chTempKeyCode = 25;
return chTempKeyCode;
}
//////////////////////////////////////////////////////////////
//对1-4按钮进行扫描
DDRC &= ~(BIT(2) | BIT(3) |
BIT(4) | BIT(5)); //把端口pc2-pc5设置为输入
DDRC |= BIT(1); //把pc1端口设为输出
PORTC |= BIT(1) | BIT(2) | BIT(3) |
BIT(4) | BIT(5);
PORTC &=~ BIT(1); //把pc1端口拉低
NOP();
NOP();
if (!(PINC & (BIT(2)))) //读取pc2端口,如果返回值是0则表明按键被按下,
//则返回按键的值
//以下依次对pc3、pc4、pc5逐个读取值,如果返回值为0
//则返回相应按键值
{
chTempKeyCode = 1;
return chTempKeyCode;
}
else if (!(PINC & (BIT(3))))
{
chTempKeyCode = 2;
return chTempKeyCode;
}
else if (!(PINC & (BIT(4))))
{
chTempKeyCode = 3;
return chTempKeyCode;
}
else if (!(PINC & (BIT(5))))
{
chTempKeyCode = 4;
return chTempKeyCode;
}
//////////////////////////////////////////////////////////////
//对6-7按钮进行扫描
DDRC &= ~(BIT(1) | BIT(3) |
BIT(4) | BIT(5));//把端口pc1,pc3-pc5设置为输入
DDRC |= BIT(2);//把pc2端口设为输出
PORTC |= BIT(1) | BIT(2) | BIT(3) |
BIT(4) | BIT(5);
PORTC &= ~BIT(2); //把pc2端口拉低
NOP();
NOP();
if (!(PINC & (BIT(3)))) //读取pc3端口,如果返回值是0则表明按键被按下,
//则返回按键的值
//以下依次对pc4、pc5逐个读取值,如果返回值为0
//则返回相应按键值
{
chTempKeyCode = 6;
return chTempKeyCode;
}
else if (!(PINC & (BIT(4))))
{
chTempKeyCode = 7;
return chTempKeyCode;
}
else if (!(PINC & (BIT(5))))
{
chTempKeyCode = 8;
return chTempKeyCode;
}
//////////////////////////////////////////////////////////////
//对11-12按钮进行扫描
DDRC &= ~(BIT(2) | BIT(1) |
BIT(4) | BIT(5));//把端口pc1-pc2,pc4-pc5设置为输入
DDRC |= BIT(3);//把pc3端口设为输出
PORTC |= BIT(1) | BIT(2) | BIT(3) |
BIT(4) | BIT(5);
PORTC &= ~BIT(3);//把pc2端口拉低
NOP();
NOP();
if (!(PINC & (BIT(4)))) //读取pc4端口,如果返回值是0则表明按键被按下,
//则返回按键的值
{
chTempKeyCode = 11;
return chTempKeyCode;
}
else if (!(PINC & (BIT(5))))//读取pc5端口,如果返回值是0则表明按键被按下,
//则返回按键的值
{
chTempKeyCode = 12;
return chTempKeyCode;
}
////////////////////////////////////////////////////////////////
//对16按钮进行扫描
DDRC &= ~(BIT(2) | BIT(1) |
BIT(3) | BIT(5));//把端口pc1-pc3、pc5设置为输入
DDRC |= BIT(4); //把pc4端口设为输出
PORTC |= BIT(1) | BIT(2) | BIT(3) |
BIT(4) | BIT(5);
PORTC &=~ BIT(4); //把pc4端口拉低
NOP();
NOP();
if (!(PINC & (BIT(5))))
{
chTempKeyCode = 16;
return chTempKeyCode; //读取pc5端口,如果返回值是0则表明按键被按下,
//则返回按键的值
}
//////////////////////////////////////////////////////////////
//对20-17按钮进行扫描
DDRC &= ~(BIT(2) | BIT(3) |
BIT(4) | BIT(1)); //把端口pc1-pc4设置为输入
DDRC |= BIT(5); //把pc5端口设为输出
PORTC |= BIT(1) | BIT(2) | BIT(3) |
BIT(4) | BIT(5);
PORTC &= ~BIT(5); //把pc5端口拉低
NOP();
NOP();
if (!(PINC & (BIT(4)))) //读取pc4端口,如果返回值是0则表明按键被按下,
//则返回按键的值
//以下依次对pc3-pc1逐个读取值,如果返回值为0
//则返回相应按键值
{
chTempKeyCode = 20;
return chTempKeyCode;
}
else if (!(PINC & (BIT(3))))
{
chTempKeyCode = 19;
return chTempKeyCode;
}
else if (!(PINC & (BIT(2))))
{
chTempKeyCode = 18;
return chTempKeyCode;
}
else if (!(PINC & (BIT(1))))
{
chTempKeyCode = 17;
return chTempKeyCode;
}
//////////////////////////////////////////////////////////////
//对15-13按钮进行扫描
DDRC &= ~(BIT(1) | BIT(3) |
BIT(2) | BIT(5)); //把端口pc1-pc3、pc5设置为输入
DDRC |= BIT(4); //把pc4端口设为输出
PORTC |= BIT(1) | BIT(2) | BIT(3) |
BIT(4) | BIT(5);
PORTC &= ~BIT(4); //把pc4端口拉低
NOP();
NOP();
if (!(PINC & (BIT(3)))) //读取pc3端口,如果返回值是0则表明按键被按下,
//则返回按键的值
//以下依次对pc2-pc1逐个读取值,如果返回值为0
//则返回相应按键值
{
chTempKeyCode = 15;
return chTempKeyCode;
}
else if (!(PINC & (BIT(2))))
{
chTempKeyCode = 14;
return chTempKeyCode;
}
else if (!(PINC & (BIT(1))))
{
chTempKeyCode = 13;
return chTempKeyCode;
}
//////////////////////////////////////////////////////////////
//对10-9按钮进行扫描
DDRC &= ~(BIT(2) | BIT(1) |
BIT(4) | BIT(5)); //把端口pc1-pc2、pc4-pc5设置为输入
DDRC |= BIT(3); //把pc3端口设为输出
PORTC |= BIT(1) | BIT(2) |
BIT(3) | BIT(4) | BIT(5);
PORTC &= ~BIT(3); //把pc3端口拉低
NOP();
NOP();
if (!(PINC & (BIT(2)))) //读取pc2端口,如果返回值是0则表明按键被按下,
//则返回按键的值
{
chTempKeyCode = 10;
return chTempKeyCode;
}
else if (!(PINC & (BIT(1)))) //读取pc1端口,如果返回值是0则表明按键被按下,
//则返回按键的值
{
chTempKeyCode = 9;
return chTempKeyCode;
}
//////////////////////////////////////////////////////
//对5按钮进行扫描
DDRC &= ~(BIT(4) | BIT(1) |
BIT(3) | BIT(5)); //把端口pc1、pc3-pc4设置为输入
DDRC |= BIT(2); //把pc2端口设为输出
PORTC |= BIT(1) | BIT(2) | BIT(3) |
BIT(4) | BIT(5);
PORTC &= ~BIT(2); //把pc2端口拉低
NOP();
NOP();
if (!(PINC & (BIT(1)))) //读取pc1端口,如果返回值是0则表明按键被按下,
//则返回按键的值
{
chTempKeyCode = 5;
return chTempKeyCode;
}
return chTempKeyCode; //返回按键值
}
UINT8 Get_Code (UINT8 chi)
{
UINT8 chj;
UINT8 Table[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
switch(chi)
{
case 1: chj = Table[1];break;
case 2: chj = Table[2];break;
case 3: chj = Table[3];break;
case 4: chj = Table[4];break;
case 5: chj = Table[5];break;
case 6: chj = Table[6];break;
case 7: chj = Table[7];break;
case 8: chj = Table[8];break;
case 9: chj = Table[9];break;
case 10: chj = Table[0];break;
case 11: chj = Table[1];break;
case 12: chj = Table[2];break;
case 13: chj = Table[3];break;
case 14: chj = Table[4];break;
case 15: chj = Table[5];break;
case 16: chj = Table[6];break;
case 17: chj = Table[7];break;
case 18: chj = Table[8];break;
case 19: chj = Table[9];break;
case 20: chj = Table[0];break;
case 21: chj = Table[1];break;
case 22: chj = Table[2];break;
case 23: chj = Table[3];break;
case 24: chj = Table[4];break;
case 25: chj = Table[5];break;
default: chj = 0xFF;
}
return chj;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -