Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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 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.
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
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.
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.
7FH
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
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.
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.