打印

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

[复制链接]
1833|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ccjchen|  楼主 | 2007-9-13 12:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 程序仿真正确,但是程序中的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--);
}
 

相关帖子

沙发
ayb_ice| | 2007-9-13 15:02 | 只看该作者

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

把外设看成了XDATA....

使用特权

评论回复
板凳
ccjchen|  楼主 | 2007-9-13 15:48 | 只看该作者

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

使用特权

评论回复
地板
winloop| | 2007-9-13 16:59 | 只看该作者

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

使用特权

评论回复
5
ccjchen|  楼主 | 2007-9-13 19:17 | 只看该作者

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

446

帖子

1

粉丝