程序仿真正确,但是程序中的uchar xdata *ad_adr;当我把 xdata 改为 data 时就会出错,而我用的单片机是AT89C52,外部扩展的数据存储器为flash的sst29sf040,根本就不能用xdata来直接定义外部数据的存储。但是为什么我用声明为xdata时就正确,声明成data型的就不正确呢? #include <absacc.h> #include <reg52.h>
#define uchar unsigned char #define IN0 XBYTE[0x8000] void ad0816(uchar idata *x); void wait(uchar p,q);
void main() { static uchar idata ad[16]; ad0816(ad); } //adc0809 function...........................................................// void ad0816(uchar idata *x) { uchar i; uchar xdata *ad_adr; ad_adr=&IN0; for(i=0;i<16;i++) { *ad_adr=0; //启动转换从0通道开始 wait(2,26); //延时114us x=*ad_adr; ad_adr++; } }
void wait(uchar p,q) { uchar i,j; //(2*j+3)*i+4 for (i=p;i>0;i--) for (j=q;j>0;j--); }
|