Você está na página 1de 33

Microcontroladores

Registradores de funções especiais


do Microcontrolador 8051
Introdução
• Apresentação dos registradores de funções
especiais do Microcontrolador 8051
Acumulador (ACC ou A)
• O acumulador é um registrador de uso geral e é um
operador em várias instruções, sendo também o lugar
onde fica o resultado de várias operações.

• Ele é muitas vezes parte do operando da instrução.


Acumulador (ACC ou A)
• Exemplo:

• add A, Rn: soma o conteúdo do registrador Rn ao conteúdo


do acumulador.
• Resultado fica no acumulador

• mov A, Rn: move o conteúdo do registrador Rn ao conteúdo


do acumulador.
• O conteúdo anterior do acumulador é perdido
Acumulador (ACC ou A)
• Note que temos o endereço do byte ACC igual a E0h e o
endereço do bit ACC0 também como E0h.

• Não há confusão na hora de programar pois as instruções que


manipulam bit são diferentes das instruções que manipulam
byte
Acumulador (ACC ou A)
• Exemplo:

• clr E0h = clr bit (E0h) = clr ACC0


Ports P0, P1, P2 e P3
• São os registradores que espelham a situação atual dos pinos
físicos dos ports. Possuem endereço de bit e endereço de byte

• PORT P0: Propósito geral se não usarmos memória externa.

• Caso contrário, multiplexa endereços/dados.


Ports P0, P1, P2 e P3
• PORT P1: Propósito geral como I/O. Via software, posso ler e
escrever nesse port
Ports P0, P1, P2 e P3
• PORT P2: Propósito geral se não usarmos memória externa.

• Se usarmos fica dedicado exclusivamente a função de


gerenciamento de endereços


Ports P0, P1, P2 e P3
• PORT P3: Propósito geral se não usarmos nenhum periférico
interno ao microcontrolador.

• Todos os pinos são compromissáveis com algum periférico ou


comunicação externa.
Ports P0, P1, P2 e P3
• PORT P3:
Exemplos
• Exemplos de instruções que abordam os ports:

• MOV P1, #00h: Move o valor 00h para o port P1, isto é, “zero”
para todo o port P1.

• MOV A, P0: Move o conteúdo do registrador P0 para o


acumulador, ou seja, lê o port P0 e guarda no acumulador
Exemplos

• SETB P3.7: Faz pino 7 do port P3 ficar em nível lógico 1

• CLR P1.0: Faz pino 0 do port P1 ficar em nível lógico 0


Registrador B (F0h)
• Esse registrador tem seu nome referenciado em algumas
instruções como: MUL AB , DIV AB , que são operações entre
os registradores A e B, fora isso ele é um registrador como
outro qualquer.

• Repare que os bits de B não possuem nomes individuais


PSW (Program Status Word)
• É um registrador de status da última operação realizada no
acumulador

• Este registrador contém flags (bits) que indicam as ocorrências da


ULA a cada operação lógica e aritmética que houver, e também
avisa qual banco de registradores está ativo.

bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0

(PSW) = C AC F0 RS1 RS0 OV - P


PSW (Program Status Word)
• É um registrador de status da última operação realizada no acumulador
PSW (Program Status Word)
• PSW.7 – (CY) ou C – Carry - D7h

• É um indicador de ‘vai um’ em operações aritméticas: vai para 1


quando uma soma com o Acumulador estoura na sua capacidade
(isto é, o sétimo bit ou o ACC.7 vai para uma próxima casa que não
existe; seria um nono bit, que é um estouro da conta).
PSW (Program Status Word)
• Exemplo:

• ACC = FFh e após isso aparece a instrução:

• ADD A, #01h. A soma fará com que o resultado de A seja


00h e ‘vai um’ para o carry, ‘CY’ é setado em PSW.
PSW (Program Status Word)
• O CY também é utilizado como se fosse o acumulador para um só
bit.

• Existem várias instruções booleanas que usam o ‘C’ como


operando, em que se posiciona o resultado das operações.

• Exemplo:

• ANL C, ACC.0 - Executa um AND booleano entre o carry e o bit


ACC.0. O resultado da operação fica em ‘C’ (equivalente ao
acumulador para operações com byte)
PSW (Program Status Word)
• PSW.6 –(AC) - Auxiliary Carry - D6h

