初学Freescale单片机,根据数据手册写了个中断方式的AD转换程序,但是不能进中断,请各位帮忙看看。谢谢!
用的是清华的邵贝贝老师提供的监控程序,他把中断向量区向前移动了0x1000,在Simulater_link.prm文件中,我设置的AD转换中断向量为VECTOR ADDRESS 0xEFD2 ADC_ISR。程序如下:
#include <hidef.h>
#include <mc9s12dg128.h>
#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编辑过]
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |