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

[复制链接]
2773|0
 楼主| ccjchen 发表于 2007-9-13 12:50 | 显示全部楼层 |阅读模式
程序仿真正确,但是程序中的uchar&nbsp;xdata&nbsp;*ad_adr;当我把&nbsp;xdata&nbsp;改为&nbsp;data&nbsp;时就会出错,而我用的单片机是AT89C52,外部扩展的数据存储器为flash的sst29sf040,根本就不能用xdata来直接定义外部数据的存储。但是为什么我用声明为xdata时就正确,声明成data型的就不正确呢?#include&nbsp;&ltabsacc.h&gt#include&nbsp;&ltreg52.h&gt#define&nbsp;uchar&nbsp;unsigned&nbsp;char#define&nbsp;IN0&nbsp;&nbsp;&nbsp;XBYTE[0x8000]void&nbsp;&nbsp;ad0816(uchar&nbsp;idata&nbsp;*x);void&nbsp;&nbsp;wait(uchar&nbsp;p,q);void&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;uchar&nbsp;idata&nbsp;ad[16];&nbsp;&nbsp;&nbsp;&nbsp;ad0816(ad);}//adc0809&nbsp;&nbsp;function...........................................................//void&nbsp;&nbsp;ad0816(uchar&nbsp;idata&nbsp;*x){&nbsp;&nbsp;&nbsp;uchar&nbsp;i;&nbsp;&nbsp;&nbsp;uchar&nbsp;xdata&nbsp;*ad_adr;&nbsp;&nbsp;&nbsp;ad_adr=&IN0;&nbsp;&nbsp;&nbsp;for(i=0;i&lt16;i++)&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*ad_adr=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//启动转换从0通道开始&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(2,26);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//延时114us&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x=*ad_adr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ad_adr++;&nbsp;&nbsp;&nbsp;}}void&nbsp;&nbsp;wait(uchar&nbsp;p,q){&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&nbsp;&nbsp;&nbsp;for&nbsp;(i=p;i&gt0;i--)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(j=q;j&gt0;j--);}<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

446

帖子

1

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