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

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

?? f4270_altimeter_sb_cce.c

?? 德州儀器的msp430單片機
?? C
?? 第 1 頁 / 共 3 頁
字號:
//------------------------------------------------------------------------------
// MSP430F4270 Altimeter Demo - C Language Version - SoftBaugh LCD
//
// Description:
//   PRESSURE SENSOR IS SAMPLED/AVG'D 64X WITH OSR=1024, fSD16=32kHz, 16-bit
//   TEMP SENSOR IS SAMPLED/AVG'D 1X WITH OSR=1024, fSD16=32kHz, 16-bit
//
//                  MSP430F4270
//               +---------------+     SoftBaugh SBLCDA4 LCD
//               |               |    +----------------------+
//   IN+     o---|A0+      S0-Sxx|--->|                      |
//   IN-     o---|A0-   COM0-COM3|--->|            4-Mux LCD |
//   VBridge o--+|P6.6           |    +----------------------+
//              +|P6.7           |
//           o---|VRef           |
//               |               |
//               |       XIN/XOUT|<---32.768KHz Watch Crystal
//               |           P1.0|<---Button (low-active)
//               |           P1.1|<---Button (low-active)
//               +---------------+
//
// Andreas Dannenberg
// Texas Instruments Inc.
// June 23rd, 2005
// Built with CCE for MSP430 Version: 1.00
//------------------------------------------------------------------------------
// THIS PROGRAM IS PROVIDED "AS IS". TI MAKES NO WARRANTIES OR
// REPRESENTATIONS, EITHER EXPRESS, IMPLIED OR STATUTORY,
// INCLUDING ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR
// COMPLETENESS OF RESPONSES, RESULTS AND LACK OF NEGLIGENCE.
// TI DISCLAIMS ANY WARRANTY OF TITLE, QUIET ENJOYMENT, QUIET
// POSSESSION, AND NON-INFRINGEMENT OF ANY THIRD PARTY
// INTELLECTUAL PROPERTY RIGHTS WITH REGARD TO THE PROGRAM OR
// YOUR USE OF THE PROGRAM.
//
// IN NO EVENT SHALL TI BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
// CONSEQUENTIAL OR INDIRECT DAMAGES, HOWEVER CAUSED, ON ANY
// THEORY OF LIABILITY AND WHETHER OR NOT TI HAS BEEN ADVISED
// OF THE POSSIBILITY OF SUCH DAMAGES, ARISING IN ANY WAY OUT
// OF THIS AGREEMENT, THE PROGRAM, OR YOUR USE OF THE PROGRAM.
// EXCLUDED DAMAGES INCLUDE, BUT ARE NOT LIMITED TO, COST OF
// REMOVAL OR REINSTALLATION, COMPUTER TIME, LABOR COSTS, LOSS
// OF GOODWILL, LOSS OF PROFITS, LOSS OF SAVINGS, OR LOSS OF
// USE OR INTERRUPTION OF BUSINESS. IN NO EVENT WILL TI'S
// AGGREGATE LIABILITY UNDER THIS AGREEMENT OR ARISING OUT OF
// YOUR USE OF THE PROGRAM EXCEED FIVE HUNDRED DOLLARS
// (U.S.$500).
//
// Unless otherwise stated, the Program written and copyrighted
// by Texas Instruments is distributed as "freeware".  You may,
// only under TI's copyright in the Program, use and modify the
// Program without any charge or restriction.  You may
// distribute to third parties, provided that you transfer a
// copy of this license to the third party and the third party
// agrees to these terms by its first use of the Program. You
// must reproduce the copyright notice and any other legend of
// ownership on each copy or partial copy, of the Program.
//
// You acknowledge and agree that the Program contains
// copyrighted material, trade secrets and other TI proprietary
// information and is protected by copyright laws,
// international copyright treaties, and trade secret laws, as
// well as other intellectual property laws.  To protect TI's
// rights in the Program, you agree not to decompile, reverse
// engineer, disassemble or otherwise translate any object code
// versions of the Program to a human-readable form.  You agree
// that in no event will you alter, remove or destroy any
// copyright notice included in the Program.  TI reserves all
// rights not specifically granted under this license. Except
// as specifically provided herein, nothing in this agreement
// shall be construed as conferring by implication, estoppel,
// or otherwise, upon you, any license or other right under any
// TI patents, copyrights or trade secrets.
//
// You may not use the Program in non-TI devices.
//------------------------------------------------------------------------------

#include <math.h>
#include "msp430x42x0.h"

// Circuit related definitions
#define BRIDGE_SUPPLY       (0xc0)              // IO pins P6.6/P6.7 for
                                                // pos. bridge rail
