⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exercise-1.c

📁 TI MSP430针对cap sense 按键的源码, 可实现单击或滑动键, 如IPOD上的人机接口.
💻 C
字号:
/* Exercise 1

    A simple RTC demo for the FG439, constructed from elements of examples:
        fet440_lpm3.c
        fet440_lcd_03.c
        fet440_fll_02.c
*/

#include <msp430xG43x.h>

/* LCD configuration from fet440_lcd_03.c */
int value = 0;

char *LCD = LCDMEM;

const char digit[10] =
{
    0xB7,  // "0"    LCD segments a+b+c+d+e+f
    0x12,  // "1"
    0x8F,  // "2"
    0x1F,  // "3"
    0x3A,  // "4"
    0x3D,  // "5"
    0xBD,  // "6"
    0x13,  // "7"
    0xBF,  // "8"
    0x3F   // "9"
};

void fet440_fll_02(void)
{
    /* This routine is based on code from fet440_fll_02.c */
    FLL_CTL0 |= (DCOPLUS | XCAP18PF);         // DCO+ set, freq = xtal x D x N+1
    SCFI0 |= FN_4;                            // x2 DCO freq, 8MHz nominal DCO
    SCFQCTL = 31;                             // (31+1) x 32768 x 2 = 2.048 MHz
}

void fet440_lcd_03(void)
{
    int i;
    int x;

    LCDCTL = LCDSG0_1 | LCD4MUX | LCDON;                // 4-Mux LCD, segments S0-S15
    P5SEL = BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2;    // Select P5.2-7 as Com and Rxx

    /* Clear the LCD memory to clear the display */
    for (i = 0;  i < 19;  i++)
        LCD[i] = 0;

    _EINT();
    for (;;)
    {
        LPM3;                             	// Enter LPM3
        value++;
        x = value;
        /* Display the contents of the variable value */
        for (i = 0;  i < 5;  i++)
        {
            LCD[i] = digit[x%10];        	// Remainder = character in table to display
            x /= 10;
        }
    }
}

void main(void)
{
    /* This routine is based on code from fet440_lpm3.c */

    WDTCTL = WDTPW | WDTHOLD;                 // Stop WDT

    /* Code from fet440_fll_02.c to get the clock up to speed */
    fet440_fll_02();

    IE2 |= BTIE;                              // Enable BT interrupt

    BTCTL = BT_fLCD_DIV64 | BT_fCLK2_DIV128 | BT_fCLK2_ACLK_DIV256;

    P1DIR = 0xFF;                             // All P1.x outputs
    P1OUT = 0;                                // All P1.x reset
    P2DIR = 0xFF;                             // All P2.x outputs
    /*从低功耗考虑,P2.5设为输入,lierda修改*/
    P2DIR &= ~BIT5

    P2OUT = 0;                                // All P2.x reset
    P3DIR = 0xFF;                             // All P3.x outputs
    P3OUT = 0;                                // All P3.x reset
    P4DIR = 0xFF;                             // All P4.x outputs
    P4OUT = 0;                                // All P4.x reset
    P5DIR = 0xFF;                             // All P5.x outputs
    P5OUT = 0;                                // All P5.x reset
    P6DIR = 0xFF;                             // All P6.x outputs
    P6OUT = 0;                                // All P6.x reset

    fet440_lcd_03();
}

#pragma vector=BASICTIMER_VECTOR
__interrupt void basic_timer_interrupt(void)
{
    _BIC_SR_IRQ(LPM3_bits);                   // Clear LPM3 bits from 0(SR)
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -