pangb 发表于 2023-7-31 22:30

为什么进不了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;
}

}
   
}

laocuo1142 发表于 2023-11-23 10:38

ADC和DMA的初始化是否正确

flycamelaaa 发表于 2023-11-23 10:38

中断优先级是否正确配置

powerantone 发表于 2023-11-23 10:39

是否开启了DMA中断,如果没有开启,则无法进入DMA中断处理函数。

绒兔星球 发表于 2025-8-30 14:54

进不了 ADC 中断可能因配置错误:中断使能位未置 1、中断优先级设置不当;ADC 初始化有误,如转换完成标志未正确配置;中断服务程序未正确编写或向量地址错误;也可能是 ADC 未启动转换,或硬件访问冲突导致中断被屏蔽,需逐步排查配置与程序逻辑。
页: [1]
查看完整版本: 为什么进不了adc中断?