| #include "msp430x44x.h" unsigned char led_Buf[4]={0,0,0,0};
 unsigned char ADCresult[];
 unsigned char LED_IN_USE;
 const unsigned char NUM_LED[17]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//1,2,3,4,.........F
 void delay(int v)
 {
 while(v!=0)v--;
 }
 void init_weixuan()
 {
 P2DIR=0xf0;////位码选择,用P1.5-P1.7控制四位数码管
 P2OUT=0x00;
 }
 void init_LED()
 {P5DIR=0xff; //P5口连接数码管
 P5OUT=0x00;
 }
 void led_Display()
 {
 P2OUT=0xb0;//选通第一位
 P5OUT=NUM_LED[led_Buf[0]];//
 delay(900);//
 P5OUT=0x00;//
 
 P2OUT=0xd0;//选通第二位
 P5OUT=NUM_LED[led_Buf[1]];//
 delay(900);//
 P5OUT=0x00;//
 
 P2OUT=0xe0;//选通第三位
 P5OUT=NUM_LED[led_Buf[3]];
 delay(900);
 P5OUT=0x00;
 
 P2OUT=0x70;//选通第四位
 P5OUT=NUM_LED[led_Buf[3]];
 delay(900);
 P5OUT=0x00;
 }
 
 
 void main(void)
 {
 unsigned int i;
 
 P6SEL = 0x02;
 WDTCTL = WDTPW+WDTHOLD; // 停止看门狗定时器
 ADC12CTL0 = ADC12ON+REFON+REF2_5V+MSC+SHT0_6; // 设置 ADC12, 参考电压,采样时间
 ADC12CTL1 = SHP+ CONSEQ_2; // 用采样定时器
 ADC12MCTL0 = INCH_0+SREF_1; // 选择通道 A10, Vref+
 ADC12IE = 0x01; // 使能ADC12IFG.0
 init_weixuan();
 init_LED();
 for (i=0; i<0x3; i++) //延时等待参考稳定
 {
 }
 
 ADC12CTL0 |= ENC; //使能转换
 _EINT(); // 使能中断
 
 while(1)
 {
 ADC12CTL0 |= ADC12SC; // 开始转换
 _BIS_SR(LPM0_bits);
 P1OUT=BIT0+BIT1; // 进入LPM0
 //
 _NOP();
 }
 
 }
 #pragma vector=ADC_VECTOR
 __interrupt void ADC12ISR (void)
 {int i=0,tmp=0;
 int ADC_Sum=0;
 ADCresult = ADC12MEM0;
 for(i=0;i<16;i++)
 
 {ADC_Sum +=ADCresult ;
 i++;
 } // 读取结果
 ADC_Sum>>=4;
 for(tmp=0;tmp<4;tmp++)
 {
 led_Buf[tmp]=ADC_Sum%10;
 ADC_Sum=ADC_Sum/10;
 }
 
 led_Display();
 _BIC_SR_IRQ(LPM0_bits); // 清 LPM0
 }
 |