Sei sulla pagina 1di 6

2 Organizao de memria

O MCS-51 tem trs espaos de memria: 64K bytes de cdigo (interno ou externo); 256 bytes de dados internos 64K bytes de dados externos. A figura abaixo apresenta o mapa de memria do MCS-51.
FFFFH FFFFH

64 K bytes External Data 256 bytes internal Data FFH

64 K bytes Code

00

0000

0000

2.1

Memria de cdigo

A memria de cdigo contm, as instrues e as constantes que constituem o programa. Entre as constantes contam-se as mensagens de texto, tabelas de converso, etc. O espao de memria de cdigo tem dimenso 64K bytes, apenas acessvel para leitura, sendo a referncia a instrues ou a constantes feita a 16 bits atravs dos registos PC (Program Conter) ou DPTR (Data Pointer). O MCS-51 pode apresentar duas verses: uma em que a memria de cdigo interna, normalmente recorrendo a tecnologia PROM ou FLASH, e outra em que a memria de cdigo externa ao microcontrolador. O CPU aps reset inicia a execuo do programa a partir do endereo 0000H da memria de cdigo. Como a memria de cdigo pode ser interna ou externa ao microcontrolador, o CPU testa o pino de entrada EA (External Access) e em funo do valor lgico nele presente, l as instrues da memria de cdigo interna ou externa.

Ver 2.0 Pgina 2-1

2.2

Memria de dados

O espao de dados dividido em dois sub-espaos distintos: um interno, com a dimenso de 256 bytes e outro externo, com 64K bytes, organizados conforme a figura abaixo.
Memria Externa de dados FFFFH FFH

Memria interna de dados Indirect Data Special Function Registers 7FH 128 bytes Data 00

80H

64K bytes External Data

0000

O MCS-51 elege a memria interna de dados como principal, estando o conjunto das instrues vocacionado para manipulao de dados neste espao. A memria externa de dados, embora de maior dimenso, tem carcter secundrio, devido ao reduzido nmero de instrues disponveis para a sua manipulao.

2.2.1 Memria interna de dados


Como se v na figura acima, a memria de dados interna dividida em trs espaos de 128 bytes cada: DATA memria principal de uso genrico para variveis e registos temporrios,

podendo ser acedida de forma directa ou indirecta. SFR Special Function Register, tal como o nome sugere, constitui um espao

especial para registos do CPU e de interface com os perifricos internos do microcontrolador. IDATA memria s acessvel em modo indirecto. Est indicada por esta razo,

para conter estruturas de dados tipo array. Como se pode verificar na figura acima, existe sobreposio de endereos da IDATA com o SFR, sendo a distino de acesso feita pelo modo de endereamento.

Ver 2.0 Pgina 2-2

2.2.2 Memria DATA


A memria DATA constitui o espao principal de variveis, est alocada entre o endereo 0 e 7FH, e acessvel de modo directo e indirecto. O conjunto das instrues do processador est optimizado em tempo, dimenso e versatilidade para manipular variveis nesta memria. O facto da dimenso da memria interna ser de 256 bytes, permite que a referncia aos dados nela contidos, seja feita a 8 bits, diminuindo assim a dimenso das instrues, bem como o tempo de execuo. Dos 128 bytes que constituem este espao alguns apresentam dupla funcionalidade como mostra a figura abaixo.

7FH

Scratch Pad Area

30H 2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 27H 26H 25H 24H 23H 22H 21H 20H 7FH 77H 6FH 67H 5FH 57H 4FH 47H 3FH 37H 2FH 27H 1FH 17H 0FH 07H 7EH 76H 6EH 66H 5EH 56H 4EH 46H 3EH 36H 2EH 26H 1EH 16H 0EH 06H 7DH 75H 6DH 65H 5DH 55H 4DH 45H 3DH 35H 2DH 25H 1DH 15H 0DH 05H 7CH 74H 6CH 64H 5CH 54H 4CH 44H 3CH 34H 2CH 24H 1CH 14H 0CH 04H 7BH 73H 6BH 63H 5BH 53H 4BH 43H 3BH 33H 2BH 23H 1BH 13H 0BH 03H 7AH 72H 6AH 62H 5AH 52H 4AH 42H 3AH 32H 2AH 22H 1AH 12H 0AH 02H 79H 71H 69H 61H 59H 51H 49H 41H 39H 31H 29H 21H 19H 11H 09H 01H 78H 70H 68H 60H 58H 50H 48H 40H 38H 30H 28H 20H 18H 10H 08H 00H 1FH Register Bank 3 18H R e g i s t e r A r e a 17H Register Bank 2 10H 0FH Register Bank 1 08 07 06 05 04 03 02 01 00 Register Bank 0 Register Bank 0 Register Bank 0 Register Bank 0 Register Bank 0 Register Bank 0 Register Bank 0 Register Bank 0 (R7) (R6) (R5) (R4) (R3) (R2) (R1) (R0)

B i t A r e a

Os primeiros 32 endereos de memria, situados entre 0 e 1FH, alojam quatro bancos de registos, contendo cada um deles, 8 registos de 8 bits cada. Estes registos so de uso genrico e

Ver 2.0 Pgina 2-3

podem ser evocados nas instrues como registos de R0 a R7 (Rn), sendo R0 e R1 (Ri) utilizados como referncia no acesso memria indirecta. Com vista optimizao do cdigo, no que diz respeito utilizao de variveis do tipo Booleano, o espao de memria DATA entre os endereos 20H e 2FH pode ser visto como um banco de 128 bits, com endereos respectivamente entre 0 e 7FH. Neste sentido, o MCS-51, disponibiliza um vasto conjunto de instrues para: leitura, escrita e teste, deste tipo de variveis (ver tabela de instrues de variveis booleanas). As restantes posies de memria desde 30H a 7FH so de uso genrico para variveis.

