请问有谁使用过ADC12B16C,我的程序只能进入中断2次,然后就不会再进入了,而存储AD采集值的寄存器却还再采集,就是不能通过中断读取,请帮忙看看。 AD的初始化程序: /* AD控制寄存器1: AD精度为8位 */ ATDCTL1 = 0x00;
/* AD控制寄存器2: 启动AD快速转换|AD等待模式下转换|AD中断使能 */ ATDCTL2 = (ATDCTL2_AFFC_MASK|ATDCTL2_ICLKSTP_MASK|ATDCTL2_ASCIE_MASK);
/* AD控制寄存器3: 右对齐|转换序列长度为3 */ ATDCTL3 = (ATDCTL3_DJM|ATDCTL3_S2C_MASK|ATDCTL3_S1C_MASK);
/* AD控制寄存器4:AD时钟周期为4个系统时钟|分频系数为19 */ ATDCTL4 = (ATDCTL4_PRS4_MASK|ATDCTL4_PRS1_MASK|ATDCTL4_PRS0_MASK);
/* AD控制寄存器5:连续采集|多通道采集|从通道AD9开始 */ ATDCTL5 = (ATDCTL5_SCAN_MASK|ATDCTL5_MULT_MASK|ATDCTL5_CD_MASK);
/* AD中断使能寄存器:禁止所有通道数字输入缓冲 */ ATDDIEN = 0x00; 中断程序: void interrupt Int_AD0(void) { LED_TOGGLE(D29);/* 用于指示AD中断函数是否运行 */ AD_wData1 = ATDDR0;/* 采集 */ AD_wData2 = ATDDR1;/* 采集 */ AD_wData3 = ATDDR2;/* 采集 */ AD_wDataH = ATDDR0H; PORTB = AD_wDataH;/* 从端口B输出采集的值的高8位用于查看 */ if (ATDSTAT0_SCF!=0){ LED_ON(D28); }
} |