请教!关于msp430内置温度传感器温度测量的问题
[P]我想写一个程序,用来实现采集CPU内部温度,并发送给串口,在PC上显示,但是为什么不显示温度呢?哪位好心人帮忙看看啊 ?困惑我好几天了[EM05][CODE]//******************************************************************************
//******************************************************************************
#include <msp430x14x.h>
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
/*当BRCLK=CPU_F时用下面的公式可以计算,否则要根据设置加入分频系数*/
#define baud 9600 //设置波特率的大小
#define baud_setting (uint)((ulong)CPU_F/((ulong)baud)) //波特率计算公式
#define baud_h (uchar)(baud_setting>>8) //提取高位
#define baud_l (uchar)(baud_setting) //低位
int long temp;
//*************************************************************************
// 系统时钟初始化
//*************************************************************************
void Clock_Init()
{
uchar i;
BCSCTL1&=~XT2OFF; //打开XT振荡器
BCSCTL2|=SELM1+SELS; //MCLK为8MHZ,SMCLK为8MHZ
do{
IFG1&=~OFIFG; //清除震荡标志
for(i=0;i<100;i++)
_NOP(); //延时等待
}
while((IFG1&OFIFG)!=0); //如果标志为1,则继续循环等待
IFG1&=~OFIFG;
}//*************************************************************************
// MSP430串口初始化
//*************************************************************************
void UART_Init()
{
U1CTL|=SWRST; //复位SWRST
U1CTL|=CHAR; //8位数据模式
U1TCTL|=SSEL1; //SMCLK为串口时钟
U1BR1=baud_h; //BRCLK=8MHZ,Baud=BRCLK/N
U1BR0=baud_l; //N=UBR+(UxMCTL)/8
U1MCTL=0x00; //微调寄存器为0,波特率9600bps
ME2|=UTXE1; //UART1发送使能
ME2|=URXE1; //UART1接收使能
U1CTL&=~SWRST;
IE2|=URXIE1; //接收中断使能位
P3SEL|= BIT6; //设置IO口为特殊功能模块
P3DIR|= BIT6; //设置P3.4为输入,P3.5为输出口
P3SEL|= BIT7; //设置IO口为外围功能模块
}
//*************************************************************************
// 串口1发送数据函数
//*************************************************************************
void Send_Byte(uchar data)
{
U1TXBUF=data;
while ((IFG2 & UTXIFG1)==0);
}
//*************************************************************************
// 处理来自串口1的发送中断,预留
//*************************************************************************
#pragma vector=UART1TX_VECTOR
__interrupt void UART1_TX_ISR(void)
{
}
//************主函数*********************************************************//
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
ADC12CTL0 = SHT0_8 + REFON + ADC12ON;
ADC12CTL1 = SHP; // enable sample timer
ADC12MCTL0 = SREF_1 + INCH_10;
ADC12IE = 0x001;
ADC12CTL0 |= ENC;
while(1)
{
ADC12CTL0 |= ADC12SC; // Sampling and conversion start
_BIS_SR(CPUOFF + GIE); // LPM0 with interrupts enabled
}
}
//**************ADC中断函数***************************************************//
#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR (void)
{
temp = ADC12MEM0; // Move results, IFG is cleared
Send_Byte(temp);
_BIC_SR_IRQ(CPUOFF); // Clear CPUOFF bit from 0(SR)
}
[/CODE][/P]