亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产一区二区女| 成人av午夜电影| xf在线a精品一区二区视频网站| 亚洲一区二区免费视频| 在线视频一区二区三| 亚洲精品国产精品乱码不99| 欧美日韩三级在线| 国产激情精品久久久第一区二区 | 国产一区欧美二区| 麻豆高清免费国产一区| 国产精品久久久久久久岛一牛影视 | 美女一区二区久久| 麻豆91在线观看| 国内欧美视频一区二区| 一区二区高清在线| 久久久国产精华| 制服丝袜中文字幕亚洲| 成人午夜视频免费看| 日韩二区三区四区| 国产精品麻豆欧美日韩ww| 欧美精品123区| 成人sese在线| 色综合天天性综合| 亚洲最色的网站| 亚洲bdsm女犯bdsm网站| 国产色婷婷亚洲99精品小说| 欧美一区二区视频观看视频| 一本一道久久a久久精品| 色妞www精品视频| 国产一区欧美一区| 99re8在线精品视频免费播放| 精品一区二区三区av| 丝袜美腿成人在线| 亚洲自拍另类综合| 麻豆国产精品一区二区三区| 国产黄色精品网站| 日本电影亚洲天堂一区| 7777精品伊人久久久大香线蕉完整版| 精品日韩欧美在线| 欧美日韩国产影片| 一本大道综合伊人精品热热| 欧美高清dvd| 久久久午夜精品理论片中文字幕| 亚洲手机成人高清视频| 国产精品毛片a∨一区二区三区 | 成人av网站在线观看| 欧美性大战xxxxx久久久| 色激情天天射综合网| 91精品国产综合久久国产大片| 欧美精品一区二区三区高清aⅴ | 欧美亚洲禁片免费| 久久夜色精品一区| 亚洲国产成人av| 亚洲成人一区在线| 成人永久免费视频| 91麻豆精品国产无毒不卡在线观看 | 日韩一区二区三区视频在线| 欧美一区二区三区色| 国产精品毛片无遮挡高清| 日韩av在线发布| 一本色道a无线码一区v| 久久人人爽爽爽人久久久| 亚洲电影在线播放| 成人avav影音| 亚洲精品一区二区三区蜜桃下载 | 国产福利电影一区二区三区| 欧美日韩久久久一区| 国产精品少妇自拍| 另类小说欧美激情| 国产精品1区2区| 99久久久久久| 欧美精品一区在线观看| 午夜一区二区三区视频| 日韩成人伦理电影在线观看| 99精品桃花视频在线观看| 26uuu国产电影一区二区| 午夜精品视频在线观看| 91蜜桃免费观看视频| 欧美最新大片在线看| 中文字幕高清不卡| 亚洲地区一二三色| 色综合久久久久综合99| 国产精品欧美久久久久无广告| 久久精品国产亚洲aⅴ| 欧美精品日韩一区| 亚洲成人先锋电影| 欧美午夜理伦三级在线观看| 亚洲三级在线播放| 成人精品在线视频观看| 国产欧美一区二区三区在线老狼| 亚洲色图20p| 99久久er热在这里只有精品15| 久久久99精品久久| 国产毛片精品视频| 2023国产精品| 国产一区福利在线| 精品成人一区二区三区| 激情深爱一区二区| 精品国产3级a| 国产一区视频导航| 久久精品一区二区| 国产999精品久久久久久绿帽| 91国内精品野花午夜精品 | 国产乱妇无码大片在线观看| 精品久久久久av影院| 六月丁香综合在线视频| 欧美一级日韩免费不卡| 秋霞影院一区二区| 99久久99精品久久久久久| 国产精品美女久久久久久久久久久 | 亚洲成av人**亚洲成av**| 欧美综合视频在线观看| 亚洲五月六月丁香激情| 欧美三级日韩在线| 日本在线不卡视频| 欧美成人午夜电影| 国产成人综合自拍| 亚洲欧洲美洲综合色网| 韩国欧美国产1区| 久久伊人中文字幕| 国产69精品久久久久777| 国产精品久久久久一区| 色综合久久久久综合| 亚洲福利视频导航| 精品国产精品网麻豆系列| 国产乱淫av一区二区三区 | 国产麻豆91精品| 中日韩av电影| 欧美做爰猛烈大尺度电影无法无天| 在线观看一区二区视频| 欧美激情一区二区三区蜜桃视频| 国产真实乱偷精品视频免| 欧美变态口味重另类| 精品一二线国产| 欧美激情在线免费观看| jiyouzz国产精品久久| 精品久久久久香蕉网| 国产在线看一区| 中文一区在线播放| 91福利社在线观看| 免费观看日韩电影| 中文字幕欧美三区| 欧美午夜精品免费| 久久99精品国产91久久来源| 久久久久久久综合日本| 色综合色狠狠综合色| 天天射综合影视| 久久久久久免费网| 色噜噜偷拍精品综合在线| 日韩电影在线一区二区三区| 久久精品夜夜夜夜久久| 在线观看国产日韩| 精品午夜久久福利影院| 中文字幕在线观看一区| 91.xcao| 国产精品亚洲一区二区三区妖精 | 亚洲另类一区二区| 制服丝袜亚洲色图| 成人91在线观看| 一区二区三区中文字幕精品精品 | 一区二区中文视频| 91精品久久久久久久91蜜桃 | 91精品国产一区二区三区| 国产精品一区一区| 五月天亚洲精品| 中文在线资源观看网站视频免费不卡| 欧美亚洲尤物久久| 国产精品99久| 首页国产欧美日韩丝袜| 日本一区二区免费在线| 91精品国产手机| 一本高清dvd不卡在线观看| 精品一区二区三区在线播放| 亚洲精品国产品国语在线app| 久久欧美中文字幕| 91精品婷婷国产综合久久竹菊| 91亚洲精品久久久蜜桃| 精品亚洲porn| 亚洲成人av在线电影| 国产精品久久精品日日| 欧美大肚乱孕交hd孕妇| 久久国产生活片100| 一区二区三区精品在线| 亚洲国产成人私人影院tom| 欧美一区二区三区在线电影| 在线中文字幕一区| 99久久夜色精品国产网站| 精品亚洲成av人在线观看| 日韩精品一级中文字幕精品视频免费观看 | 日本中文字幕一区| 亚洲精选视频在线| 中文字幕+乱码+中文字幕一区| 精品久久久三级丝袜| 91麻豆精品91久久久久同性| 欧美三区免费完整视频在线观看| av一本久道久久综合久久鬼色| 国产剧情一区二区三区| 久久国产精品99精品国产| 五月婷婷色综合| 一区二区在线免费|