//程序烧进板子后先进入led灯交替闪烁的待机模式;按下按键后,进入应用模式,绿灯开始呼吸;此时温度上升后绿灯呼吸加快,温度下降后呼吸又会变慢。当温度过高时红灯亮
#include "msp430g2553.h"
#define LED1 BIT0
#define LED2 BIT6
#define LED_DIR P1DIR
#define LED_OUT P1OUT
#define BUTTON BIT3 //P1.3为板上按键S2
#define BUTTON_OUT P1OUT //端口输出寄存器
#define BUTTON_DIR P1DIR //端口方向控制寄存器
#define BUTTON_IN P1IN //端口输入寄存器
#define BUTTON_IE P1IE //端口中断允许寄存器
#define BUTTON_IES P1IES //端口中断触发沿控制寄存器
#define BUTTON_IFG P1IFG //端口中断标志寄存器
#define BUTTON_REN P1REN //端口上下拉电阻使能控制寄存器
#define APP_STANDBY_MODE 0 //待机模式标志,也就是接上电源(或USB)后红绿灯交替闪的状态
#define APP_APPLICATION_MODE 1 //应用模式标志,也就是待机模式时按按键后进入的状态,也就是测量温度
#define TIMER_PWM_MODE 0
long TIMER_PWM_PERIOD = 5000;
#define TIMER_PWM_OFFSET 20
#define TEMP_SAME 0
#define TEMP_HOT 1
#define TEMP_COLD 2
#define TEMP_THRESHOLD 0
// Conditions for 9600/4=2400 Baud SW UART, SMCLK = 1MHz
#define Bitime_5 0x05*4 // ~ 0.5 bit length + small adjustment
#define Bitime 13*4//0x0D
unsigned char BitCnt;
unsigned char applicationMode = APP_STANDBY_MODE; //功能模式标志,初始值为待机模式
unsigned char timerMode = TIMER_PWM_MODE;
unsigned char tempMode;
unsigned char calibrateUpdate = 0;
unsigned char tempPolarity = TEMP_SAME;
unsigned int TXByte;
long tempMeasured[8]; //定义数组以计算8次10位ADC温度采样的平均值
unsigned char tempMeasuredPosition=0; //温度测量值数组索引
long tempAverage; //8次10位ADC温度采样的平均值
long tempCalibrated, tempDifference;
void InitializeLeds(void); //IO端口初始化,设置两颗LED对应的端口并两设置为熄灭初始状态
void InitializeButton(void); //IO端口初始化,配置按键
void PreApplicationMode(void); //进入待机模式,红绿灯交替闪,等待按键 Blinks LED, waits for button press
void ConfigureAdcTempSensor(void); //配置温度传感器模数转换
void ConfigureTimerPwm(