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

MC9S12dg128B的AD转换中断问题,请各位帮忙看看.

MC9S12dg128B的AD转换中断问题,请各位帮忙看看.

初学Freescale单片机,根据数据手册写了个中断方式的AD转换程序,但是不能进中断,请各位帮忙看看。谢谢!
用的是清华的邵贝贝老师提供的监控程序,他把中断向量区向前移动了0x1000,在Simulater_link.prm文件中,我设置的AD转换中断向量为VECTOR ADDRESS 0xEFD2 ADC_ISR。程序如下:
#include <hidef.h>/* common defines and macros */
#include <mc9s12dg128.h>/* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"

void Port_Init(void)
{
PORTB = 0x00;
DDRB = 0xFF;
}

void AD_Init(void)
{
//中断使能
ATD0CTL2 = (ATD0CTL2_ADPU_MASK|ATD0CTL2_AFFC_MASK|ATD0CTL2_ASCIE);
//转换通道数为1
ATD0CTL3 = (ATD0CTL3_S1C_MASK);
//8位精度,2MHz时钟

ATD0CTL4 = (ATD0CTL4_SRES8|0x05);
//右对齐,连续转换模式
ATD0CTL5 = (ATD0CTL5_DJM_MASK|ATD0CTL5_SCAN_MASK);
//禁止数字输入缓冲
ATD0DIEN = 0x00;
}

#pragma CODE_SEG NON_BANKED
__interrupt void ADC_ISR(void)
{
PORTB = ATD0DR0; //用PORTB表示AD转换结果
}
#pragma CODE_SEG DEFAULT

void main() {
Port_Init();
AD_Init();
EnableInterrupts;//开总中断
for(;;);
}

请大家帮忙看看这个程序在哪里出的问题,谢谢。

[此贴子已经被作者于2007-1-9 10:10:15编辑过]

[此贴子已经被作者于2007-1-9 10:12:14编辑过]

为什么要用监控程序,你没有BDM吗?
海纳百川  有容乃大
BDM还没有使用,觉得用bootloader挺方便的,就没用BDM。
我用查询的方式做ADC是没问题的,用中断就不行了。
如果没有BDM,你如何将监控程序写入芯片呢。
海纳百川  有容乃大
可以通过监控程序bootloader,把.s19文件写入单片机
我还是不知道上面的程序哪里有问题,向斑竹请教哦
你这几句话是不是有问题啊。这样的写法能达到你想要的设置要求吗?
疑惑中……
ATD0CTL2 = (ATD0CTL2_ADPU_MASK|ATD0CTL2_AFFC_MASK|ATD0CTL2_ASCIE);
ATD0CTL3 = (ATD0CTL3_S1C_MASK);
ATD0CTL4 = (ATD0CTL4_SRES8|0x05);
ATD0CTL5 = (ATD0CTL5_DJM_MASK|ATD0CTL5_SCAN_MASK);
hello!
这个是头文件里定义的,应该没什么问题。
我太粗心了,写错东西了
问题解决了,谢谢
什么错了?
是啊,什么地方错了说一下嘛
粗心的错误.....
责任源于梦想!!
返回列表