- UID
- 161675
- 性别
- 女
|
各位高手请看好:
片子是DP256B,通过MDC定时1.25ms中断采样,但是进入中断后AD采样始终通不过。具体程序如下:
void MCU_Initial(void)
{
// 模数递减计数器设定
MCCTL=0xC6; //模数递减计数器中断使能,连续中断,允许工作,
MCCNT=1250; //总线频率为8M,预分频因子为8 11000110,计数1250, t=1us*1250=1.25ms 产生1次中断,中断时进行AD采样
//MCFLG_MCZF=1; //清除模数计数器中断标志位,这样可以重新计时
//MCCTL_FLMC=1; //强制加载模数常数寄存器的值
}
void AD_Initial(void) //AD初始化
{
ATD0CTL2 = 0x80; //AD0正常工作模式,中断下继续运行,禁止ATD中断
ATD0CTL3 = 0x00; //八通道,背景后激活继续转换
ATD0CTL4 = 0x01; //转换结果为10位,两个采样时间,4分频
//ATD0CTL5 = 0x90; //转换结果右对齐,无符号;多通道,单次转换
ATD1CTL2 = 0x80; //AD1正常工作模式
ATD1CTL3 = 0x00; //八通道转换
ATD1CTL4 = 0x01; //转换结果为10位
//ATD1CTL5 = 0x90; //转换结果右对齐,无符号;多通道,单次转换
}
void ISR_MDCU(void) //1.25ms模数计数器中断一次进行AD采样,
{ //中断16次(20ms一个电源周波)计算一次
uchar i; //中断160次(200ms)喂狗一次
MCFLG_MCZF=1; //清除模数计数器中断标志位,这样可以重新计时
Sample_N++;
AD_over=1;
for(i=0;i
{
ATD0CTL5 = 0x90; //AD0转换开始
while (ATD0STAT0_SCF==0) //AD0转换完毕
{}
ATD1STAT0_SCF=1;//清除AD0转换完毕标志位
VolAi_AD0=ATD0DR0; //VolAi_AD0存放A相输入电压值4个采样值
}
}
帮我看看卡在哪里?
|
|