|
初始化中,對(duì)觸摸靈敏度自動(dòng)校正調(diào)節(jié)
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 位定時(shí) / 計(jì)數(shù)器寄存器 時(shí)隙計(jì)數(shù)器溢出設(shè)定的時(shí)間為 (256-TKTMR[7:0]) × 32
*****************************************************************************/
_tktmr=232;//時(shí)隙計(jì)數(shù)器溢出時(shí)間:(256-TKTMR[7:0])X32 226
/*****************************************************************************
TK16S(1~0):觸控按鍵模塊 16 位計(jì)數(shù)器時(shí)鐘選擇位
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;
/*****************************************************************************
參考振蕩器內(nèi)建電容選擇 振蕩器內(nèi)建電容選擇為 (TKM0RO[9:0] × 50pF)/1024
*****************************************************************************/
_tkm0rol= Slottimer;//159 134
_tkm0roh=Slottimer>>8;//0;
/******TKM0C0********/
/*****************************************************************************
復(fù)用按鍵選擇 00 =KEY1 01 =KEY2 10 =KEY3 11 :KEY4
*****************************************************************************/
_m0mxs1=0;
_m0mxs0=1;//復(fù)用KEY2
/*****************************************************************************
倍頻功能控制 0 =除能 1 =使能
*****************************************************************************/
_m0dfen=0;
/*****************************************************************************
濾波器功能控制 0 =除能 1 =使能
*****************************************************************************/
_m0filen=1;
/*****************************************************************************
C/F振蕩器由M0SOF2~M0SOF0決定 0 = 由 M0SOF2~M0SOF0 位控制 1 =由硬件電路控制
*****************************************************************************/
_m0sofc=0;
/*****************************************************************************
選擇按鍵振蕩器和參考振蕩器作為選擇 C/F 振蕩器時(shí)頻率選擇位 (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********/
/*****************************************************************************
時(shí)隙計(jì)數(shù)器選擇 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:開(kāi)啟觸控按鍵檢測(cè)
_tkst=1;//開(kāi)啟觸控按鍵檢測(cè)
}
oid __attribute((interrupt(0x08))) isr_Touch(void)
{
//時(shí)隙計(jì)數(shù)器溢出標(biāo)志位
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 計(jì)數(shù)器溢出標(biāo)志位
if(_tkcfov)
{
_tkcfov=0;
}
//觸控按鍵模塊 16 位計(jì)數(shù)器溢出標(biāo)志位
if(_tk16ov)
{
_tk16ov=0;
}
}
|
評(píng)分
-
查看全部評(píng)分
|