程序仿真正确,但是程序中的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--);}
|