?? msp430.txt
字號:
#include <msp430x12x2.h>
#define TEM_ADC_CHL 0x0a
void InitSys(void);
void Read_ADC(unsigned int INCH_channel);
void ADC_TO_TEM(void);
unsigned int ADC_sample_val;
unsigned int long temp1,temp2;
unsigned int long IntDegC;
unsigned int long IntDegF;
void main(void)
{
InitSys();
while(1)
{
Read_ADC(TEM_ADC_CHL);
ADC_TO_TEM();
}
}
void InitSys(void)
{
// INIT SYSTEM CLKS(ACLK AND DCO/MCLK)
WDTCTL = WDTPW+WDTHOLD; //關閉看門狗
BCSCTL1 = 0x87; //ACLK 分頻系數是1,內部電阻選7
DCOCTL = 0xe0; //設置DCO輸出時鐘頻率5MHZ
BCSCTL2 = SELM_0; //選擇MCLK為DCOCLK,內部電阻
ADC10CTL1 |= 0x08; // 轉換時鐘為ACLK
ADC10CTL0 = SREF_1 + ADC10SHT_0 + REFOUT + REFON + ADC10ON;
//選擇內部電壓1.5V,采樣時間4XADC10CLKS
}
void Read_ADC(unsigned int INCH_channel)
{
unsigned int tmp;
ADC10CTL0 &= ~ENC;
tmp = ADC10CTL1;
tmp &= 0x0fff;
tmp |= (INCH_channel<<12);
ADC10CTL1 = tmp;
ADC10CTL0 |= ENC + ADC10SC;
while(ADC10CTL1 & ADC10BUSY)
{}
ADC_sample_val = ADC10MEM;
ADC10CTL0 &= ~ENC;
}
void ADC_TO_TEM(void)
{
//oC = ((A10/1024)*1500mV)-986mV)*1/3.55mV = A10*423/1024 - 278
temp1 = ADC10MEM;
IntDegC = ((temp1 - 673) * 423) / 1024;
// oF = ((A10/1024)*1500mV)-923mV)*1/1.97mV = x*761/1024 - 468
temp2 = ADC10MEM;
IntDegF = ((temp2 - 630) * 761) / 1024;
}
參考鏈接:http://www.picavr.com/news/2008-03/4481.htm
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -