ATmega64A
Assembly Code Example(1)
; OFFSET is defined to 0x2000 to ensure
; external memory access
; Configure Port C (address high byte) to
; output 0x00 when the pins are released
; for normal Port Pin operation
ldi
out
ldi
out
r16, 0xFF
DDRC, r16
r16, 0x00
PORTC, r16
; release PC7:5
ldi
sts
r16, (1<<XMM1)|(1<<XMM0)
XMCRB, r16
; write 0xAA to address 0x0001 of external
; memory
ldi
sts
r16, 0xaa
0x0001+OFFSET, r16
; re-enable PC7:5 for external memory
ldi
sts
r16, (0<<XMM1)|(0<<XMM0)
XMCRB, r16
; store 0x55 to address (OFFSET + 1) of
; external memory
ldi
sts
r16, 0x55
0x0001+OFFSET, r16
C Code Example(1)
#define OFFSET 0x2000
void XRAM_example(void)
{
unsigned char *p = (unsigned char *) (OFFSET + 1);
DDRC = 0xFF;
PORTC = 0x00;
XMCRB = (1<<XMM1) | (1<<XMM0);
*p = 0xaa;
XMCRB = 0x00;
*p = 0x55;
}
Note:
1. See “About Code Examples” on page 8.
Care must be exercised using this option as most of the memory is masked away.
29
8160C–AVR–07/09