#include <absacc.h>
#include <reg52.h>
#define uchar unsigned char
#define IN0 XBYTE[0x7ff8] /*设置AD0809的通道0地址*/
\不明白的地方1
sbit ad_busy = P3^3; /*即EOC状态*/
void ad0809(uchar idata * x) /*采样结果放指针中的A/D采集函数*/
{
uchar i;
uchar xdata * ad_adr;
ad_adr = &IN0;
for(i=0;i<8;i++) /*处理8通道*/
{
*ad_adr = 0; /*启动转换*/
//不明白的地方2
i = i; /*延时等待EOC变低*/
i = i;
while(ad_busy == 0); /*查询等待转换结束*/
x
= *ad_adr; /*存转换结果*/
ad_adr++; /*下一通道*/
}
}
int main(void)
{
static uchar idata ad[10];
ad0809(ad); /*采样AD0809通道的值*/
return 0;
}
问题:
不明白的地方1:为什么IN0的地址是这一个?
不明白的地方2:指针指向的是IN0的地址,*ad_adr指的是IN0这个地址的内容?具体指的是什么?为什 么启动转换可以转化成这种形式?START的启动不是低电平—高电平—低电平吗?
电路图片:
-
关于不明白地方二:你的意思是不是当单片机执行语句*ad_adr = 0的时序给了AD0809 启动(START)的一个启动时序?
是,正确。
并且同时也将通道地址也锁存进了0809
一周热门 更多>