|
程序如下,请指教
#include <msp430x14x.h>
#include"12864bc.c"
#include"LCD12864.c"
#include"LCD12864.h"
#define Num_of_Results 8
uint p=0;
float mm=0.0;
static unsigned int results[Num_of_Results];
void ADC12setup(void)
{
P6SEL |= 0x01; // Enable A/D channel A0
ADC12CTL0 &=~ENC;
ADC12CTL0 = ADC12ON+SHT0_2+MSC; // Turn on ADC12, set sampling time
ADC12CTL1 |= SHP+CONSEQ_2; // Use sampling timer, set mode
ADC12CTL0 |= REFON; //内部参考电压打开
ADC12CTL0 |= REF2_5V; //选用内部参考电压为2.5V
ADC12CTL0 |= ADC12SC;
ADC12CTL0 |= ENC; // Start conversion
ADC12MCTL1 |= SREF_1+INCH_0+EOS; //R+=2.5V R-=VSS,A0输入,结束位
ADC12IE = BIT0; // 中断允许
ADC12CTL0 |= ADC12SC;
ADC12CTL0 |= ENC;
}
void main(void)
{
WDTCTL = WDTPW+WDTHOLD; // Stop watchdog timer
Init_CLK();
InitLcd12864();
ADC12setup();
_BIS_SR(LPM0_bits + GIE); // Enter LPM0,Enable interrupts
}
#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR (void)
{
static unsigned int index = 0;
results[index] = ADC12MEM0; // Move results
index++;
if(index>7)
{
p=(results[0]+results[1]+results[2]+results[3]+results[4]+results[5]+results[6]+results[7])/8;
index=0;
}
mm=2.5*p/4096;
LCD_write_float(1, 1, p);
LCD_write_float(2, 1, mm);
// LCD_write_float(3, 1, temp);
// LCD_write_float(4, 1, Results[0]);
// _BIC_SR_IRQ(CPUOFF); // Clear CPUOFF bit from 0(SR)
}
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|