大虾帮看看我的 adc0816怎么采集不到数据啊 !

[复制链接]
2452|1
 楼主| ccjchen 发表于 2007-4-18 10:45 | 显示全部楼层 |阅读模式
我是将adc0816采集的数据,经过8251扩展的串口传送到电脑显示出来,(其中8251的程序绝对正确)但是16通道采集的结果竟然一样<br />以下是我的程序,在程序中我采集了16个通道的数据,现在我传送进电脑的是0通道.<br />#define&nbsp;_TEST_C_<br />#include&nbsp;&quot;reg52.h&quot;<br />#include&nbsp;&quot;stdlib.h&quot;<br />#include&nbsp;&quot;absacc.h&quot;<br />#include&nbsp;&quot;intrins.h&quot;<br />#include&nbsp;&quot;test.h&quot;<br />#include&nbsp;&quot;math.h&quot;<br />#define&nbsp;uchar&nbsp;unsigned&nbsp;char<br />#define&nbsp;uint&nbsp;&nbsp;unsigned&nbsp;int<br />#define&nbsp;COM8251&nbsp;XBYTE[0x8601]<br />#define&nbsp;DAT8251&nbsp;XBYTE[0x8600]<br /><br />#define&nbsp;IN0&nbsp;&nbsp;&nbsp;XBYTE[0x8000]<br />uchar&nbsp;&nbsp;data&nbsp;data_temp[6]={0x52,0x53,0x54,0x55,0x00,0x58};<br />uchar&nbsp;&nbsp;&nbsp;temp[6]={52,0x53,0x54,0x55,0x00,0x58};<br />uchar&nbsp;k;&nbsp;&nbsp;<br />&nbsp;uchar&nbsp;data&nbsp;a;<br />static&nbsp;uchar&nbsp;idata&nbsp;ad[16];<br /><br />void&nbsp;&nbsp;initmcu(void);<br />void&nbsp;&nbsp;wait(uchar&nbsp;p,q);<br />void&nbsp;&nbsp;init8251();<br /><br />void&nbsp;&nbsp;ad0816(uchar&nbsp;idata&nbsp;*x);<br /><br />void&nbsp;Trans8251(void)&nbsp;&nbsp;interrupt&nbsp;1&nbsp;using&nbsp;1<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TH0&nbsp;&nbsp;=&nbsp;0XFF;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TL0&nbsp;&nbsp;=&nbsp;0XFF;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad0816(ad);//在8251中断中采集16通道数据<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(a=0x5A;a&gt0x30;a--)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((COM8251&0x01)==0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DAT8251=ad[0];//把0通道值传入电脑中<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(k=0;k&lt6;k<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while((COM8251&0x02)==0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp[k]=DAT8251<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />void&nbsp;main(void)&nbsp;<br />{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;EA&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;initmcu();<br />&nbsp;&nbsp;&nbsp;&nbsp;EA&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;init8251();<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//ad0816(ad);<br />&nbsp;&nbsp;<br />}<br /><br />void&nbsp;&nbsp;init8251()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;//wait(11,82);//8251工作速度慢,每送一个控制字,等待一会儿延时2ms<br />&nbsp;&nbsp;&nbsp;&nbsp;COM8251&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;DAT8251&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;DAT8251&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;COM8251&nbsp;=&nbsp;0x40;//以上为8251复位部分<br />&nbsp;&nbsp;&nbsp;&nbsp;wait(11,82);<br />&nbsp;&nbsp;&nbsp;&nbsp;COM8251&nbsp;=&nbsp;0x4e;//9600baud,1停止位,无校验,8位数据,X16<br />&nbsp;&nbsp;&nbsp;&nbsp;wait(11,82);<br />&nbsp;&nbsp;&nbsp;&nbsp;COM8251&nbsp;=&nbsp;0x35;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wait(11,82);<br />}<br /><br />void&nbsp;&nbsp;initmcu(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TMOD&nbsp;=&nbsp;0x06;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//9600波特11.0592MHz,方式2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TL0&nbsp;&nbsp;=&nbsp;0XFF;&nbsp;&nbsp;&nbsp;&nbsp;TH0&nbsp;=&nbsp;0XFF;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IP&nbsp;&nbsp;=&nbsp;0x02;&nbsp;ET0&nbsp;=&nbsp;1;TR0&nbsp;=&nbsp;1;<br />}<br /><br /><br />void&nbsp;&nbsp;ad0816(uchar&nbsp;idata&nbsp;*x)<br />{<br />&nbsp;&nbsp;&nbsp;uchar&nbsp;i;<br />&nbsp;&nbsp;&nbsp;uchar&nbsp;xdata&nbsp;*ad_adr;<br />&nbsp;&nbsp;&nbsp;ad_adr=&IN0;<br />&nbsp;&nbsp;&nbsp;for(i=0;i&lt16;i++)<br />&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*ad_adr=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//启动转换从0通道开始<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_nop_();&nbsp;_nop_();&nbsp;_nop_();&nbsp;_nop_();&nbsp;_nop_();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_nop_();&nbsp;_nop_();&nbsp;_nop_();&nbsp;_nop_();&nbsp;_nop_();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=*ad_adr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad_adr++;<br />&nbsp;&nbsp;&nbsp;}<br />}<br /><br />void&nbsp;&nbsp;wait(uchar&nbsp;p,q)<br />{<br />&nbsp;&nbsp;&nbsp;uchar&nbsp;&nbsp;i,j;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//(2*j+3)*i+4<br />&nbsp;&nbsp;&nbsp;for&nbsp;(i=p;i&gt0;i--)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(j=q;j&gt0;j--);<br />}
 楼主| ccjchen 发表于 2007-4-19 10:59 | 显示全部楼层

现在能采集数据拉,却不能实时显示.

当我改变输入的模拟信号时(0到5伏的电压),输出对应的值维持原来的转换值一段时间后,才变为当前的采集的值,不知道是采集频率太快呢,还是怎么回事,我的adc0816时钟信号为:921.4KHz,不知到这个频率怎么样,大虾们帮指点一下.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

446

帖子

1

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