打印
[AVR单片机]

avr单片机如何进行类似于51的绝对地址访问?(XBYTE)

[复制链接]
1557|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
1061zou|  楼主 | 2013-4-13 20:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
qin552011373| | 2013-4-14 11:13 | 只看该作者
你最好列出你用的详细的型号   另外  这个应该有成熟的方案

使用特权

评论回复
板凳
1061zou|  楼主 | 2013-4-16 23:36 | 只看该作者
qin552011373 发表于 2013-4-14 11:13
你最好列出你用的详细的型号   另外  这个应该有成熟的方案

atmega16单片机。比如读写ADC0809的话,51可以
#include<reg52.h>
#include<absacc.h>
#define AD XBYTE[0xfeff]        //P2^0接ADC的CS口
void main()
{
uchar a;
a=AD;
while(1);
}
51可以方便的利用绝对地址访问从P0口读、写数据,请问ATMEGA16如何实现呢?谢谢!

使用特权

评论回复
地板
qin552011373| | 2013-4-17 10:50 | 只看该作者
1061zou 发表于 2013-4-16 23:36
atmega16单片机。比如读写ADC0809的话,51可以
#include
#include

大概想了一种方法  可以直接拿出八个IO口分别度电平  读出来之后再进行运算  当然也可以用一些IC 譬如说595/7219来实现  可以试一下

使用特权

评论回复
5
ccxlslr| | 2013-4-17 11:26 | 只看该作者
本帖最后由 ccxlslr 于 2013-4-17 11:30 编辑

看一下XBYTE是如何定义的就知道了!
它应该是一个指向0地址的指针,并且类型为外部存储器

#define XBYTE ((unsigned char volatile xdata *) 0)

使用特权

评论回复
6
fp123123| | 2013-4-17 12:26 | 只看该作者
把ADC0809的8个输出脚, 接到M8的PD0 - PD7, PORTD设置为输入, 程序就可以用 a = PIND 直接读了

使用特权

评论回复
7
huangxz| | 2013-4-17 14:09 | 只看该作者
内存的绝对地址访问用 *(char *)addr就可以了啊,这个跟啥单片机没有关系吧

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
qin552011373 + 6 很给力!
8
1061zou|  楼主 | 2013-4-17 19:04 | 只看该作者
51是可以在绝对地址访问过程中,自动产生WR/RD 信号的。。。AVR我看也有wr/rd引脚,但不知道如何操作

使用特权

评论回复
9
qin552011373| | 2013-4-17 22:21 | 只看该作者
方法是有了  你试一下吧

使用特权

评论回复
10
huangxz| | 2013-4-17 22:23 | 只看该作者
1061zou 发表于 2013-4-17 19:04
51是可以在绝对地址访问过程中,自动产生WR/RD 信号的。。。AVR我看也有wr/rd引脚,但不知道如何操作 ...

外部总线使能就可以了,前提是你使用的AVR支持外部总线

使用特权

评论回复
评论
1061zou 2013-4-18 19:52 回复TA
给力 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

237

帖子

1

粉丝