亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? stm8_tsl_rc_iodriver.c

?? 基于STM8 的電容按鍵算法, 方案便宜
?? C
?? 第 1 頁 / 共 2 頁
字號:
/**
  ******************************************************************************
  * @file STM8_TSL_RC_IODriver.c
  * @brief RC Touch Sensing Library for STM8 CPU family.
  * Hardware Driver for I/Os. It manages the I/O on capacitive structures.
  * Use RC load technology.
  * @author STMicroelectronics - MCD Application Team
  * @version V1.1.0
  * @date 21-FEB-2009
  ******************************************************************************
  *
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
  *
  * <h2><center>&copy; COPYRIGHT 2009 STMicroelectronics</center></h2>
  * @image html logo.bmp
  ******************************************************************************
  */

#include "STM8_TSL_RC_IODriver.h"
#include "STM8_TSL_RC_Services.h"

//--------    SECTION DEFINITION FOR THIS FILE   --------------
#if defined(__CSMC__) && defined(USE_PRAGMA_SECTION)
#pragma section [TSL_IO_RAM]
#pragma section @tiny [TSL_IO_RAM0]
#pragma section const {TSL_IO_CONST}
#endif

//--------        LOCAL VARIABLES                 --------------
u32 @tiny FinalMeasurementValue;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//-----             LIBRARY PRIVATE GLOBALS                              -----
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

TOUCH_PORT_Info_T @tiny sTouchIO;

u16 @tiny CounterStop;
u8 @tiny SamplingShifter;
u8 @tiny AcquisitionBitMask;

/* This table is always defined */
const u8 Table_SCKEY_BITS[
  SCKEY_P1_KEY_COUNT
#if NUMBER_OF_SINGLE_CHANNEL_PORTS > 1
  + SCKEY_P2_KEY_COUNT
#endif
#if NUMBER_OF_SINGLE_CHANNEL_PORTS > 2
  + SCKEY_P3_KEY_COUNT
#endif
] = {
    SCKEY_P1_A /* Always defined */
#if SCKEY_P1_KEY_COUNT > 1
    , SCKEY_P1_B
#endif
#if SCKEY_P1_KEY_COUNT > 2
    , SCKEY_P1_C
#endif
#if SCKEY_P1_KEY_COUNT > 3
    , SCKEY_P1_D
#endif
#if SCKEY_P1_KEY_COUNT > 4
    , SCKEY_P1_E
#endif
#if SCKEY_P1_KEY_COUNT > 5
    , SCKEY_P1_F
#endif
#if SCKEY_P1_KEY_COUNT > 6
    , SCKEY_P1_G
#endif
#if SCKEY_P1_KEY_COUNT > 7
    , SCKEY_P1_H
#endif

#if NUMBER_OF_SINGLE_CHANNEL_PORTS > 1
    , SCKEY_P2_A
#if SCKEY_P2_KEY_COUNT > 1
    , SCKEY_P2_B
#endif
#if SCKEY_P2_KEY_COUNT > 2
    , SCKEY_P2_C
#endif
#if SCKEY_P2_KEY_COUNT > 3
    , SCKEY_P2_D
#endif
#if SCKEY_P2_KEY_COUNT > 4
    , SCKEY_P2_E
#endif
#if SCKEY_P2_KEY_COUNT > 5
    , SCKEY_P2_F
#endif
#if SCKEY_P2_KEY_COUNT > 6
    , SCKEY_P2_G
#endif
#if SCKEY_P2_KEY_COUNT > 7
    , SCKEY_P2_H
#endif
#endif

#if NUMBER_OF_SINGLE_CHANNEL_PORTS > 2
    , SCKEY_P3_A
#if SCKEY_P3_KEY_COUNT > 1
    , SCKEY_P3_B
#endif
#if SCKEY_P3_KEY_COUNT > 2
    , SCKEY_P3_C
#endif
#if SCKEY_P3_KEY_COUNT > 3
    , SCKEY_P3_D
#endif
#if SCKEY_P3_KEY_COUNT > 4
    , SCKEY_P3_E
#endif
#if SCKEY_P3_KEY_COUNT > 5
    , SCKEY_P3_F
#endif
#if SCKEY_P3_KEY_COUNT > 6
    , SCKEY_P3_G
#endif
#if SCKEY_P3_KEY_COUNT > 7
    , SCKEY_P3_H
#endif
#endif
  };

