[AVR单片机] AVR的ADC转换“ADCW”是什么意思?

[复制链接]
 楼主| 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楼说地对
ningling_21 发表于 2015-1-22 09:40 | 显示全部楼层
可能是作者自己定义的宏
 楼主| j6920 发表于 2015-1-22 20:59 | 显示全部楼层
将原程序逐个贴出来,请大家分析一下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| j6920 发表于 2015-1-22 21:01 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| j6920 发表于 2015-1-22 21:03 | 显示全部楼层
本帖最后由 j6920 于 2015-1-22 21:11 编辑


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| j6920 发表于 2015-1-22 21:05 | 显示全部楼层
本帖最后由 j6920 于 2015-1-22 21:12 编辑


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| j6920 发表于 2015-1-22 21:06 | 显示全部楼层
本帖最后由 j6920 于 2015-1-22 21:13 编辑


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 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中断产生
}
 

一颗心的思考 发表于 2015-1-23 21:12 | 显示全部楼层
sfrb ADCL=4;
sfrb ADCH=5;
sfrw ADCW=4;      // 16 bit access
马潮老师用的是CVAVR,在这款编译器里封装好了

评分

参与人数 1威望 +2 收起 理由
j6920 + 2 很给力!

查看全部评分

 楼主| j6920 发表于 2015-1-25 12:04 | 显示全部楼层
一颗心的思考 发表于 2015-1-23 21:12
sfrb ADCL=4;
sfrb ADCH=5;
sfrw ADCW=4;      // 16 bit access

有点明白了, 谢谢你啊 。
一颗心的思考 发表于 2015-1-28 20:09 | 显示全部楼层
j6920 发表于 2015-1-25 12:04
有点明白了, 谢谢你啊 。

不用谢。你打开<mega16.h>里的头文件找一下就明白了。不同的编译器的头文件里对寄存器地址的处理是不一样的。
英子04802 发表于 2015-5-5 14:02 | 显示全部楼层
谢谢!我也有同问
csust_omega 发表于 2015-5-6 17:34 | 显示全部楼层
可能在头文件中重新定义了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

32

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部