大家帮看看我的adc0816程序,xdata在这里用的对吗?
程序仿真正确,但是程序中的uchar xdata *ad_adr;当我把 xdata 改为 data 时就会出错,而我用的单片机是AT89C52,外部扩展的数据存储器为flash的sst29sf040,根本就不能用xdata来直接定义外部数据的存储。但是为什么我用声明为xdata时就正确,声明成data型的就不正确呢?<br />#include <absacc.h><br />#include <reg52.h><br /><br />#define uchar unsigned char<br />#define IN0 XBYTE<br />void ad0816(uchar idata *x);<br />void wait(uchar p,q);<br /><br />void main()<br />{<br /> static uchar idata ad;<br /> ad0816(ad);<br />}<br />//adc0809 function...........................................................//<br />void ad0816(uchar idata *x)<br />{<br /> uchar i;<br /> uchar xdata *ad_adr;<br /> ad_adr=&IN0;<br /> for(i=0;i<16;i++)<br /> {<br /> *ad_adr=0; //启动转换从0通道开始<br /> wait(2,26); //延时114us<br /> x=*ad_adr;<br /> ad_adr++;<br /> }<br />}<br /><br />void wait(uchar p,q)<br />{<br /> uchar i,j; //(2*j+3)*i+4<br /> for (i=p;i>0;i--)<br /> for (j=q;j>0;j--);<br />}<br /> <br />你用到了51的总线扩展方式...
把外设看成了XDATA....那就是说我这样写没有问题了,对吗?
怎么现在还用这种片子做AD转换
https://bbs.21ic.com/upfiles/img/20079/2007913165912570.jpg这种没见过,给介绍一下好吗,叫什么名字,在哪可以买到
页:
[1]