#if NUMBER_OF_MULTI_CHANNEL_KEYS > 0
const u16 Table_MCKEY_PORTS[
#if NUMBER_OF_MULTI_CHANNEL_KEYS == 1
  CHANNEL_PER_MCKEY
#endif
#if NUMBER_OF_MULTI_CHANNEL_KEYS == 2
  CHANNEL_PER_MCKEY + CHANNEL_PER_MCKEY
#endif
] = {
    MCKEY1_A_PORT_ADDR
    , MCKEY1_B_PORT_ADDR
    , MCKEY1_C_PORT_ADDR
    , MCKEY1_D_PORT_ADDR
    , MCKEY1_E_PORT_ADDR
#if CHANNEL_PER_MCKEY == 8
    , MCKEY1_F_PORT_ADDR
    , MCKEY1_G_PORT_ADDR
    , MCKEY1_H_PORT_ADDR
#endif
#if NUMBER_OF_MULTI_CHANNEL_KEYS > 1
    , MCKEY2_A_PORT_ADDR
    , MCKEY2_B_PORT_ADDR
    , MCKEY2_C_PORT_ADDR
    , MCKEY2_D_PORT_ADDR
    , MCKEY2_E_PORT_ADDR
#if CHANNEL_PER_MCKEY == 8
    , MCKEY2_F_PORT_ADDR
    , MCKEY2_G_PORT_ADDR
    , MCKEY2_H_PORT_ADDR
#endif
#endif
  };
#endif

#if NUMBER_OF_MULTI_CHANNEL_KEYS > 0
const u8 Table_MCKEY_BITS[
#if NUMBER_OF_MULTI_CHANNEL_KEYS == 1
  CHANNEL_PER_MCKEY
#endif
#if NUMBER_OF_MULTI_CHANNEL_KEYS == 2
  CHANNEL_PER_MCKEY + CHANNEL_PER_MCKEY
#endif
] = {
    MCKEY1_A
    , MCKEY1_B
    , MCKEY1_C
    , MCKEY1_D
    , MCKEY1_E
#if CHANNEL_PER_MCKEY == 8
    , MCKEY1_F
    , MCKEY1_G
    , MCKEY1_H
#endif
#if NUMBER_OF_MULTI_CHANNEL_KEYS > 1
    , MCKEY2_A
    , MCKEY2_B
    , MCKEY2_C
    , MCKEY2_D
    , MCKEY2_E
#if CHANNEL_PER_MCKEY == 8
    , MCKEY2_F
    , MCKEY2_G
    , MCKEY2_H
#endif
#endif
  };
#endif


/*============================================================================
    CRITICAL SECTION !!!! MUST BE ALIGNED IN MEMORY !!!!!!
============================================================================*/

/* This section must be defined in the Linker segment/section at an aligned
   address with the -r2 option */
#pragma section (TSL_IO_ALCODE)

/**
  ******************************************************************************
  * @brief Execute a loop for calibrated number of cycles to allow over sampling
  * @par Parameters:
  * None
  * @retval void None
  * @par Required preconditions:
  * None
  * @warning 
  * This function must be aligned in memory (start at an even address). This is
  * done automatically when pragma "section" is used.
  ******************************************************************************
  */
void TSL_IO_SW_Burst_TestSyncShift(void)
{

#asm
  ld a, _SamplingShifter
  // 3 cycles loop if jump executed; 2 cycles loop if not.
ShiftLoopVih:
  dec a        // 1 cycle
  jrne ShiftLoopVih
#endasm

}


/**
  ******************************************************************************
  * @brief Local sub function to wait for vil on RC structure.
  * @par Parameters:
  * None
  * @retval void None
  * @par Required preconditions:
  * None
  * @warning 
  * This function must be aligned in memory (start at an even address). This is
  * done automatically when pragma "section" is used.
  ******************************************************************************
  */