2.2.3 SFR (Special Function Register)


O SFR est situado entre o endereo 80H e FFH, s acessvel de modo directo e no constitui um espao de memria para variveis. Neste espao esto alocados registos do CPU e de acesso aos perifricos que constituem o microcontrolador. O facto dos registos de acesso a perifricos estarem alocados no espao de endereamento do CPU, levou a que no tenham sido criadas instrues especficas para entrada e sada de dados. Como alguns dos registos do CPU esto alocados neste espao, estes podem ser evocados como parmetro de uma instruo, pelo nome (codificado no cdigo da instruo) ou pelo seu endereo. Este facto, leva a que possam ser construdas instrues, que no esto explcitas no conjunto das instrues (Ex.: ADD A,ACC). Alguns dos registos do SFR permitem o acesso individual a cada um dos seus bits, recebendo nestes casos a denominao de registos endereveis ao bit. A tabela abaixo apresenta os vrios registos contidos no SFR do MCS-51, assinalando com * os registos endereveis ao bit. Para que o endereo do registo coincida com o endereo do bit de menor peso desse registo, os registos com esta caracterstica esto alojados em endereos cujos trs bits de menor peso tm o valor zero.

Ver 2.0 Pgina 2-4

Tabela de registos do SFR


endereo F0H E0H D0H B8H B0H A8H A0H 99H 98H 90H 8DH 8CH 8BH 8AH 89H 88H 87H 83H 82H 81H 80H Registo Valor aps RESET *B 0000 0000 * ACC 0000 0000 * PSW 0000 0000 * IP XXX0 0000 * P3 1111 1111 * IE 0XX0 0000 * P2 1111 1111 SBUF XXXX XXXX * SCON 0000 0000 * P1 1111 1111 TH1 0000 0000 TH0 0000 0000 TL1 0000 0000 TL0 0000 0000 TMOD 0000 0000 * TCON 0000 0000 PCON 0XXX 0000 DPH 0000 0000 DPL 0000 0000 SP 0000 0111 * P0 1111 1111

De entre os registos apresentados na tabela destacam-se os do CPU: *ACC Acumulador, referido no assembly como registo A. B Registo B utilizado como operando e resultado nas operaes de multiplicao e diviso. DPTR Data Pointer, registo de 16 bits para acesso indirecto a memria externa, repartido por dois registos de 8 bits, um contendo a parte alta DPH e outro a parte baixa DPL. SP Stack Pointer, registo apontador, utilizado pelo CPU para implementao na memria interna de uma estrutura de dados tipo pilha (stack). *PSW Program Status Word, registo que contem informao sobre o estado de execuo do programa. O registo PSW tem a seguinte estrutura:

PSW

D7H CY

D6H AC

D5H F0

D4H RS1

D3H RS0

D2H OV

D1H -

D0H P

D0H

CY Carry, activo quando existe arrasto do oitavo para o nono bit nas operaes aritmticas de adio e subtraco. utilizado como entrada nas operaes de soma e subtraco com arrasto. AC Auxiliary carry, activo quando existe arrasto do quarto para o quinto bit na operao de adio ou subtraco. Este bit utilizado pela instruo de ajuste para BCD do resultado da adio de dois operandos BCD. F0 Flag 0, Bit para uso genrico do programador. RS1,RS0 Register Select, dois bits que determinam qual dos quatro bancos de registos se encontra seleccionado.
Ver 2.0 Pgina 2-5

OV Overflow, activo quando o resultado da adio ou da subtraco excede o domnio, entendidos os operandos como valores inteiros com sinal, representados em cdigo dos complementos. Tambm activo quando o resultado da multiplicao ultrapassa o valor 255. P Parity, activo quando no registo A, o nmero de bits com valor lgico 1 se encontra em quantidade mpar.

Como se pode constatar, o espao SFR no se encontra totalmente preenchido pelo MCS-51, permitindo que fabricantes de microcontroladores compatveis com o MCS-51 insiram novos perifricos, alocando neste espao, os registos de acesso. Existem hoje por esta razo, centenas de microcontroladores compatveis com o MCS-51, com as mais diversas funcionalidades.

2.2.4 Memria IDATA


A memria IDATA tem a dimenso de 128 bytes, reside de 80H a FFH e s pode ser acedida indirectamente atravs dos registos Ri ou SP. Este espao de memria destina-se essencialmente a conter estruturas de dados tipo array, como por exemplo a estrutura de dados tipo pilha de bytes (stack).

2.2.5 Memria externa de dados


A memria externa de dados, denominada por XDATA, tem dimenso de 64K bytes, sendo enderevel de 0000H a FFFFH. Dado que no conjunto de instrues do MCS-51 s est disponvel uma nica instruo para transferncia de dados e com forma de acesso indirecto, a XDATA por esta razo uma memria de uso secundrio e est essencialmente indicada para armazenar grandes estruturas de dados organizadas em array, no se propiciando utilizao genrica. Embora no MCS-51, o espao de endereamento da memrias externa de dados e o da memria de cdigo sejam independentes, o acesso a estas, feita utilizando o mesmo barramento (BUS) de dados e de endereos, ainda que os sinais de leitura e escrita sejam independentes.

Ver 2.0 Pgina 2-6

Potrebbero piacerti anche