59 lines
2.9 KiB
C
59 lines
2.9 KiB
C
|
||
/********************************** (C) COPYRIGHT *******************************
|
||
* File Name : Main.C
|
||
* Author : WCH
|
||
* Version : V1.0
|
||
* Date : 2017/01/20
|
||
* Description : CH554 触摸按键中断和查询方式进行采集并报告当前采样通道按键状态,包含初始化和按键采样等演示函数
|
||
*******************************************************************************/
|
||
#include "..\Public\CH554.H"
|
||
#include "..\Public\Debug.H"
|
||
#include "TouchKey.H"
|
||
#include "stdio.h"
|
||
|
||
#pragma NOAREGS
|
||
|
||
main( )
|
||
{
|
||
UINT8 i;
|
||
CfgFsys( ); //CH554时钟选择配置
|
||
mDelaymS(5); //修改主频建议稍加延时等待芯片供电稳定
|
||
mInitSTDIO( ); //串口0初始化
|
||
printf("start ...\n");
|
||
|
||
P1_DIR_PU &= 0x0C; //所有触摸通道设置为浮空输入,用不到的通道可以不设置
|
||
TouchKeyQueryCyl2ms(); //TouchKey查询周期2ms
|
||
GetTouckKeyFreeBuf(); //获取采样基准值
|
||
#if DE_PRINTF
|
||
for(i=KEY_FIRST;i<(KEY_LAST+1);i++) //打印采样基准值
|
||
{
|
||
printf("Channel %02x base sample %04x\n",(UINT16)i,KeyFree[i]);
|
||
}
|
||
#endif
|
||
|
||
#if INTERRUPT_TouchKey
|
||
EA = 1;
|
||
while(1)
|
||
{
|
||
if(KeyBuf) //key_buf非0,表示检测到按键按下
|
||
{
|
||
printf("INT TouchKey Channel %02x \n",(UINT16)KeyBuf); //打印当前按键状态通道
|
||
KeyBuf = 0; //清除按键按下标志
|
||
mDelaymS(100); //延时无意义,模拟单片机做按键处理
|
||
}
|
||
mDelaymS(100); //延时无意义,模拟单片机干其他事
|
||
}
|
||
#else
|
||
while(1)
|
||
{
|
||
TouchKeyChannelQuery(); //查询触摸按键状态
|
||
if(KeyBuf) //key_buf非0,表示检测到按键按下
|
||
{
|
||
printf("Query TouchKey Channel %02x \n",(UINT16)KeyBuf); //打印当前按键状态通道
|
||
KeyBuf = 0; //清除按键按下标志
|
||
mDelaymS(100); //延时无意义,模拟单片机做按键处理
|
||
}
|
||
mDelaymS(100); //延时无意义,模拟单片机干其他事
|
||
}
|
||
#endif
|
||
} |