×
单片机 > 单片机程序设计 > 详情

ADS7804 AD转换程序

发布时间:2020-05-28 发布时间:
|

#include 
#includeCC.h> 
#define uint unsigned int 
#define uchar unsigned char 
#define N 128                    /*定采样长度,如128点*/ 

 

sbit BYTE=P1^0; 
sbit RC=P1^1; 
sbit BUSY=P1^2;                 /*定义特殊位*/ 
int xdata array[128];                 /*在外部存储器内定义长度为N的有符号整数数*/ 
int ADS7804(void); 

int ADS7804(void) 

uint ul,uh;int u; 
RC=0;                         /* 低电平,进入转换模式*/ 
ul=XBYTE[0xffff];                 /*产生读脉冲,启动A/D转换*/ 
while(BUSY==0);             /*等待转换完成*/ 
RC=1;BYTE=0;                 /*进入读模式,选择低字节*/ 
ul=XBYTE[0xffff];                 /*读转换结果低8位*/ 
BYTE=1;                     /*选择高字节*/ 
uh=XBYTE[0xffff]&0x0f;            /*读转换结果高4位*/ 
u=uh*256+ul;                 /*得到12位转换结果*/ 
if(u>=0x0800) 
u=u|0xf000;                     /*如果为负值,则符号扩展*/ 
return(u);                     /*返回转换结果*/ 


void DAQ(uint interval) 

uchar th,tl; 
uint i; 
interval=interval-5;                /*减去TF0清零和装载计数初值的时间5μs*/ 
th=255-(interval/256); 
tl=255-(interval%256);             /*计算计数初值*/ 
TMOD=0x01;                 /*定时器0,方式1 */ 
TH0=th; TL0=tl;                /*装载计数初值*/ 
TR0=1;                    /*启动定时*/ 
for(i=0;i{  
do{}while(!TF0);                /*查询等待TF0复位*/ 
TF0=0;                     /*清溢出标志*/ 
TH0=th;TL0=tl;                 /*装载计数初值*/ 
array[i]=ADS7804();             /*采样、存储*/ 

TR0=0; /*停止定时*/ 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
stm32 总线矩阵介绍