ccjchen 发表于 2007-9-13 12:53

大家帮看看我的adc0816程序,xdata在这里用的对吗?

&nbsp;程序仿真正确,但是程序中的uchar&nbsp;xdata&nbsp;*ad_adr;当我把&nbsp;xdata&nbsp;改为&nbsp;data&nbsp;时就会出错,而我用的单片机是AT89C52,外部扩展的数据存储器为flash的sst29sf040,根本就不能用xdata来直接定义外部数据的存储。但是为什么我用声明为xdata时就正确,声明成data型的就不正确呢?<br />#include&nbsp;&ltabsacc.h&gt<br />#include&nbsp;&ltreg52.h&gt<br /><br />#define&nbsp;uchar&nbsp;unsigned&nbsp;char<br />#define&nbsp;IN0&nbsp;&nbsp;&nbsp;XBYTE<br />void&nbsp;&nbsp;ad0816(uchar&nbsp;idata&nbsp;*x);<br />void&nbsp;&nbsp;wait(uchar&nbsp;p,q);<br /><br />void&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;uchar&nbsp;idata&nbsp;ad;<br />&nbsp;&nbsp;&nbsp;&nbsp;ad0816(ad);<br />}<br />//adc0809&nbsp;&nbsp;function...........................................................//<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;wait(2,26);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//延时114us<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 />}<br />&nbsp;<br />

ayb_ice 发表于 2007-9-13 15:02

你用到了51的总线扩展方式...

把外设看成了XDATA....

ccjchen 发表于 2007-9-13 15:48

那就是说我这样写没有问题了,对吗?

winloop 发表于 2007-9-13 16:59

怎么现在还用这种片子做AD转换

https://bbs.21ic.com/upfiles/img/20079/2007913165912570.jpg

ccjchen 发表于 2007-9-13 19:17

这种没见过,给介绍一下好吗,叫什么名字,在哪可以买到

页: [1]
查看完整版本: 大家帮看看我的adc0816程序,xdata在这里用的对吗?