#define PUSH_BUTTON1        (0x01)              // Button on pin P1.0
#define PUSH_BUTTON2        (0x02)              // Button on pin P1.1

// Constants for math calculations (for altitude/pressure measurement)
#define VREF_VOLT_EXT   (1.26923077f)           // External ref voltage
#define GAIN_32         (28.35f)                // Typ. gain for 32x
#define NR_BITS         (32767)                 // 15 bits of resolution
#define UV_PER_LSB      (1000000.0f * VREF_VOLT_EXT / 2 / GAIN_32 / NR_BITS)
#define MB_PER_UV       (10.0f / 120.0f)        // 10mbar / 120uV @ V_Bridge = 3V
#define NORMAL_P        (1013.25f)              // Normal air pressure in mbar

// Constants for math calculations (for temperature measurement)
#define VREF_VOLT_INT   (1.20f)                 // Internal ref voltage
#define MV_PER_LSB      (1000.0f * VREF_VOLT_INT / 2 / 32767)
#define K_PER_MV        (1.0f / 1.32f)

// Misc definitions
#define MODE_TIMEOUT    (240)                   // Max time for A/P measurement
                                                // (in s)

enum
{
  PM_MEASURE_A,                                 // Mode - Measure Altitude
  PM_MEASURE_P,                                 // Mode - Measure Pressure
  PM_DISPLAY_TIME,                              // Mode - Display Time
  PM_MEASURE_TEMP,                              // Mode - Measure Temperature
  PM_DISPLAY_CONTR,                             // Mode - Display Contrast
  PM_CAL_A,                                     // Mode - Cal Altitude
  PM_CAL_P,                                     // Mode - Cal Pressure
  PM_SET_TIME,                                  // Mode - Set Time
  PM_CAL_TEMP,                                  // Mode - Cal Temperature
  PM_SET_CONTR                                  // Mode - Set Contrast
};

// LCD segment definitions (SoftBaugh SBLCDA4)
#define SEG_D   0x80                            //  AAAA
#define SEG_C   0x40                            // F    B
#define SEG_B   0x20                            // F    B
#define SEG_A   0x10                            //  GGGG
#define SEG_H   0x08                            // E    C
#define SEG_E   0x04                            // E    C
#define SEG_G   0x02                            //  DDDD
#define SEG_F   0x01

const char LCD_Tab[] = {
  SEG_A + SEG_B + SEG_C + SEG_D + SEG_E + SEG_F,          // Displays "0"
  SEG_B + SEG_C,                                          // Displays "1"
  SEG_A + SEG_B + SEG_D + SEG_E + SEG_G,                  // Displays "2"
  SEG_A + SEG_B + SEG_C + SEG_D + SEG_G,                  // Displays "3"
  SEG_B + SEG_C + SEG_F + SEG_G,                          // Displays "4"
  SEG_A + SEG_C + SEG_D + SEG_F + SEG_G,                  // Displays "5"
  SEG_A + SEG_C + SEG_D + SEG_E + SEG_F + SEG_G,          // Displays "6"
  SEG_A + SEG_B + SEG_C,                                  // Displays "7"
  SEG_A + SEG_B + SEG_C + SEG_D + SEG_E + SEG_F + SEG_G,  // Displays "8"
  SEG_A + SEG_B + SEG_C + SEG_D + SEG_F + SEG_G,          // Displays "9"
  SEG_A + SEG_B + SEG_C + SEG_E + SEG_F + SEG_G,          // Displays "A"
  SEG_B + SEG_C + SEG_E + SEG_F + SEG_G,                  // Displays "H"
  SEG_A + SEG_D + SEG_E + SEG_F,                          // Displays "C"
  SEG_D + SEG_E + SEG_F,                                  // Displays "L"
  SEG_A + SEG_B + SEG_E + SEG_F + SEG_G,                  // Displays "P"
  0x00                                                    // Displays Blank
};