• É um indicador de vai um entre os 4 primeiros bits do acumulador,


isto é, é o vai um de um nibble para outro nibble no acumulador.

• É muito útil em aritmética BCD em que os nibbles que


correspondem a 4 bits são representados por um número
codificado em binário, mas que representa um decimal de 0 a 9.
PSW (Program Status Word)

• PSW.5 – (F0) – D5h

• É um bit registrador de uso geral, não possui função especifica


e não indica nada.

• Sobrou dentro do PSW


PSW (Program Status Word)

• PSW.4 – RS1 – D4h e PSW.3 – RS0 – D3h

• RS1 (Register bank Select 1) e RS0 (Register bank Select 0)

• Estas duas flags selecionam o banco de registradores do


começo da RAM interna.
PSW (Program Status Word)

• São dois bits que fazem mudar o banco de registradores a que


se referem os nomes R0 a R7, utilizados nas instruções que
trabalham com esses registradores.

• Os bancos não são acessáveis por bit. Apenas por byte.


PSW (Program Status Word)
• Exemplo: MOV A, R0: Move para ACC o conteúdo do registrador R0. Mas para qual
R0 ?. Os bits RS0 e RS1 é que dizem a qual R0 de qual banco está se referindo.

• Qual se liga a máquina ou ocorre um reset, o banco apontado pelo PSW é o banco
0.
PSW (Program Status Word)
• Bancos
PSW (Program Status Word)
• PSW.2 – (OV) - Overflow Flag - D2h

• É um bit que vai para 1 quando, após uma adição ou subtração,


acontece um estouro da conta.

• Indica que um resultado errado foi gerado após a realização das


instruções aritméticas

• PSW.1 – D1h
• Bit não disponível ao usuário
PSW (Program Status Word)
• PSW.0 – P – Parity –D0h

• Indica se um byte que está dentro do acumulador apresenta paridade par ou


impar.

• Paridade é o resultado par ou ímpar do somatório binário do acumulador


• P = 0 (qte de num 1s par) : Paridade Par
• P = 1 (qte de num 1s ímpar) : Paridade Ímpar

• É útil quando se trabalha com o canal serial, pois ele muitas vezes necessita desta
informação.
PSW (Program Status Word)
• CY (carry), AC (auxiliary carry) e OV (overflow) são modificadas pelas instruções:
Data Pointer - DPTR
• O registrador Data Pointer – DPTR de 16 bits é formado pelo par de
registradores:

• DPH Data Pointer High (83) – 8bits


• DPL Data Pointer Low (82) – 8bits

• Esses registradores juntos formam um registrador de 16 bits e permite


criar um endereço de acesso externo.
Data Pointer - DPTR

• Com 16 bits eu posso endereçar até 64 Kbytes de memória externa.

• Existem instruções que utilizam o DPTR como ponteiro de memória:

• MOVX A, @DPTR: move para A o conteúdo apontado pela posição


de memória externa dada pelo endereço de DPTR
Data Pointer - DPTR
• Na prática primeiros carregamos o DPTR (isto é, DPH e DPL) como o
endereço desejado e depois utilizamos a instrução MOVX.

• MOV DPTR, #2000h – carrega o DPTR com o endereço de 16 bits 2000h

• MOVX A, @DPTR – move o conteúdo de posição 2000h para A

• Essa é a única maneira de um microcontrolador de 8 bits manipular um


endereço de 16 bits
Exercícios
• 1) Faça uma descrição dos seguintes
registradores de funções especiais do
microcontrolador 8051:

• Acumulador
• PSW
• DPTR
Bibliografia
• GIMENEZ, S. P. Microcontroladores: 8051. São Paulo: Pearson Education,
2002.
• STALLINGS, W. Arquitetura e organização de computadores. 5. ed. São
Paulo: Prentice Hall, 2002.
• HENNESSY, J. L.; PATTERSON, D. A. Arquitetura de computadores: uma
abordagem quantitativa. Rio de Janeiro: Campus, 2003.
• NICOLOSI, D. E. C., Microcontrolador 8051 detalhado, 5. ed. São Paulo:
Érica, 2004.

Você também pode gostar