国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

這是程序,相信有多人有了,我可是研究了很一段時間,新手在成長!呵呵

發布時間:2011-3-29 19:34    發布者:電子玩博會
// Launchpad Touch Cap Sensing
// Touch Key code

#include
// Define User Configuration values //
//----------------------------------//
// Defines WDT SMCLK interval for sensor measurements
#define WDT_meas_setting (DIV_SMCLK_512)
// Defines WDT ACLK interval for delay between measurement cycles
#define WDT_delay_setting (DIV_ACLK_512)

// Sensor settings
#define Num_Sen 5 // Defines number of sensors

// Definitions for use with the WDT settings
#define DIV_ACLK_32768 (WDT_ADLY_1000) /* ACLK/32768 */
#define DIV_ACLK_8192 (WDT_ADLY_250) /* ACLK/8192 */
#define DIV_ACLK_512 (WDT_ADLY_16) /* ACLK/512 */
#define DIV_ACLK_64 (WDT_ADLY_1_9) /* ACLK/64 */
#define DIV_SMCLK_32768 (WDT_MDLY_32) /* SMCLK/32768 */
#define DIV_SMCLK_8192 (WDT_MDLY_8) /* SMCLK/8192 */
#define DIV_SMCLK_512 (WDT_MDLY_0_5) /* SMCLK/512 */
#define DIV_SMCLK_64 (WDT_MDLY_0_064) /* SMCLK/64 */

// Define Hardware Inputs/Outputs
#define CA_Out (0x80) // Comparator output on P1.7
#define CA_Ref (0x02) // Comparator reference on P1.1
#define TA_Clk (0x01) // Timer_A clock input on P1.0

#define S_1 (0x04) // Sensor 1 P1.2
#define S_2 (0x08) // Sensor 2 P1.3
#define S_3 (0x10) // Sensor 3 P1.4
#define S_4 (0x20) // Sensor 4 P1.5
#define S_5 (0x40) // Sensor 4 P1.6

#define CA_1 (P2CA4) // Mux settings: CA+ Vref at CA1
#define CA_2 (P2CA2) // Mux settings: Sensor 1 at CA2
#define CA_3 (P2CA1+P2CA2) // Mux settings: Sensor 2 at CA2
#define CA_4 (P2CA3) // Mux settings: Sensor 3 at CA2
#define CA_5 (P2CA1+P2CA3) // Mux settings: Sensor 4 at CA2
#define CA_6 (P2CA2+P2CA3) // Mux settings: Sensor 4 at CA2

#define LED1 (0x40) // P2.6
#define LED2 (0x80) // P2.7

// Global variables for sensing
unsigned int base_cnt[Num_Sen];
unsigned int meas_cnt[Num_Sen];
int delta_cnt[Num_Sen];
unsigned char key_press[Num_Sen];
const unsigned int KEY_lvl_S[5]={4000,40,40,90,100};
const unsigned int KEY_lvl_W[5]={4000,40,40,90,100};
char key_pressed, key_loc;
int cycles;
unsigned int LEDCount = 4000;
unsigned int LEDTimer = 10;
unsigned int swjudge = 0;

// System Routines
void measure_count(void); // Measures each capacitive sensor
void pulse_LED(void); // LED gradient routine (for demo only)

