找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13601|回复: 7
收起左侧

合泰单片机触摸按键数据手册自编写程序

[复制链接]
ID:244945 发表于 2017-11-1 15:01 | 显示全部楼层 |阅读模式
初始化中,对触摸灵敏度自动校正调节
do
{
  asm("CLR WDT");//喂狗
  if(TouchUpdate)
  {
   TouchUpdate=0;
   if(TouchData>1230)
   {
    TF--;
    if(TK16D<=(TF-2))
    {
    Slottimer++;
    Touch_Init();
    }
    else if(TK16D>=(TF+2))
    {
    Slottimer--;
    Touch_Init();
    }
   }
   else if(TouchData<1225)
   {
    TF++;
    if(TK16D<=(TF-2))
    {
    Slottimer++;
    Touch_Init();
    }
    else if(TK16D>=(TF+2))
    {
    Slottimer--;
    Touch_Init();
    }
   }
   else
   {
    break;
   }   
  }
}while(1);


void Touch_Init(void)
{
_tkst=0;
/*****************************************************************************
触控按键 8 位定时 / 计数器寄存器    时隙计数器溢出设定的时间为 (256-TKTMR[7:0]) × 32
*****************************************************************************/
_tktmr=232;//时隙计数器溢出时间:(256-TKTMR[7:0])X32 226
/*****************************************************************************
TK16S(1~0):触控按键模块 16 位计数器时钟选择位
00 =Fsys 01 =Fsys/2 10 =Fsys/4 11 =Fsys/8
*****************************************************************************/  
_tk16s1=1;
_tk16s0=0;
/*****************************************************************************
TKFS(1~0):触控按键振荡器频率选择位
00 =500KHZ 01 =1000KHZ 10 =1500KHZ 11 =2000KHZ
*****************************************************************************/  
_tkfs1=1;
_tkfs0=1;
/*****************************************************************************
参考振荡器内建电容选择  振荡器内建电容选择为 (TKM0RO[9:0] × 50pF)/1024
*****************************************************************************/
_tkm0rol= Slottimer;//159  134
_tkm0roh=Slottimer>>8;//0;
/******TKM0C0********/
/*****************************************************************************
复用按键选择  00 =KEY1 01 =KEY2 10 =KEY3 11 :KEY4
*****************************************************************************/
_m0mxs1=0;
_m0mxs0=1;//复用KEY2
/*****************************************************************************
倍频功能控制  0 =除能  1 =使能
*****************************************************************************/
_m0dfen=0;
/*****************************************************************************
滤波器功能控制  0 =除能  1 =使能
*****************************************************************************/
_m0filen=1;
/*****************************************************************************
C/F振荡器由M0SOF2~M0SOF0决定   0 = 由 M0SOF2~M0SOF0 位控制 1 =由硬件电路控制
*****************************************************************************/
_m0sofc=0;
/*****************************************************************************
选择按键振荡器和参考振荡器作为选择 C/F 振荡器时频率选择位 (M0SOFC=0) m0sof(2~0)
000 =1380Khz 001 =1500KHZ 010 =1670KHZ 011 =1830KHZ
100 =2000KHZ 101 =2230KHZ 110 =2460KHZ 111 =2740KHZ
*****************************************************************************/
_m0sof2=1;
_m0sof1=0;
_m0sof0=0;
/******TKM0C1********/
/*****************************************************************************
时隙计数器选择  0 =参考振荡器 1 =Fsys/4
*****************************************************************************/
_m0tss=0;
/*****************************************************************************
参考振荡器控制  0 =除能  1 =使能
*****************************************************************************/
_m0roen=1;
/*****************************************************************************
按键振荡器控制  0 =除能  1 =使能
*****************************************************************************/
_m0koen=1;
/*****************************************************************************
I/O 引脚和触控按键 2 功能选择  0: I/O 引脚 1:触控按键
*****************************************************************************/
// _m0k4io=0;//使能PA4触摸键一功能 KEY1
// _m0k3io=0;//使能PA3触摸键一功能 KEY2
_m0k2io=1;//使能PA1触摸键一功能 KEY3
// _m0k1io=0;//使能PA5触摸键一功能 KEY4


_tkme=1;//使能触控按键中断

//0 → 1:开启触控按键检测

_tkst=1;//开启触控按键检测

}

oid __attribute((interrupt(0x08))) isr_Touch(void)
{
//时隙计数器溢出标志位
if(_tkrcov)
{
  if(TouchUpdate==0)
  {
  TouchData=_tkm016dh;//_tk16dh;//
  TK16D =_tk16dh;
  TouchData<<=8;
  TK16D <<=8;
  TouchData|=_tkm016dl;//_tk16dl;//
  TK16D |=_tk16dl;
  }
  _tkst=0;
  TouchUpdate=1;
}
//触控按键模块 16 位 C/F 计数器溢出标志位
  if(_tkcfov)
{
  _tkcfov=0;
}
//触控按键模块 16 位计数器溢出标志位
if(_tk16ov)
{
  _tk16ov=0;
}
}

评分

参与人数 1黑币 +5 收起 理由
南瓜派 + 5 很给力!

查看全部评分

回复

使用道具 举报

ID:74303 发表于 2017-11-5 22:32 | 显示全部楼层
呵呵,合泰触摸都出来了
回复

使用道具 举报

ID:249001 发表于 2017-12-20 17:30 | 显示全部楼层
合泰触控芯片开发一般是用他们提供的软件包进行开发的,不用这么麻烦
回复

使用道具 举报

ID:301571 发表于 2018-4-3 16:29 | 显示全部楼层
MingYY 发表于 2017-12-20 17:30
合泰触控芯片开发一般是用他们提供的软件包进行开发的,不用这么麻烦

合泰提供的软件包直接把RAM占用到99%,怎么破
回复

使用道具 举报

ID:301571 发表于 2018-4-3 16:29 | 显示全部楼层
合泰软件包占用内存太大
回复

使用道具 举报

ID:73327 发表于 2018-4-24 20:54 | 显示全部楼层
合泰软件包占用内存太大了!根本不够用!
回复

使用道具 举报

ID:419594 发表于 2019-7-18 16:04 | 显示全部楼层
很有用的哦!
回复

使用道具 举报

ID:300260 发表于 2020-6-29 17:25 | 显示全部楼层
帮助实在是太大了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表