#define DIG_MINUS   (SEG_G)                               // Displays '-'
#define DIG_T       (SEG_D + SEG_E + SEG_F + SEG_G)       // Displays 't'
#define DIG_DEGR    (SEG_A + SEG_B + SEG_F + SEG_G)
#define DIG_F       (SEG_A + SEG_E + SEG_F + SEG_G)       // Displays 'F'
#define DIG_L       (SEG_D + SEG_E + SEG_F)               // Displays 'L'
#define DIG_O       (SEG_A + SEG_B + SEG_C + SEG_D + SEG_E + SEG_F) // Displays 'O'
#define DIG_H       (SEG_B + SEG_C + SEG_E + SEG_F + SEG_G)         // Displays 'H'
#define DIG_I       (SEG_B + SEG_C)                          // Displays 'I'
#define DIG_C       (SEG_A + SEG_D + SEG_E + SEG_F)          // Displays 'C'
#define DIG_D       (SEG_B + SEG_C + SEG_D + SEG_E + SEG_G)  // Displays 'd'
#define DIG_N       (SEG_C + SEG_E + SEG_G)                  // Displays 'n'
#define DIG_E       (SEG_A + SEG_D + SEG_E + SEG_F + SEG_G)  // Displays 'E'
#define DIG_S       (SEG_A + SEG_C + SEG_D + SEG_F + SEG_G)  // Displays 'S'

// Global vars for SD16 operation
static unsigned int SD16TempCtr;                // Number of resuts collected
static long SD16Temp;                           // Temp sum register
static long SD16Result;                         // Final averaged result
static unsigned int SD16NrConversions;

// Global vars that control program flow
static unsigned char ProgramMode = PM_DISPLAY_TIME; // Current program mode
static unsigned char PB1DownCtr = 0;            // Keeps track of button press
static unsigned char PB2DownCtr = 0;            // duration
static unsigned int StatusFlags = 0;            // Status flag register
static unsigned char ModeCtr = 0;               // Time in current mode [s]

#define SF_BT_TICK        0x0001                // Status flags bit definitions
#define SF_PB1_RELEASED   0x0002
#define SF_PB2_RELEASED   0x0004
#define SF_SD16_START     0x0008
#define SF_SD16_READY     0x0010
#define SF_UPD_DISPLAY    0x0020
#define SF_PB1_PRESSED    0x0040
#define SF_PB2_PRESSED    0x0080
#define SF_PB1_DOWN       0x0100
#define SF_PB2_DOWN       0x0200
#define SF_HOLD_DISPL     0x0400

#define AF_DISPLAY_DEGF   0x01

static int CalConstA;                           // Temporary cal vars
static int CalConstP;
static int CalConstT;
static char DispContr;                          // Display contrast setting
static char AppFlags;                           // Misc application flags

// Global vars for RTC
static unsigned char Secs = 0x00;               // RTC, default time 12:00:00
static unsigned char Mins = 0x00;
static unsigned char Hrs = 0x12;

#pragma DATA_SECTION(CalConstA_Flash, ".infoA") // Info Flash Memory Block A
static int CalConstA_Flash;                     // Cal const for altitude
#pragma DATA_SECTION(CalConstP_Flash, ".infoA") // Info Flash Memory Block A
static int CalConstP_Flash;                     // Cal const for pressure
#pragma DATA_SECTION(CalConstT_Flash, ".infoA") // Info Flash Memory Block A
static int CalConstT_Flash;                     // Cal const for temperature
#pragma DATA_SECTION(DispContr_Flash, ".infoA") // Info Flash Memory Block A
static char DispContr_Flash;                    // Const for display contrast
#pragma DATA_SECTION(AppFlags_Flash, ".infoA")  // Info Flash Memory Block A
static char AppFlags_Flash;                     // Misc application flags