// Main Function
void main(void)
{
volatile unsigned int i,j;

WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
BCSCTL1 = CALBC1_1MHZ; // Set DCO to 1, 8, 12 or 16MHz
DCOCTL = CALDCO_1MHZ;
BCSCTL1 |= DIVA_0; // ACLK/(0:1,1:2,2:4,3:8)
BCSCTL3 |= LFXT1S_2; // LFXT1 = VLO
IE1 |= WDTIE; // enable WDT interrupt

P1OUT = 0x00; // P1.x = 0
P1DIR = 0xFE; // P1.0 = TACLK input
P1SEL |= 0x81; // P1.0 = TACLK input, P1.7 = CAOUT
P2OUT = 0x00; //
P2SEL = 0x00; // No XTAL
P2DIR |= LED1+LED2;
P2OUT |= LED2;
P2SEL |= LED1;

CAPD = CA_Ref; // disable input buffer for CA+ ref input
CACTL2 = CA_1; // CA1 = CA+ Vref
_EINT(); // Enable interrupts

measure_count(); // Establish an initial baseline capacitance
for (i = 0; i {
if(meas_cnt>1000)
swjudge++;
}
for (i = 0; i base_cnt = meas_cnt;

for(i=15; i>0; i--) // Repeat and average base measurement
{ measure_count();
for (j = 0; j base_cnt[j] = (meas_cnt[j]+base_cnt[j])/2;
}

// Main loop starts here
while (1)
{
key_pressed = 0; // Assume no keys are pressed

measure_count(); // Measure all sensors
for (i = 0; i { delta_cnt = base_cnt - meas_cnt; // Calculate delta: c_change

// Handle baseline measurment for a base C decrease
if (delta_cnt < 0) // If negative: result increased
{ // beyond baseline, i.e. cap decreased
delta_cnt = 0; // Zero out delta for position determination
}
if(swjudge == 1)
{
if (delta_cnt > KEY_lvl_W) // Determine if each key is pressed per a preset threshold
{
key_press = 1; // Specific key pressed
key_pressed = 1; // Any key pressed
P2OUT ^= LED2;
while(LEDTimer--)
{
LEDCount -= 5;
if(LEDCount<10)LEDCount=4000;
pulse_LED();
}
LEDTimer=10;
}
else
key_press = 0;
}
else if(swjudge == 2)
{
if (delta_cnt > KEY_lvl_S) // Determine if each key is pressed per a preset threshold
{
key_press = 1; // Specific key pressed
key_pressed = 1; // Any key pressed
P2OUT ^= LED2;
while(LEDTimer--)
{
LEDCount -= 5;
if(LEDCount<10)LEDCount=4000;
pulse_LED();
}
LEDTimer=10;
}
else
key_press = 0;
}
else
key_press = 0;
}
WDTCTL = WDT_delay_setting; // WDT, ACLK, interval timer

LPM3; // accomodate for genuine changes in sensor C
}
} // End Main

// Measure count result (capacitance) of each sensor
// Routine setup for four sensors, not dependent on Num_Sen value!
void measure_count(void)
{
char i;

TACTL = TASSEL_0+MC_2; // TACLK, cont mode
TACCTL1 = CM_3+CCIS_2+CAP; // Pos&Neg,GND,Cap
CACTL1 |= CAON; // Turn on comparator
for (i = 0; i {
switch (i)
{
case 1: // Sensor 1
CAPD = CA_Ref+S_1; // Diable I/Os for CA1 ref, 1st sensor
CACTL2 = CA_1+CA_2; // CA1 ref, CAx sensor
break;
case 2: // Sensor 2
CAPD = CA_Ref+S_2; // Diable I/Os for CA1 ref, 2nd sensor
CACTL2 = CA_1+CA_3; // CA1 ref, CAx sensor
break;
case 3: // Sensor 3
CAPD = CA_Ref+S_3; // Diable I/Os for CA1 ref, 3rd sensor
CACTL2 = CA_1+CA_4; // CA1 ref, CAx sensor
break;
case 4: // Sensor 4
CAPD = CA_Ref+S_4; // Diable I/Os for CA1 ref, 4th sensor
CACTL2 = CA_1+CA_5; // CA1 ref, CAx sensor
break;
case 0: // Sensor 5
CAPD = CA_Ref+S_5; // Diable I/Os for CA1 ref, 4th sensor
CACTL2 = CA_1+CA_6; // CA1 ref, CAx sensor
break;
}
WDTCTL = WDT_meas_setting; // Set duration of sensor measurment
TACTL |= TACLR; // Clear Timer_A TAR
LPM0; // Wait for WDT interrupt
meas_cnt = TACCR1; // Save result
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
}
CACTL1 &= ~CAON; // Turn off comparator
CAPD = CA_Ref; // Re-init Mux: all sensors = GND
}
void pulse_LED(void)
{
TACTL = TACLR;
CCR0 = 5000;
CCTL0 = OUTMOD_4;//+CCIE;
CCR1 = LEDCount;
CCTL1 = OUTMOD_4+CCIE;
TACTL = TASSEL_2 + MC_3;
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
}
// Watchdog Timer interrupt service routine
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer(void)
{
TACCTL1 ^= CCIS0; // Create SW capture of CCR1
LPM3_EXIT; // Exit LPM3 on reti
}

// Timer A1 interrupt service routine
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A1 (void)
{
TACCTL1 &= ~CCIE; // interrupt disbled
LPM0_EXIT;
}



轉自:電子工程世界( EEWORLD )http //www eeworld com cn/
本文地址:http://m.qingdxww.cn/thread-60386-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久综合网 | 婷婷尹人香蕉久久天堂 | 久热免费在线观看 | 欧美噜噜噜 | 全国男人天堂网 | 一级做α爰片久久毛片 | 中文字幕午夜乱理片 | 久久精品视频99精品视频150 | 岛国大片在线播放高清 | 日本免费看片网站 | 国产亚洲第一 | 女教师韩国无删减完整版 | 99热这就是里面只有精品 | 99久久免费午夜国产精品 | 欧美一区二区三区不卡免费观看 | 在线毛片网 | 天堂网在线最新版www | 日本在线观看高清不卡免v 日本在线观看的免费 | 国产剧情毛片 | 久久福利资源网站免费看 | 亚洲va国产日韩欧美精品 | 国产成人精品一区二区 | 久久综合综合久久 | 亚洲男人天堂影院 | 亚洲伦理天堂 | 久久亚洲精品国产精品婷婷 | 色资源二区在线视频 | 国产福利91精品一区二区 | 亚洲激情视频网站 | 久碰香蕉精品视频在线观看 | 男人扒开你的下面狂躁的视频 | 啊用力点国产嗯快在线观看 | 岛国大片免费 | 四虎精品永久在线网址 | 91国内在线 | 91麻豆国产级在线 | 色天天综合色天天碰 | 亚洲精品高清在线 | 真实乱视频国产免费观看 | 日本免费精品 | 女人扒开腿让男人桶到爽 |