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

[复制链接]
1937|9
 楼主| 1061zou 发表于 2013-4-13 20:04 | 显示全部楼层 |阅读模式
如题,51是通过P2和P0口绝对地址访问的,可自动产生RD/WR信号,最近刚学AVR单片机,问一下如何实现?谢谢!
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来实现  可以试一下
ccxlslr 发表于 2013-4-17 11:26 | 显示全部楼层
本帖最后由 ccxlslr 于 2013-4-17 11:30 编辑

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

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

fp123123 发表于 2013-4-17 12:26 | 显示全部楼层
把ADC0809的8个输出脚, 接到M8的PD0 - PD7, PORTD设置为输入, 程序就可以用 a = PIND 直接读了
huangxz 发表于 2013-4-17 14:09 | 显示全部楼层
内存的绝对地址访问用 *(char *)addr就可以了啊,这个跟啥单片机没有关系吧

评分

参与人数 1威望 +6 收起 理由
qin552011373 + 6 很给力!

查看全部评分

 楼主| 1061zou 发表于 2013-4-17 19:04 | 显示全部楼层
51是可以在绝对地址访问过程中,自动产生WR/RD 信号的。。。AVR我看也有wr/rd引脚,但不知道如何操作
qin552011373 发表于 2013-4-17 22:21 | 显示全部楼层
方法是有了  你试一下吧
huangxz 发表于 2013-4-17 22:23 | 显示全部楼层
1061zou 发表于 2013-4-17 19:04
51是可以在绝对地址访问过程中,自动产生WR/RD 信号的。。。AVR我看也有wr/rd引脚,但不知道如何操作 ...

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评论

给力  发表于 2013-4-18 19:52
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

237

帖子

1

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