打印
[AVR单片机]

mega8的ADC一次转换模式怎么启动呢?

[复制链接]
4617|13
手机看帖
扫描二维码
随时随地手机跟帖
沙发
laslison| | 2010-6-21 12:39 | 只看该作者
先进行初始化,然后设置寄存器ADCSRA

使用特权

评论回复
板凳
qfengbj| | 2010-6-21 13:30 | 只看该作者
同问!学习一下

使用特权

评论回复
地板
ershisi|  楼主 | 2010-6-21 13:34 | 只看该作者
看到这么一语句
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1);//启动ADC单次转化模式,64分频
可是不明白,谁给解释下

使用特权

评论回复
5
928315| | 2010-6-21 22:19 | 只看该作者
这样的。
ADCSRA 这个寄存器,一共是8位。
ADEN,ADSC,,ADPS2,ADPS1,这几个是宏定义,
比如  #DEFINE  ADEN       5
表示将ASCSRA这个寄存的的第多少位置1。。。。
这个是ADC初始化配置。

使用特权

评论回复
6
大碗拉面| | 2010-6-22 10:44 | 只看该作者
ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1);

这一句的意思是将寄存器ADCSRA中的ADEN位、ADSC位、ADPS2位、ADPS1位都置1。
而没有提到的的,则保持为寄存器ADCSRA原先的值。
如果这句赋值语句出现在初始化的环境中,那么寄存器ADCSRA的值应为0b11000111
注意第ADSC在转换过程中为1,完成后会清0。

其实楼主还是楼主看下DATASHEET,上面讲解的很清楚。

使用特权

评论回复
7
大碗拉面| | 2010-6-22 10:45 | 只看该作者
晕,错了
ADCSRA的值应为0b11000110

使用特权

评论回复
8
928315| | 2010-6-22 21:39 | 只看该作者
看来楼上AVR玩得很熟练哈。。我 好久没有写程序了。。。

使用特权

评论回复
9
ershisi|  楼主 | 2010-6-22 22:23 | 只看该作者
ADEN,ADSC,,ADPS2,ADPS1,这几个是宏定义?
下面又有人说是ADEN位、ADSC位、ADPS2位、ADPS1位
不明白了

使用特权

评论回复
10
ershisi|  楼主 | 2010-6-22 22:24 | 只看该作者
如果是数位的话,那怎么能  #DEFINE  ADEN       5
不是只能是0或者1吗

使用特权

评论回复
11
wuzhaolie| | 2010-6-22 22:47 | 只看该作者
菜鸟进来学习

使用特权

评论回复
12
qfengbj| | 2010-6-22 23:19 | 只看该作者
我也没看明白啦

使用特权

评论回复
13
大碗拉面| | 2010-6-24 09:32 | 只看该作者
我与5楼朋友说的不冲突
他说的宏定义概念是在AVR中的头文件(比如“mega8.h”,根据编译不同文件名有出入)中
有如下定义
ADEN 这个代号对应为 7
ADSC 这个代号对应为 6
ADPS2 这个代号对应为 2
ADPS1 这个代号对应为 1

ADCSRA寄存器是一个字节长,一共有8位
语句“ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1);”
就是将ADCSRA寄存器中相应位置1;
而所谓的相应位就是ADEN位、ADSC位、ADPS2位、ADPS1位
也就是ADCSRA寄存器中7位、    6位、      2位、     1位。

这回解释的怎样?

使用特权

评论回复
14
yidou| | 2010-6-24 22:31 | 只看该作者
这个解释够详细:handshake

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

413

帖子

1

粉丝