void TSL_IO_SW_Burst_Wait_Vil(void)
{

#asm
  nop
  ld a, _AcquisitionBitMask
  ldw x, _sTouchIO   // Input data register ...
  incw x
  // Loop = 1 + 1 + 2 + 2 + 2 cycles = 8 cycles
WaitForVil:
  bcp a, (x)  // 1 cycles
  jreq EndWaitForVil
  ldw y, _TIM3_CNTR // 2 cycles; hw counter also used for timeout ...
  cpw y, #0x0E00    // 2 cycles; Timeout compare
  jrult WaitForVil
EndWaitForVil:
#endasm

}


/**
  ******************************************************************************
  * @brief Local sub function to wait for vih on RC structure.
  * @par Parameters:
  * None
  * @retval void None
  * @par Required preconditions:
  * None
  * @warning 
  * This function must be aligned in memory (start at an even address). This is
  * done automatically when pragma "section" is used.
  ******************************************************************************
  */
void TSL_IO_SW_Burst_Wait_Vih(void)
{

#asm
  nop
  ld a, _AcquisitionBitMask
  ldw x, _sTouchIO   // Input data register ...
  incw x
  // Loop = 1 + 1 + 2 + 2 + 2 cycles = 8 cycles
WaitForVih:
  bcp a, (x)  // 1 cycles
  jrne EndWaitForVih
  ldw y, _TIM3_CNTR // 2 cycles; hw counter also used for timeout ...
  cpw y, #0x0E00    // 2 cycles; Timeout compare
  jrult WaitForVih
EndWaitForVih:
#endasm
}

/* Switch back the code section to the default */
#pragma section ()

/*============================================================================
  END OF CRITICAL SECTION !!!! MUST BE ALIGNED IN MEMORY !!!!!!
============================================================================*/

