为什么进不了adc中断?
#include <SH79F083.H>#include <INTRINS.H>
#include <define.h>
bit flag=0;
//unsigned char code eeprom _at_ 0x3000;
void init(void)//初始化寄存器
{
EA=0;
EA=1;
}
void initadc(void)
{
ADT = Bin(11100000); //T(ad) = 32*(1/16M) = 2us
//ADCH = Bin(00000001); //AN0,AN1,AN2
//ADCON = Bin(10000000); //ADC enable,ref为vdd
//ADCON |=Bin(00000001); //start converse from AN0~
ADCH = Bin(00000010); //AN0,AN1,AN2
ADCON = Bin(10010000); //ADC enable,ref为p1.0
ADCON |=Bin(00000010); //start converse from AN1~
IEN0 |=Bin(01000000);//enable adc interuppt
}
void delay(int n)
{
int i=0,m=0,x=0;
for(m=0;m<n;m++)
{
for(i=0;i<100;i++)
{
x=0;
}
}
}
void main()
{
//// unsigned char i,m;
unsigned int adc;
init();
initadc();
while(1)
{
if(flag==1)
{
adc=ADDH;
delay(10);
adc=ADDL;
delay(10);
flag=0;
ADCON|=0X1;
}
}
} ADC和DMA的初始化是否正确 中断优先级是否正确配置 是否开启了DMA中断,如果没有开启,则无法进入DMA中断处理函数。 进不了 ADC 中断可能因配置错误:中断使能位未置 1、中断优先级设置不当;ADC 初始化有误,如转换完成标志未正确配置;中断服务程序未正确编写或向量地址错误;也可能是 ADC 未启动转换,或硬件访问冲突导致中断被屏蔽,需逐步排查配置与程序逻辑。
页:
[1]