导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→C51编程:adc0809问题 急![wshb168]

 *第6304篇: C51编程:adc0809问题 急!

  
楼 主:wshb168 2002年11月15日19:16
 C51编程:adc0809问题 急!
我搞过C52+AD574和C52+7135,在搞C52+ADC0809时遇到问题,请各位指教。
1)C52晶振6M,0809的时钟接C52的ALE(1M),0809的D0-D7接P0,通道选择的地址ABC接
P0.0-2。0809的START,EOC,OE,ALE分别接P1的4个引脚(见源程序) ;
2)运行后,从示波器可以看到EOC的负脉冲,0809的VERF为+5V,VERF-接地,CLOCK端也有
时钟。OE在程序控制也有正脉冲;
3)PC上接收的数据,要么采集的数据就是通道号,要么比通道号小的数,不管输入的模拟量
是多少。源程序如下,请各位高手指点,我已经困惑好久了。
#include <at89x52.h> 
#define unchar unsigned char
#define unint unsigned int 

sbit LedFlash = P3^7; /*LED闪烁*/
sbit ad_start =P1^0;  /*AD启动  */ 
sbit eoc =P1^1;  /* 转换结束*/
sbit oute =P1^2;  /*oUT ENABLED*/
sbit ale=P1^3; /*ALE地址锁存*/
sbit pwm1=P1^4;
sbit pwm2=P1^5;

/*************************/
/*主函数                 */
/*************************/
void main(void )
{
  ale=0; 
  ad_start =1;   /*0809复位*/
  oute=0;
  LedFlash=1;  
  initcomm(); /*串口初试化 */
     
  while(1)
 {

  for (jj=0;jj<=7;jj++)
 {  LedFlash=0;  
   P0=jj;  /*  通道号*/
   jj=jj;
   ale=1;   /* 上升沿0809 锁存通道号*/
   jj=jj;
   jj=jj;
   ad_start =1;  /*   0809复位   */
   jj=jj;
   jj=jj;
   ale=0;    /* */
   ad_start =0;  /*AD启动  */ 
   jj=jj;
   jj=jj;
   jj=jj;
   jj=jj;
   jj=jj;
   jj=jj;
   jj=jj;
   jj=jj;
   while(eoc==0);  /* 等待转换结束*/
   oute=1;    /*三态门打开*/
   jj=jj;
   temp1=P0;   
   LedFlash=1;  
   oute=0;
   
   SBUF=jj;  /* 发送通道号*/
   while(TI==0) ; 
   TI=0; 

   SBUF=temp1;  /*发送采集的数据*/
   while(TI==0) ; 
   TI=0; 
   delay (delaytime);
   }
 }
}

/*主函数结束 */ 


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:硬件:cpld检测按键的去抖算法

[下一篇主题]:硬件:nec 70320l