首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]AD中断问题(C语言)

[求助]AD中断问题(C语言)

我用GZ48作的AD转换中断函数如下


ADBUF是一个全局变量



 void AtoD(int channel)
 { 
  unsigned char tmp,adbuf1,adbuf2;
 
  tmp=ADSCR & 0xe0;  //给0-4位清零
  tmp=tmp | channel; 
  ADSCR=tmp;       //选取通道ADCH4-ADCH0=00000-10111:AD0 pin-AD23 pin
 }
interrupt 16 void ADreceive(void)


{


  adbuf1=ADRH;
  adbuf2=ADRL;
  ADBUF=adbuf1*256+adbuf2;


}


请指教,告诉我问题所在。谢谢!

希望能和大家多多交流。
现在AD转换接收不到转换结果。

channel定义为int类型,应该没有问题。

我把ADBUF定义为long int 类型了,我感觉不存在溢出的问题。但我确实没有注意到。

我只想知道我的中断函数写的是否正确,不正确问题出在哪里?应该怎么改写,谢谢!
希望能和大家多多交流。
应该是没有进中断,因为我现在根本就接受不到转换结果。
我是第一次使用AD中断,所以对自己写的程序有些怀疑。

对上面函数的修改,但问题仍然存在。
ADBUF是一个全局变量
adbuf1,adbuf2也应该是全局变量或者在中断接受函数内要进行定义。

void AtoD(int channel)
{
unsigned char tmp;

tmp=ADSCR & 0xe0; //给0-4位清零
tmp=tmp | channel;
ADSCR=tmp; //选取通道ADCH4-ADCH0=00000-10111:AD0 pin-AD23 pin
}

interrupt 16 void ADreceive(void)
{
adbuf1=ADRH;
adbuf2=ADRL;
ADBUF=adbuf1*256+adbuf2;
}
希望能和大家多多交流。
好像是没进去。


谁能发一个AD中断程序,CPU最好是8位的,我参考一下
希望能和大家多多交流。
AIEN 已经置位,整个MCU的中断我没有处理
是不是要用EnableInterrupts命令设置的?
希望能和大家多多交流。

AD初始化如下:
ADCLK=0x44; //初始化A/D转换为4分频,外部总线 Right justifide mode
ADSCR=0x5F; //置位AIEN 或者此处改写为ADSCR_AIEN=1;

AIEN 已经置位,我用EnableInterrupts命令对MCU进行开中断,但还是没有接收到转换结果
希望能和大家多多交流。
我刚才设置了,但还是没有接收到转换结果。
AD的初始化设置如下:

ADCLK=0x44; //初始化A/D转换为4分频,外部总线 Right justifide mode
ADSCR=0x5F; //AIEN使能,或者此处改写为ADSCR_AIEN=1;
希望能和大家多多交流。
我把MCU的中断设置了,但仍然没有收到转换结果。
AD的初始化如下:

ADCLK=0x44; //初始化A/D转换为4分频,外部总线 Right justifide mode
ADSCR=0x5F; //此处开AD中断
希望能和大家多多交流。
不好意思,没有看到第二页,导致了一样的结果让我发了多次。

原来进行的CAN中断是可以的
希望能和大家多多交流。
1MHz 时钟没有问题(我用查询方式作结果是正确的,只不过现在要求用中断)
希望能和大家多多交流。
我的中断接受方式已经试验通过,我在初始化前禁止总中断,设置完相关的设定后再开总中断,这样就可以接收到了AD转换结果。

以前的问题可能是转换在没有开总中断以前就已经发生,导致接收不到转换结果,不知道是不是这样?
希望能和大家多多交流。
返回列表