// Function prototypes
void Init_Sys(void);
unsigned short _bcd_add_short(unsigned short a, unsigned short b);
void RTC_Tick(unsigned int TickMins);
void RTC_Dec(unsigned int TickMins);
void InitConversion(void);
void StartNextConversion(void);
void StopConversion(void);
void StoreCalInFlash(void);
void Disp_Value(unsigned int ShiftLeft, int Value);
void Disp_BCD(unsigned long Value);
//------------------------------------------------------------------------------
void main(void)
{
  Init_Sys();

  CalConstA = CalConstA_Flash;                  // Load calibration constants
  CalConstP = CalConstP_Flash;
  CalConstT = CalConstT_Flash;
  DispContr = DispContr_Flash == 0xff ? 0 : DispContr_Flash;
  AppFlags = AppFlags_Flash;

  __enable_interrupt();

  Disp_BCD(0x08888888);                         // Test LCD (all segs on)

  while (1)
  {
    __bis_SR_register(LPM3_bits);               // Enter LPM3, wait for wakeup

    if (StatusFlags & SF_BT_TICK)
    {
      RTC_Tick(0);                              // Advance RTC seconds

      switch (ProgramMode)
      {
        case PM_MEASURE_A :
        case PM_MEASURE_P :
          if (++ModeCtr > MODE_TIMEOUT)         // Timeout?
          {
            StopConversion();
            ProgramMode = PM_DISPLAY_TIME;      // Exit current mode
            StatusFlags |= SF_UPD_DISPLAY;      // Update RTC display
          }
          break;
        case PM_CAL_A  :
        case PM_CAL_P  :
                                                // No action here. Next SD16
                                                // conversion is started
                                                // directly after current.
          break;
        case PM_MEASURE_TEMP :
        case PM_CAL_TEMP :
          StatusFlags |= SF_SD16_START;         // Trigger SD16 conversion
          break;
        case PM_DISPLAY_TIME :
        case PM_SET_TIME :
          StatusFlags |= SF_UPD_DISPLAY;        // Update RTC display
          break;
      }
      StatusFlags &= ~SF_BT_TICK;               // Event processed
    }

    if (((StatusFlags & (SF_PB1_PRESSED + SF_PB2_PRESSED)) ==
        SF_PB1_PRESSED + SF_PB2_PRESSED) && (PB1DownCtr > 62) &&
        (PB2DownCtr > 62))

    // Both buttons pressed for >1s
    {
      switch (ProgramMode)                      // Yes, update Program Mode
      {
        case PM_MEASURE_A :
          ProgramMode = PM_CAL_A;
          Disp_BCD(0x0fcadfff);                 // Display 'CAL    '
          StatusFlags |= SF_HOLD_DISPL;         // Hold display contents
          break;
        case PM_MEASURE_P :
          ProgramMode = PM_CAL_P;
          Disp_BCD(0x0fcadfff);                 // Display 'CAL    '
          StatusFlags |= SF_HOLD_DISPL;         // Hold display contents
          break;
        case PM_DISPLAY_TIME :
          ProgramMode = PM_SET_TIME;
          LCDM1 = 0x00;                         // Display 'SEt    '
          LCDM2 = DIG_S;
          LCDM3 = DIG_E;
          LCDM4 = DIG_T;
          LCDM5 = 0x00;
          LCDM6 = 0x00;
          LCDM7 = 0x00;
          StatusFlags |= SF_HOLD_DISPL;         // Hold display contents
          break;
        case PM_MEASURE_TEMP :
          ProgramMode = PM_CAL_TEMP;
          Disp_BCD(0x0fcadfff);                 // Display 'CAL    '
          StatusFlags |= SF_HOLD_DISPL;         // Hold display contents
          break;
        case PM_DISPLAY_CONTR :

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产中文字幕一区| 亚洲成a人片在线不卡一二三区 | 中文字幕一区二区三区四区 | 自拍偷拍欧美激情| 91一区二区三区在线观看| 亚洲欧洲日韩综合一区二区| 色悠悠久久综合| 亚洲不卡一区二区三区| 日韩区在线观看| 国产馆精品极品| 亚洲激情自拍视频| 欧美一区二区三区日韩| 国产成人精品一区二区三区四区| 国产精品乱码一区二区三区软件| 日本韩国欧美在线| 青青草原综合久久大伊人精品 | 亚洲免费资源在线播放| 色综合久久天天| 爽好久久久欧美精品| 精品国产a毛片| 99久免费精品视频在线观看 | 免费在线观看一区| 亚洲国产精品v| 欧美日韩视频在线第一区 | 国产精品嫩草久久久久| 91美女片黄在线观看91美女| 午夜不卡在线视频| 国产偷v国产偷v亚洲高清| 欧美色手机在线观看| 国产精品自拍av| 亚洲成人777| 国产精品超碰97尤物18| 日韩三级在线观看| 日韩欧美成人激情| 色综合中文综合网| 日韩久久久精品| 色成年激情久久综合| 国产在线精品不卡| 亚洲成人免费看| 成人欧美一区二区三区白人| 欧美一区二区三区四区五区 | 99精品偷自拍| 狠狠色丁香婷婷综合| 一区二区三区中文字幕精品精品 | 欧美亚洲图片小说| 成人综合在线观看| 久久99精品国产麻豆婷婷洗澡| 《视频一区视频二区| 精品国产乱码91久久久久久网站| 日本道色综合久久| 成人精品免费看| 国产一区 二区 三区一级| 日韩极品在线观看| 亚洲国产日韩a在线播放| 中文字幕亚洲综合久久菠萝蜜| 亚洲精品一区二区三区蜜桃下载 | 欧美综合欧美视频| av亚洲精华国产精华精华| 国产美女视频一区| 精品一二线国产| 精品一区二区三区久久久| 男人操女人的视频在线观看欧美| 亚洲成av人片在线观看无码| 亚洲自拍偷拍麻豆| 一区二区免费在线| 樱桃国产成人精品视频| 国产精品理伦片| 中文字幕一区二区在线播放| 中文字幕欧美区| 国产农村妇女毛片精品久久麻豆 | 欧美激情艳妇裸体舞| 久久久国产精华| 国产午夜精品福利| 国产欧美日韩综合| 国产精品污污网站在线观看| 久久久久久电影| 26uuu亚洲综合色| 久久久精品天堂| 国产日韩高清在线| 国产精品少妇自拍| 国产精品久久久久久久久动漫| 国产精品青草久久| 国产精品电影一区二区三区| 中文字幕中文在线不卡住| 最近日韩中文字幕| 亚洲午夜在线电影| 琪琪久久久久日韩精品| 美女在线观看视频一区二区| 免费看日韩精品| 国产精品 欧美精品| 99久久久精品| 欧美午夜片在线观看| 91.xcao| 精品国产凹凸成av人网站| 国产亚洲成年网址在线观看| 中文字幕五月欧美| 亚洲国产精品一区二区久久恐怖片| 五月天激情综合网| 国产一区二区在线看| 99免费精品在线| 欧美精品粉嫩高潮一区二区| 精品久久久久久最新网址| 国产偷国产偷精品高清尤物| 一区二区三区在线观看国产| 日韩vs国产vs欧美| 成人一区在线看| 欧美人与性动xxxx| 久久精品一区二区三区av| 亚洲乱码一区二区三区在线观看| 黄色日韩三级电影| 色综合一区二区三区| 日韩欧美资源站| 自拍偷拍国产亚洲| 激情综合网av| 97精品久久久午夜一区二区三区 | 午夜在线电影亚洲一区| 九九精品一区二区| 在线中文字幕一区二区| 精品电影一区二区| 一区二区三区四区不卡视频| 韩国视频一区二区| 欧美系列日韩一区| 中文字幕第一区二区| 日本美女一区二区三区视频| www.亚洲免费av| 亚洲精品一区二区三区精华液| 亚洲免费观看高清在线观看| 久久国产成人午夜av影院| 91国产福利在线| 欧美精彩视频一区二区三区| 五月婷婷激情综合| 色久综合一二码| 中文字幕精品在线不卡| 麻豆传媒一区二区三区| 91福利国产成人精品照片| 中文一区二区在线观看| 毛片av一区二区三区| 91成人免费网站| 国产精品理论片| 国产精品一区一区三区| 欧美一区二区免费视频| 亚洲一级不卡视频| 99精品一区二区| 国产精品国产三级国产aⅴ中文 | 午夜电影久久久| 91高清视频在线| 亚洲日本丝袜连裤袜办公室| 国产精品一区二区免费不卡| 精品少妇一区二区三区在线视频| 亚洲图片欧美一区| 91国产成人在线| 亚洲精品中文字幕乱码三区| 成人黄色av电影| 欧美极品少妇xxxxⅹ高跟鞋| 国产精品一级二级三级| 精品成人佐山爱一区二区| 日本不卡的三区四区五区| 欧美日韩精品二区第二页| 一区二区在线观看av| 99re8在线精品视频免费播放| 国产精品久久午夜夜伦鲁鲁| 丁香啪啪综合成人亚洲小说| 国产欧美日韩视频一区二区| 久久av老司机精品网站导航| 精品国产一二三区| 黑人巨大精品欧美黑白配亚洲| 欧美大尺度电影在线| 经典三级一区二区| 久久精品夜夜夜夜久久| 国产成人欧美日韩在线电影| 久久精品水蜜桃av综合天堂| 国产一区二区三区视频在线播放| 337p粉嫩大胆噜噜噜噜噜91av| 精品在线你懂的| 国产精品丝袜一区| 91蜜桃婷婷狠狠久久综合9色| 亚洲激情在线播放| 欧美嫩在线观看| eeuss鲁一区二区三区| 国产精品国产精品国产专区不片| 99re这里都是精品| 亚洲国产精品一区二区www在线| 337p亚洲精品色噜噜| 久久精品理论片| 国产三级精品三级在线专区| av电影天堂一区二区在线| 亚洲综合男人的天堂| 日韩午夜小视频| 国产成人午夜99999| 亚洲自拍偷拍欧美| 精品国产乱码久久久久久老虎 | 亚洲欧美精品午睡沙发| 欧美日韩免费观看一区三区| 黄色小说综合网站| 亚洲欧洲精品天堂一级| 在线成人免费视频| 国产高清视频一区| 亚洲电影视频在线| 国产三级三级三级精品8ⅰ区| 色悠久久久久综合欧美99|