中级会员
- 积分
- 303
- 威望
- 265
- 贡献
- 20
- 兑换币
- 0
- 注册时间
- 2010-3-7
- 在线时间
- 9 小时
|
1贡献
问题:在调试单片机ATD模块时,输入模拟电压为2V,单片机测出的数据为192,或者是0,或者是64,总是得不到正确的结果,参考电压VRH,VRL用万用表测试分别是4.096V,0V,每个通道测试出的结果基本上都是一样的。源程序如下,大家看看有什么问题没?
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
volatile unsigned char ad_word=0;
void main()
{
unsigned int i = 0;
EnableInterrupts;
ATD0CTL2 = 0xc2; //使能A/D,快速清除标志,在队列转换完成后产生中断
ATD0CTL3 = 0x08; //转换队列长度为1,转换完成后暂停
ATD0CTL4 = 0x80; //8位精度, 2个时钟, ATDClock=[BusClock*0.5]/[PRS+1]
ATD0CTL5 = 0xa6; //结果右对齐,单通道采样,通道选择为通道4
ATD0DIEN = 0x00; // 禁止数字输入
DDRB = 0xff;
PORTB = 0x00;
for(;;)
{
}
}
#pragma CODE_SEG NON_BANKED
void interrupt 22 AD_Comper(void)
{
ad_word = ATD0DR0L;
PORTB = ad_word;
} |
|