打印
[Atmel]

用AtmelStudio6.2跑mega16例程(56)扩展外存

[复制链接]
785|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ddllxxrr|  楼主 | 2014-11-19 22:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本例中,74LS37362256与AVR 单片机的连接,其中单片机ALE引脚(Address Latch Enable,地址锁存使能)
与74LS373的LE(锁存器使能,Latch Enable)引脚连接,单片机的读写控制引脚RD,WR与62256的OE,WE连接,这3条控制总线引脚负责地址锁存及读/写控制。为了访问外部扩展内存,一定要在主程序内将MCUCR寄存器的最高位SRE置位。
本例向62256写入1001~1200共200个整数。

以下是Studio6.2编译通过的截图:


程序清单:

/*
* GccApplication1.c
*
* Created: 2014/11/19 星期三 下午 10:27:26
*  Author: Administrator
*/



#define F_CPU 1000000UL
#include <AVR/io.h>
#include <util/delay.h>
#include <stdint.h>

#define EXTMEM_ADDR (uint8_t *) 0x8000

//LED 控制
#define LED_ON() (PORTB &=~_BV(PB7))
#define LED_BLINK() (PORTB ^= _BV(PB7))

int main()
{
        uint8_t i;
        DDRB = 0xFF;PORTB = 0xFF;
        LED_ON();_delay_ms(1000);
        MCUCR |= 0x80; //允许访问外部存储器
        for(i=0;i<200;i++)
        {
                *(EXTMEM_ADDR+i)= i+1;
        }

        for(i=0;i<200;i++)
        {
                *(EXTMEM_ADDR+i+0x0100)= *(EXTMEM_ADDR+199-i);
        }

        while(1)
        {
                LED_BLINK();
                _delay_ms(200);
        }
}

相关帖子

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

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2398

主题

6950

帖子

67

粉丝