beautypg.com

4 gpior2 – general purpose i/o register 2, 5 gpior1 – general purpose i/o register 1, 6 gpior0 –general purpose i/o register 0 – Rainbow Electronics ATmega8HVD User Manual

Page 21: Atmega4hvd/8hvd, C code example

background image

21

8052B–AVR–09/08

ATmega4HVD/8HVD

The next code examples show assembly and C functions for reading the EEPROM. The
examples assume that interrupts are controlled so that no interrupts will occur during execu-
tion of these functions.

7.6.4

GPIOR2 – General Purpose I/O Register 2

7.6.5

GPIOR1 – General Purpose I/O Register 1

7.6.6

GPIOR0 –General Purpose I/O Register 0

Assembly Code Example

EEPROM_read:

; Wait for completion of previous write

sbic

EECR,EEWE

rjmp

EEPROM_read

; Set up address (r17) in address register

out

EEARL, r17

; Start eeprom read by writing EERE

sbi

EECR,EERE

; Read data from data register

in

r16,EEDR

ret

C Code Example

unsigned char

EEPROM_read(unsigned int uiAddress)

{

/* Wait for completion of previous write */

while(EECR & (1<

;

/* Set up address register */

EEARL = uiAddress;

/* Start eeprom read by writing EERE */

EECR |= (1<

/* Return data from data register */

return EEDR;

}

Bit

7

6

5

4

3

2

1

0

MSB

LSB

GPIOR2

Read/Write

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Initial Value

0

0

0

0

0

0

0

0

Bit

7

6

5

4

3

2

1

0

MSB

LSB

GPIOR1

Read/Write

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Initial Value

0

0

0

0

0

0

0

0

Bit

7

6

5

4

3

2

1

0

MSB

LSB

GPIOR0

Read/Write

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

Initial Value

0

0

0

0

0

0

0

0