#if defined(__CSMC__) && defined(USE_PRAGMA_SECTION)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费视频免费观看| 国产毛片一区二区| 国产69精品久久99不卡| 精品日韩成人av| 风间由美中文字幕在线看视频国产欧美 | www国产亚洲精品久久麻豆| 蜜桃一区二区三区在线观看| 欧美日韩在线一区二区| 九九久久精品视频| 国产精品欧美一级免费| 91在线观看污| 亚洲午夜国产一区99re久久| 91精品国产福利在线观看 | 国产在线播精品第三| 亚洲欧美怡红院| 久久久美女毛片| 在线不卡a资源高清| 高清不卡在线观看| 久久精品久久99精品久久| 日韩理论片中文av| 欧美精品一区二区三区四区| 欧美精品久久一区| 在线观看视频欧美| 91久久精品网| 成人av在线看| 成人久久久精品乱码一区二区三区| 久久免费看少妇高潮| 欧美草草影院在线视频| 日韩一区二区在线观看视频| 欧美影院午夜播放| av一区二区久久| 99精品国产91久久久久久| 成人高清视频在线观看| 国产精品一品二品| 国产麻豆精品久久一二三| 黄色日韩三级电影| 国产精品一色哟哟哟| 国产精品羞羞答答xxdd| 国产乱妇无码大片在线观看| 免费看欧美女人艹b| 麻豆91在线看| 99热国产精品| 欧美午夜精品免费| 日韩一级二级三级精品视频| 日韩免费电影网站| 久久久欧美精品sm网站| 久久久99精品免费观看| 久久久天堂av| 一区二区国产盗摄色噜噜| 天天操天天色综合| 国产精品一品二品| 欧美吞精做爰啪啪高潮| 久久综合久色欧美综合狠狠| 一区二区三区精品在线观看| 日韩av电影免费观看高清完整版在线观看| 天堂在线一区二区| 波多野结衣精品在线| 日韩午夜av一区| 亚洲精品国产a久久久久久 | 精品一区二区精品| 成人免费毛片片v| 欧美一级理论片| 亚洲自拍偷拍欧美| 欧美日韩精品是欧美日韩精品| 日韩美女视频一区二区在线观看| 自拍偷拍国产亚洲| 国产白丝精品91爽爽久久| 欧美成人伊人久久综合网| 亚洲美女在线一区| 91福利资源站| 亚洲国产精品一区二区www| 菠萝蜜视频在线观看一区| 国产视频911| 成人动漫av在线| 中文字幕在线不卡一区二区三区| 国产成人午夜99999| 久久精品视频免费| 国产美女精品人人做人人爽| 久久久久久久久久久久久夜| 国产一区二区三区四区五区入口 | 欧美日韩一区二区电影| 亚洲日本护士毛茸茸| av网站一区二区三区| 一色桃子久久精品亚洲| 在线亚洲+欧美+日本专区| 一区二区在线电影| 日韩欧美一区二区视频| 国产精品亚洲视频| 亚洲成a人片综合在线| 欧美精品日日鲁夜夜添| 国产一区二区三区综合| 中文字幕亚洲在| 在线成人高清不卡| 丰满岳乱妇一区二区三区| 亚洲小少妇裸体bbw| 日韩视频一区二区| 色综合久久六月婷婷中文字幕| 免费在线观看一区| 亚洲婷婷综合色高清在线| 欧美一区二区视频免费观看| 国产·精品毛片| 亚洲国产精品综合小说图片区| 久久久精品欧美丰满| 欧美人体做爰大胆视频| 99re这里只有精品视频首页| 久久99久久久欧美国产| 日韩电影免费在线观看网站| 一区二区三区四区在线免费观看 | 欧美日韩一二三区| 色综合激情五月| 91蜜桃在线免费视频| 狠狠色2019综合网| 国产在线不卡视频| 成人美女在线观看| a亚洲天堂av| 色综合久久综合网| 91精品福利视频| 在线一区二区三区四区五区| 欧美亚洲动漫制服丝袜| 欧美日韩不卡一区| 色成人在线视频| 欧美久久久一区| 久久这里只有精品6| 欧美韩国日本综合| 国产精品国产精品国产专区不蜜| 亚洲欧美日韩综合aⅴ视频| 伊人色综合久久天天人手人婷| 天天操天天干天天综合网| 国产精品一区在线观看你懂的| 国产成人精品一区二区三区网站观看| www.欧美亚洲| 欧美不卡视频一区| 亚洲自拍偷拍麻豆| 午夜国产精品一区| 成人免费毛片aaaaa**| 欧美群妇大交群的观看方式| 欧美一区日本一区韩国一区| 亚洲欧洲成人精品av97| 开心九九激情九九欧美日韩精美视频电影 | 一区二区三区在线观看欧美| 国产综合色精品一区二区三区| 在线观看精品一区| 久久只精品国产| 午夜欧美电影在线观看| 99精品久久只有精品| 久久色视频免费观看| 日本麻豆一区二区三区视频| 色天使久久综合网天天| 国产精品乱人伦| 国产成人夜色高潮福利影视| 精品国产一区二区三区不卡 | 久久婷婷国产综合精品青草| 免费看日韩精品| 日韩丝袜情趣美女图片| 视频一区二区不卡| 91网站黄www| 亚洲最新视频在线观看| 色吊一区二区三区| 青青草国产精品97视觉盛宴| 欧美精品少妇一区二区三区| 亚洲美女少妇撒尿| 欧美日韩亚洲综合一区| 蜜臀精品久久久久久蜜臀 | 久久精品综合网| 国产ts人妖一区二区| 亚洲另类色综合网站| 在线不卡中文字幕播放| 国产高清无密码一区二区三区| 精品免费99久久| 91久久线看在观草草青青| 日韩av在线发布| 国产精品的网站| 精品国产一区二区三区四区四 | 亚洲男人都懂的| 欧美日韩国产另类不卡| 国产精品自在在线| 一区二区三区.www| 国产日产欧美一区二区三区| 欧美日韩mp4| 精品在线播放免费| 日韩精品成人一区二区三区| 日韩美女视频一区二区| 国产欧美视频一区二区| 久久蜜桃av一区精品变态类天堂| 一本大道久久a久久综合| yourporn久久国产精品| 国产精品99久久久久久似苏梦涵| 男女激情视频一区| 日韩精品视频网| 亚洲国产欧美日韩另类综合| 亚洲欧洲综合另类在线| 中文av一区特黄| 综合欧美亚洲日本| 国产精品网曝门| 国产精品嫩草99a| 一区在线中文字幕| 亚洲欧美日本在线| 一区二区三区四区乱视频| 国产精品初高中害羞小美女文| 国产日产欧美精品一区二区三区|