📄 panel.c
字号:
/******************************************************************************
PANEL.C
按键与显示子程序
Copyright (c) 2007.09.11
All rights reserved.
******************************************************************************/
#define panel_c
#include "main.h"
/******************************************************************************
函数名称:KeyScan()
函数功能:键盘扫描子程序
注意事项:
提示说明:
输 入:无
返 回:无
******************************************************************************/
void KeyScan()
{
unsigned char i,j,k;
unsigned int m;
// portd|=0xf0; //高4位为输入
// portc|=0x07;
// portc&=0xfe; //读下行
i=0x05;while(i--){;} //8+3*(i-1)延时20
// j=(portd^0xf0)&0xf0;
j=j>>4;
// portc|=0x07;
// portc&=0xfd; //读中行
i=0x05;while(i--){;}
// j+=((portd^0xf0)&0xf0);
// portc|=0x07;
// portc&=0xfb; //读上行
i=0x05;while(i--){;}
// k=((portd^0xf0)&0xf0);
k=k>>4;
// portc|=0x07;
//以下是去抖动 j\k分别为key1、key2的BUF
if(j|k) //有键
{
if(key_Cnt>=0x08) //采样到8次都为高电平
{
key.halfkey[0]=j; //则赋当前值
key.halfkey[1]=k;
key_Cnt=0x00;
}
else //没采样到8次
{
key_Cnt++;
key.allkey=lastkey.allkey;
}
}
else //没键
{
key.allkey=0x0000;
key_Cnt=0x00;
}
m=key.allkey; //以下是键后处理,键前沿检出
key.allkey=key.allkey&(lastkey.allkey^key.allkey);
lastkey.allkey=m;
}
/******************************************************************************
函数名称:display()
函数功能:
注意事项:
提示说明:
输 入:无
返 回:无
******************************************************************************/
void Display(void)
{
uchar i;
i=Bit_Select&0x03;
porta=0xff;
// portc=portc|0xf0;
if(i&0x02)
{
if(i&0x01)
{
porta=LED8[((dsbuf[1]&0x0f)+0x10)];
if(dspoint&0x80)
{
if(Bit_Select&0x80){porta=0xff;}
}
if(dspoint&0x08){porta&=0x7f;}
// portc&=0x7f;
}
else
{
porta=LED8[((dsbuf[1]>>4)&0x0f)+0x20];
if(dspoint&0x40)
{
if(Bit_Select&0x80){porta=0xff;}
}
if(dspoint&0x04){porta&=0xfe;}
// portc&=0xbf;
}
}
else
{
if(i&0x01)
{
porta=LED8[(dsbuf[0]&0x0f)+0x10];
if(dspoint&0x20)
{
if(Bit_Select&0x80){porta=0xff;}
}
if(dspoint&0x02){porta&=0x7f;}
// portc&=0xdf;
}
else
{
porta=LED8[(dsbuf[0]>>4)&0x0f];
if(dspoint&0x10)
{
if(Bit_Select&0x80){porta=0xff;}
}
if(dspoint&0x01){porta&=0xef;}
// portc&=0xef;
}
}
Bit_Select++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -