中级会员
- 积分
- 489
- 威望
- 361
- 贡献
- 32
- 兑换币
- 0
- 注册时间
- 2010-3-22
- 在线时间
- 48 小时
|
1贡献
做了一个电位器输出0V~4.2V,用来做外部触发源,代码写成这样子:
void AD_init(void)
{
ATD0CTL2=0xC0; // 启动A/D, 快速清零, 无等待模式, 禁止外部触发, 中断禁止 1100 0000
ATD0CTL3=0x08; // 转换序列长度为1, No FIFO, Freeze模式下继续转换
ATD0CTL4=0x85; // 8位精度, 2个AD时钟, ATDClock=[BusClock*0.5]/[PRS+1]=2MHz
ATD0CTL5=0xA0; // 右对齐无符号,单通道采样,通道0
ATD0DIEN=0x00; // 禁止数字输入
}
void main(void)
{
unsigned char ch;
AD_init();
DDRB=0XFF;
PORTB=0XFF;
for(;;)
{
while(!ATD0STAT1_CCF0); // 等待转换结束while(ATDOSTAT1_CCF0==1)
while(ATD0STAT1_CCF0==1);
ch=ATD0DR0L;
PORTB=~ch;
}
}
有如下几个问题:
1、把电位器的输出端接在片子上的AN00口,是不是运行之后我调节电位器比如4.2V的时候为11111110 (254),
然后我调节到2.1V,B口显示的是不是1111111 (127)?
2、转换结果储存器的选择是用哪个寄存器选择的?能选还是固定的?我这边资料没写。
3、ATD0CTL2禁止外部触发,是不是如果外部触发使能,只有在AN7受到信号之后,ATD0CTL5所决定的输入通道才能开始转换这个意思? |
|