请教8051f040 相关问题

[复制链接]
3103|4
 楼主| wang668 发表于 2010-10-29 19:44 | 显示全部楼层 |阅读模式
#define ADC0START temppage=SFRPAGE;SFRPAGE=0X00;AD0BUSY=1; SFRPAGE=temppage

是什么意思啊?! 没有见过define这样用的啊,也没有查到??SFRPAGE   AD0BUSY 为寄存器

谢谢
原野之狼 发表于 2010-10-30 00:50 | 显示全部楼层
就是替换而已嘛
把ADC0START 替换成后面的所有语句
ayb_ice 发表于 2010-10-30 08:19 | 显示全部楼层
shell.albert 发表于 2010-10-30 08:20 | 显示全部楼层
C8051F系列是增强型的51单片机,寄存器比较多,但为了保证最大性的与传统51单片机相兼容,所以采用了分页的形式,寄存器名字是一样的,但是处于不同的页中,所以在实际编写程序时就要先切换到具体的页中,然后再对寄存器进行操作。

#define ADC0START temppage=SFRPAGE;SFRPAGE=0X00;AD0BUSY=1; SFRPAGE=temppage

这一句宏定义实际上就是用于启动ADC0转换。
相当于以下的C语句:
UCHAR8 temppage=SFRPAGE;
SFRPAGE=0x00;
AD0BUSY=1;
SFRPAGE=temppage;
因为ADC0有四种启动方式,其中一种就是向AD0BUSY置1启动,这里采用了这种方式。
同时在进入时保存了先前的页寄存器,出来了还原了。
 楼主| wang668 发表于 2010-10-30 10:21 | 显示全部楼层
嗯 明白了 谢谢各位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

56

帖子

0

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