敢问各位大侠们我的程序为什么只能采样一个值就不能进入中断了?
///*************************************************************************
// ADC中断服务程序
//*************************************************************************
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR(void)
{
while((ADC12CTL1&0x01)==1); //如果ADC忙,则等待,否则读取ADC转换数值
Flag = 1 ;
TEMP= ADC12MEM0; //读取ADC转换值
results[index]=TEMP;
index++;
}
int main( void )
{
float squ;
int value;
WDT_Init(); //看门狗设置
Clock_Init(); //系统时钟设置
ADC_Init(); //初始化ADC配置
delay_ms(100); //延时100ms
Port_Init(); //系统初始化,设置IO口属性
LED_Light(); //LED点亮一次,如有现象,说明单片机初始化成功
Device_code=0x9320; //TFT控制IC型号
TFT_Initial(); //初始化LCD
CLR_Screen(Black); //用背景 {MOD}清屏
LCD_PutString(0,0,"The effective value : ",White,Black); //
_EINT(); //使能中断
Flag=1; //标志位先置1
while(1)
{
if(index<6)
{
while(Flag==1)
{
ADC12CTL0 |= ADC12SC; //开启转换
ADC12CTL0 &= ~ADC12SC; //清零
Flag=0; //清零标志位
}
}
else
{
float sum=0;
for(int i=0;i<num;i++)
{
results[i]= results[i]*2.5/4095;
squ=fabs(results[i]);
squ=squ*squ;
sum+=squ;
}
squ=sum/num;
squ=sqrt(squ);
value=(int)(squ*1000);
uint temp_1,temp_2;
A1=value/1000; //分出千,百,十,和个位
temp_1=value%1000;
A2=temp_1/100;
temp_2=temp_1%100;
A3=temp_2/10;
A4=temp_2%10;
uchar j;
uchar key;
// key=Key_Scan();
if(key==1)
{
for(j=0;j<30;j++)
{
LCD_DisplayADC0(); //显示ADC的电压值
}
}
else if(key==2)
{
for(j=0;j<30;j++)
{
LCD_DisplayADC1(); //显示ADC的电压值
}
}
else
for(j=0;j<3;j++)
{
LCD_DisplayADC(); //显示ADC的电压值
}
index=0;
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>