请教!
程序一如下:
//环境:IAR5.6、launchpad ,,MCU:MSP430G2231,系统时钟:VLO
//功能:读取MCU内部温度传感器,并且温度值用十进制表示。
#include "msp430g2231.h"
char ADC10_TEMP( )
{
char T;
ADC10CTL0 = SREF_1 + REFON + ADC10SR + ADC10ON;
ADC10CTL1 = INCH_10 + ADC10SSEL_1 + CONSEQ_0;
ADC10CTL0 |= ENC + ADC10SC;
while( ADC10CTL1&ADC10BUSY );
ADC10CTL0 &= ~ADC10IFG;
//T = 1500mV*TEMP/1024/3.55 - 986/3.55
T = ADC10MEM*423/1024 - 278;
return( T );
}
char T;
main()
{
WDTCTL = WDTPW + WDTHOLD;
BCSCTL3 = LFXT1S_2;
while( IFG1&OFIFG ){ IFG1 &= ~OFIFG; }
BCSCTL2 = SELM_3 + DIVM_0;
while(1)
{
T = ADC10_TEMP();
LPM3;
}
}
程序二如下:
//环境:IAR5.6、launchpad ,,MCU:MSP430G2231,系统时钟:VLO
//功能:读取MCU内部温度传感器,并且温度值用十进制表示。
#include "msp430g2231.h"
int ADC10_temp()
{
int T;
ADC10CTL0 = SREF_1 + REFON + ADC10SR + ADC10ON;
ADC10CTL1 = INCH_10 + ADC10SSEL_1 + CONSEQ_0;
ADC10CTL0 |= ENC + ADC10SC;
while( ADC10CTL1& ADC10BUSY );
ADC10CTL0 &= ~ADC10IFG;
T = ADC10MEM*423/1024 - 278;
return(T);
}
int T;
main()
{
WDTCTL = WDTPW + WDTHOLD;
//系统时钟选VLO
BCSCTL3 = LFXT1S_2;
while( IFG1 & OFIFG ){ IFG1 &= ~OFIFG; }
BCSCTL2 = SELM_3 + DIVM_0;
T = ADC10_temp();
while(1);
}
以上程序一和程序二是基本是一样的,就是T的类型不同,程序一结果正确,但是程序二的结果是错误的,是什么原因呢?