마이크로 컨트롤러

DDRB=0xFF 의 의미

buykiwi 2012. 1. 20. 02:32

1. DDRB는 <iom128.h>에 다음과 같이 정의된다.
/* Data Direction Register, Port B */
#define DDRB      _SFR_IO8(0x17)

2. _SFR_IO8는 <sfr_defs.h>에 다음과 같이 정의된다.
#define _SFR_IO8(io_addr) _MMIO_BYTE((io_addr) + __SFR_OFFSET)

3. __SFR_OFFSET은  <sfr_defs.h>에 다음과 같이 정의된다.
#ifndef __SFR_OFFSET
#  if __AVR_ARCH__ >= 100
#    define __SFR_OFFSET 0x00
#  else
#    define __SFR_OFFSET 0x20
#  endif
#endif

4. _MMIO_BYTE은  <sfr_defs.h>에 다음과 같이 정의된다.
#define _MMIO_BYTE(mem_addr) (*(volatile uint8_t *)(mem_addr))

따라서, DDRB=0xFF 의 의미는 다음과 같다.
(*(volatile uint8_t *)(0x17+0x20)) =0xFF

메모리주소 0x37 (DDRB로 사용되는 메모리 주소)에 0xFF를 저장하라!!!