📄 key.c
字号:
#include<LPC213X.h>
#include"KEY.h"
void KEY_INIT()
{
PINSEL1 |=1<<18 ;
AD0CR = (1 << 4) | // SEL=8,选择通道3
((12000000 / 600000 - 1) << 8) | // CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
(0 << 16) | // BURST=0,软件控制转换操作
(0 << 17) | // CLKS=0, 使用11clock转换
(1 << 21) | // PDN=1,正常工作模式
(0 << 22) | // TEST1:0=00,正常工作模式
(0 << 24) | // START=1,直接启动ADC转换
(0 << 27); // 直接启动ADC转换时,此位无效
}
const enum KeyV Ktab[] = { S10, S9, S8, S7, S6, KEY_NONE,S5, S4,S3,S2,S1};
int KEY_READ()
{
unsigned char i=0;
const unsigned short KeyTable[] =
{ 0, 0xA8, 0x130, 0x180, 0x1F0, 0x230, 0x270,0x2B0,0x310,0x380,0x3E0,0x410};
int ADC_Data=0;
AD0CR |= 1 << 24; // 进行第一次转换
while ((AD0DR & 0x80000000) == 0); // 等待转换结束
ADC_Data = AD0DR; // 读取ADC结
ADC_Data = (ADC_Data >> 6) & 0x3ff;
for(i=0;i<11;i++) {
if( KeyTable[i] <= ADC_Data && ADC_Data < KeyTable[i+1] ) {
return Ktab[i];
}
}
return KEY_NONE;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -