打印
[AVR单片机]

AVR的ADC转换“ADCW”是什么意思?

[复制链接]
7251|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
j6920|  楼主 | 2015-1-20 23:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
马潮那本AVR的书 , 数字电压表程序 ,有个ADCW ,不明白是什么意思。见图

相关帖子

沙发
hillslb| | 2015-1-21 10:14 | 只看该作者
应该是ADCL和ADCH的合在一起的16bit数的地址

使用特权

评论回复
板凳
j6920|  楼主 | 2015-1-21 17:43 | 只看该作者
谢谢回复 。 还是不明白 ,怎么知道地址就是ADCW?   怎么数据手册里搜不到ADCW呢 ?

使用特权

评论回复
地板
ddllxxrr| | 2015-1-22 09:28 | 只看该作者
j6920 发表于 2015-1-21 17:43
谢谢回复 。 还是不明白 ,怎么知道地址就是ADCW?   怎么数据手册里搜不到ADCW呢 ?  ...

也许,程序是被后来定义了2楼说地对

使用特权

评论回复
5
ningling_21| | 2015-1-22 09:40 | 只看该作者
可能是作者自己定义的宏

使用特权

评论回复
6
j6920|  楼主 | 2015-1-22 20:59 | 只看该作者
将原程序逐个贴出来,请大家分析一下。

使用特权

评论回复
7
j6920|  楼主 | 2015-1-22 21:01 | 只看该作者

使用特权

评论回复
8
j6920|  楼主 | 2015-1-22 21:03 | 只看该作者
本帖最后由 j6920 于 2015-1-22 21:11 编辑


使用特权

评论回复
9
j6920|  楼主 | 2015-1-22 21:05 | 只看该作者
本帖最后由 j6920 于 2015-1-22 21:12 编辑


使用特权

评论回复
10
j6920|  楼主 | 2015-1-22 21:06 | 只看该作者
本帖最后由 j6920 于 2015-1-22 21:13 编辑


使用特权

评论回复
11
j6920|  楼主 | 2015-1-22 21:19 | 只看该作者
下面是在网上搜到其它的程序,第10行也有个“ADCW” 。  没法用红色标出,请大家自己数行数。

#i nclude<90s9535.h>
#define LEDS PORTD
#define red 0xfe
#define yellow 0xfd
#define green 0xfc
#define uchar unsigned char
interrupt[ADC_INT] void adc_isr(void)
{
   uchar adc_data;       //variable for ADC result
   adc_data=ADCW;   //read all 10bits into variable
  if(adc_data>(3*1023)/5)
      LEDS=red;
else(adc_data<(2*1023)/5)
      LEDS=yellow;
  else
     LEDS=green;
   ADCSR=ADCSR|0x40;         //start the next conversion
}
void main()
{
DDRD=0x07;                        //least signifcant 3 bits for output
ADMUX=0x03;                        //select to read only channel 3
ADCSR=0xCE;                        //ADC中断,64分频
#asm("sei")
while(1);                                  //等待ADC中断产生
}
 

使用特权

评论回复
12
一颗心的思考| | 2015-1-23 21:12 | 只看该作者
sfrb ADCL=4;
sfrb ADCH=5;
sfrw ADCW=4;      // 16 bit access
马潮老师用的是CVAVR,在这款编译器里封装好了

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
j6920 + 2 很给力!
13
j6920|  楼主 | 2015-1-25 12:04 | 只看该作者
一颗心的思考 发表于 2015-1-23 21:12
sfrb ADCL=4;
sfrb ADCH=5;
sfrw ADCW=4;      // 16 bit access

有点明白了, 谢谢你啊 。

使用特权

评论回复
14
一颗心的思考| | 2015-1-28 20:09 | 只看该作者
j6920 发表于 2015-1-25 12:04
有点明白了, 谢谢你啊 。

不用谢。你打开<mega16.h>里的头文件找一下就明白了。不同的编译器的头文件里对寄存器地址的处理是不一样的。

使用特权

评论回复
15
英子04802| | 2015-5-5 14:02 | 只看该作者
谢谢!我也有同问

使用特权

评论回复
16
csust_omega| | 2015-5-6 17:34 | 只看该作者
可能在头文件中重新定义了

使用特权

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

本版积分规则

4

主题

32

帖子

0

粉丝