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

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

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

以前的问题可能是转换在没有开总中断以前就已经发生,导致接收不到转换结果,不知道是不是这样?
希望能和大家多多交流。
如果你的AD中断只是一次性的,那很可能是这样。
海纳百川  有容乃大
你应该在prm文件里的*_linker.prm文件中定义一下你的中断服务函数
比如:vector 16 ADreceive
#include /* for EnableInterrupts macro */
#include /* include peripheral declarations */

void Init()
{
CONFIG1 = 0x09;
TSC_TSTOP = 1;
TSC_TRST = 1;
TSC = 0x46;

TMODH = 0x4b;
TMODL = 0x00;

DDRA = 0x10;
PTA = 0x00;
ADSCR = 0x21;
}
void delay(uchar t){
uchar i,j;
for(i=0;i<=t;i++)
for(j=0;j<=t;j++);
}
void main(void) {
EnableInterrupts; /* enable interrupts */
/* include your code here */
Init();

for(;;) {
delay(ADR);
__RESET_WATCHDOG(); /* feeds the dog */
}
/* loop forever */
/* please make sure that you never leave this function */
}

interrupt 6 void SH_OverFlow_ISR(void){
// EnableInterrupts; /* enable interrupts */
TSC_TOIE = 0;
TSC_TOF = 0;

PTA = 0x19;

TSC_TOIE = 1;

}
我这里AD转换是正确的,其实AD转换是不需要你写中断服务程序,系统会自动进入中断服务程序把转换的结果给输入到ADR寄存器里.

[此贴子已经被作者于2006-3-1 16:14:59编辑过]

[此贴子已经被作者于2006-3-1 16:17:41编辑过]

返回列表