Engineering Agit

[8051 Micro-processor study 03] - #2 AT89S52 Memory organization 본문

Embedded Lab. @ Modu inst./2020 Session 01 (2020.02~)

[8051 Micro-processor study 03] - #2 AT89S52 Memory organization

Sean_Kim95 2020. 3. 6. 14:39

#1 Memory organization

MCS-51계열의 칩은 program memory와 data memory 주소가 구분되어있는 구조(Harvard architecture)이다. 각각 64KB의 주소 공간을 갖는다. 

1) Program memory

만일 EA pin이 GND에 연결되어 있으면, 모든 프로그램은 external memory에서 직접 fetch해온다. AT89S52의 경우에는 이 pin이 Vcc에 연결되어있을 경우 0x00 ~ 0x1fff까지의 주소는 internal memory에서 fetch해오고 0x2000 ~ 0xffff까지의 주소는 external memory에서 fetch해온다.

2) Data memory

AT89S52에는 256 byte의 RAM이 on-chip으로 올라가 있다. 상위 128 byte는 SFR이라는 parallel address space에 할당되어있다. 이 말은 상위 128 byte는 SFR space와 동일한 주소 값을 갖고 있지만 물리적으로는 분리되어있다는 뜻이다.

Instruction이 internal memory의 0x7f 주소 이상에 access할 때, instruction에서 사용되는 address mode는 상위 128 byte를 사용할 지 SFR space를 사용할지를 특정짓는다. Direct addressing을 사용하는 instruction은 SFR space에 access한다.

예를 들어 다음의 direct addressing instruction은 SFR의 0x0a0번지(P2)에 access한다.

MOV 0A0H, #data

Indirect addressing을 사용하는 instruction은 RAM의 상위 128 byte에 access한다. 예를 들어, 다음의 indirect addressing(R0는 0x0a0을 포함한다)은 P2가 아닌 0x0a0번지에 있는 data byte에 접근한다.

MOV @R0, #data

[Stack operation은 indirect addressing의 예시이므로, RAM의 상위 128 byte는 stack space라고 생각하면 된다.]

 

#2 SFR

<Table 1> SFR Map & Reset value

 

주의! 모든 주소가 SFR로 할당된 것은 아니다. 할당되지 않은 주소는 칩의 제조사와 칩넘버에 따라 아예 존재하지 않을 수 있다. 이렇게 SFR로 할당되지 않은 주소에 값을 읽는 것은 무작위 값을 불러오며 이 주소에 값을 쓸 경우에는 의도치 않은 동작을 야기할 수 있다. 

Timer 2 Reg.: Timer 2를 위한 control과 status bits는 'T2CON'과 'T2MOD'에 담겨있다. RCAP2H와 RCAP2L은 Timer 2의 Capture/Control reg.이며 각각 16bit capture mode와 16bit auto-reload mode를 담당한다. -> PWM을 위해 사용.

Interrupt Reg.: IE reg.에 각각의 interrupt를 각각 활성/비활성할 수 있는 bit들이 있다. IP reg.안에서 6 개의 interrupt중2개의 우선순위를 갖는 interrupt를 설정할 수 있다.

<Table 2> T2CON

 

<Table 3> AUXR

 

Dual Data Pointer Reg.: Internal 혹은 external data memory에 access하려면 DP0(SFR중에 0x82~0x83주소에 있는)와 DP1(SFR중에 0x84~0x85주소에 있는)라는 두 개의 16bit data pointer reg. bank가 할당된다. SFR의 AUXR1의 DPS bit값을 0으로 설정하면 DP0을 DPS bit값을 1로 설정하면 DP1을 선택하게 된다. [주의! 사용자는 반드시 각각의 data access를 하기 전에 DPS bit값을 올바르게 설정해야 한다.]

Power OFF Flag: POF는 SFR의 PCON의 bit 4(PCON.4)에 위치한다. POF는 power up시에 '1'로 설정이 된다. SW적인 control에 의해 set 또는 rest되며, RESET의 영향을 받지는 않는다.

<Table 4> AUXR1

 

Reference
-AT89S52 datasheet, prod. ATMEL corp., 2008
Comments