42
MICROCONTROLADORES MICROCONTROLADORES 1/40 PROGRAMAÇÃO FAMÍLIA 8051 Jorge Henrique Busatto Casagrande, Msc. [email protected] - rev. mar/10 Suporte - http://moodle.sj.ifsc.edu.br

microcontroladores PARTE1 [Modo de Compatibilidade]

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

MICROCONTROLADORES

� MICROCONTROLADORES

1/40

� PROGRAMAÇÃO FAMÍLIA 8051

Jorge Henrique Busatto Casagrande, Msc.

[email protected] - rev. mar/10

Suporte - http://moodle.sj.ifsc.edu.br

MICROCONTROLADORES

� MICROCONTROLADORES

2/40

� PROGRAMAÇÃO FAMÍLIA 8051

� Bibliografia recomendada para esta primeira parte:� Gimenez, Salvador Pinillos – Microprocessador 8051; Pearson Prentice Hall, 2002;

� Nicolosi, Denys E.C. – Microcontrolador 8051 Detalhado, 4ª ed. Erica, 2000

� Set de instruções ATMEL 89S8252

MICROCONTROLADORES

� O que é um microcontrolador:

� Conjunto de circuitos digitais combinacionais e seqüenciais organizados e interconectados em uma arquitetura padrão de modo que possam ser configurados através de um programa de linguagem própria criados livremente pelo programador.

3/40

programador.� Para que servem:

� Redução de complexidade e custos de circuitos aplicados a solução de problemas que possuem muitas variáveis de entrada e saída e que ainda podem necessitar de alguma interação com o usuário ex.: eletrodomésticos, brinquedos, periféricos, instrumentação, controle, acesso, comunicação, etc...

MICROCONTROLADORES

CPUUnidade Central

de Processamento

ROMMemória

de Programa

RAMMemória

deDados

Dispositivos de

Entrada e Saída

Barramento

4/40

� O que é necessário para funcionar:

� Um programa (software - SW) em linguagem de máquina (Assembly) criado pelo usuário;

� Um hardware (HW) adicional (dispositivos de entrada e saída – I/O) de acordo com a aplicação.

MICROCONTROLADORES

� Microcontrolador x Microprocessador

� Suas filosofias são iguais, diferem-se na aplicação:

� O microprocessador (uP) é dedicado para funções que envolvem maior volume de dados na ROM, RAM e processamento de ULA e registradores.

� Microcontroladores (uC) integram, além do Hardware (HW) do uP, outros circuitos com funções diversas e de Entrada/Saída (I/O) nos quais estará mais dedicado.

5/40

Entrada/Saída (I/O) nos quais estará mais dedicado.

� O uC é um uP com seus periféricos em um chip só!

� Arquiteturas internas baseadas em:

� Von-Newman – único barramento de dados para a ROM e RAM - Família 8051, 8751, 80550, etc…

� Harvard – Barramentos independentes da memória de dados (RAM) e de programa (ROM) - PICs em geral

� Instruções disponíveis para programação:� RISC – Reduced Instruction Set Computing (PICs)

� CISC – Complex Instruction Set Computing (família 8051)

MICROCONTROLADORES

� Ciclo de busca de instruções na ROM

REGISTRADORES

Acumulador (ACC)

N

PC

Contador de Programa

xxxxH=opcode

IR

C P U ADDRESS BUS

DATA BUS

DADO END.

6/40

MEMÓRIA VOLÁTIL (RAM INTERNA)

UNIDADE DE CONTROLE

Unidade de decodificação da instrução

ALU

UNIDADE LÓGICA E

ARITMÉTICA

ROM

xxxxH(N)

N-1

N+1

xxxxH=opcode

CONTROLE

MICROCONTROLADORES

� Primeiro contato com um programa em linguagem de baixo nível (assembly): Microprocessador hipotético (não comercial)

� Exemplo de uma arquitetura simplificada de uma CPU e sua interação com as memórias de programa e de dados:

wrrd

RAM

Memória de Dados

ROM

Memória de Programa

7/40

Barramento de Endereço:A3,A2,A1,A0

Barramento de Dados:D5,D4,D3,D2,D1,D0

psen

PC IR A B

Unidade de Controle ULA

MICROPROCESSADOR Hipotético

� Componentes da CPU:� Unidade de Controle.� Unidade Lógica e Aritmética.� Registrador de Instrução (IR): Armazena a instrução que

será executada pela CPU.� Contador de Programa (PC): Armazena o endereço da

próxima instrução a ser executada.Registrador A e Registrador B: Registros temporários

8/40

� Registrador A e Registrador B: Registros temporários para transferência de dados da memória e operações de lógica e aritmética.

� Barramentos:� Barramento de Dados - 6 bits : D5, D4, D3, D2, D1, D0.� Barramento de Endereço - 4 bits : A3, A2, A1, A0.� Barramento de Controle:

� wr - Escrever RAM (memória de dados).� rd - Ler RAM (memória de dados).� psen - Ler ROM (memória de programa).

MICROPROCESSADOR Hipotético

� Inicialização da CPU;� Registros A, B e IR são zerados;

� Registro PC assume endereço inicial da ROM: 0000.

� Ciclo de Busca e Execução de Instrução no uP:� Ciclo de busca:

� 1) Carrega endereço do PC e coloca no Barramento de Endereços;

9/40

Endereços;� 2) Envia controle de leitura psen para Memória de

Programa;� 3) Lê instrução do Barramento de Dados e coloca no

Registrador de Instrução (IR);� 4) Incrementa PC em função do número de palavras da

instrução.� Ciclo de execução:

� Executa a instrução que está no Registrador de Instrução (IR), atualizando registros ou dados da memória, de acordo com o opcode em questão.

MICROPROCESSADOR Hipotético

Conjunto de Instruções Disponíveis na Unidade de Co ntrole: EXEMPLO!!!

Código Binário daInstrução (opcode):

N. de palavrasda instrução:

Descrição da Instrução: Mnemônico daInstrução(Código Assembly):

00XXXX 1 Ler endereço XXXX da memória dedados para acumulador A.

MOV A,direto

01XXXX 1 Escrever no endereço XXXX damemória de dados o valor doacumulador A.

MOV direto,A

100000 1 Somar acumulador A comregistrador B e colocar resultado

ADD A,B

10/40

registrador B e colocar resultadoem A.

100001 1 Decrementar acumulador A. DEC A100010 1 Mover o conteúdo do acumulador A

para o registrador B.MOV B,A

100011 1 Subtrair o valor do registrador B doacumulador A e colocar resultadoem A.

SUBB A,B

100100 1 Parar o microprocessador. HALT100101YYYYYY

2 Mover o dado imediato YYYYYY(armazenado na memória deprograma) para o acumulador A

MOV A,#dado6

11XXXX 1 Saltar (JUMP) para o endereçoXXXX da memória de programa seacumulador A for diferente de 0.

JNZ direto

MICROPROCESSADOR Hipotético

� Modos de endereçamento disponíveis:� Direto: O conteúdo entre duas posições (direto) da memória

RAM é associada com o operador. Ex.: Exemplos: � MOV A,direto (coloca o conteúdo de direto em A)

� ADD A,B (soma em A o conteúdo de B)

� Imediato: Um dado fornecido (dado6) é depositado na posição

11/40

de memória (RAM) especificada. Ex.:

� MOV A,#010011 (coloca o conteúdo 010011 em A)

� Relativo: Permite alterar o conteúdo do contador de programa (PC) para um novo valor. Pode-se também testar uma condição para validar o desvio. Ex.:

� JNZ 0010 (compara o A com zero. Se diferente de zero PC=0010, senão segue o próximo passo do programa ou seja PC=PC+1).

MICROPROCESSADOR Hipotético

Conteúdo Exemplo da Memória de Programa (ROM)

Endereço Conteúdo Significado da instrução(conforme INSTRUÇÕES da UC)

CódigoAssembly

0000 000001 Movimenta conteúdo lido da posição0001 da memória de dados para oregistrador A

MOV A,0001

0001 100010 Move o conteúdo do registrador Apara o registrador B

MOV B,A

0010 000010 Movimenta conteúdo lido da posição MOV A,0010

12/40

0010 000010 Movimenta conteúdo lido da posição0010 da memória de dados para oregistrador A

MOV A,0010

0011 100011 Subtrair o valor do registrador B doacumulador A e colocar resultado em A.

SUBB A,B

0100 110011 Saltar (JUMP) para o endereço 0011 damemória de programa se acumulador Afor diferente de 0.

JNZ 0011

0101 010000 Escrever no endereço 0000 da memória dedados o valor do acumulador A.

MOV 0000,A

0110 100100 Parar o microprocessador. HALT

0111... xxxxxx - -

MICROPROCESSADOR Hipotético

Conteúdo dos principais registros a cada passo do programa exemploIR(registradorde instrução)

A B PC RAM0000

RAM0001

RAM0010

RAM0011

000000 000000 000000 0000 000111 000001 000011 000010000001 000001 “ 0001 “ “ “ “100010 “ 000001 0010 “ “ “ “000010 000011 “ 0011 “ “ “ “100011 000010 “ 0100 “ “ “ “

13/40

Desafio: Use o uP hipotético e realize um programa que multiplique os valores da RAM 0000 e 0001 colocando o resultado na RAM 0011.

100011 000010 “ 0100 “ “ “ “110011 “ “ 0011 “ “ “ “100011 000001 “ 0100 “ “ “ “110011 “ “ 0011 “ “ “ “100011 000000 “ 0100 “ “ “ “110011 “ “ 0101 “ “ “ “010000 “ “ 0110 000000 “ “ “100100 “ “ 0111 “ “ “ “

“ “ “ “ “ “ “ “

MICROPROCESSADOR Hipotético

Desafio: Use o uP hipotético e realize um programa que multiplique os valores da RAM 0000 e 0001 colocando o resultado na RAM 0011.

Provável solução desde que B<>0 em AxB=C. Ex.: A= 4 E B=3 ROMROM INSTRUÇÃOINSTRUÇÃO0000 MOV A,#0001000010 MOV 0000,A0011 MOV A,#0000110101 MOV 0001,A

14/40

0101 MOV 0001,A0110 MOV 0010,A0111 MOV A,00001000 ADD A,B1001 MOV B,A1010 MOV A,00101011 DEC A1100 JNZ 01101101 ADD A,B1110 MOV 0011,A1111 HALT

MICROPROCESSADOR Hipotético

Desafio: Use o uP hipotético e realize um programa que multiplique os valores da RAM 0000 e 0001 colocando o resultado na RAM 0011.

Outra solução desde que A<>{0,1} em AxB=C. Ex.: A= 4 E B=3 MOV A,#000100DEC AMOV 0000,AMOV A,#000011MOV 0001,A

15/40

MOV 0001,ASOMAR: MOV A,0001

MOV B,AADD A,BMOV 0001,AMOV A,0000DEC AMOV 0000,AJNZ SOMARHALT

MICROCONTROLADOR FAMÍLIA 8051

� PESQUISA � Encontre as diferenças entre as arquiteturas computacionais de

Von-Neumann e Harvard. Explique melhor por que a família 8051 se enquadra como Von-Newman.

� Para cada dispositivo programável abaixo, resumidamente explique o que é e qual sua principal aplicação nos dias atuais:

a) PAL e GAL

16/40

b) PLDsc) PICsd) FPGAs

� Que são os modelos RISC e CISC? Por que um PIC se encaixa como um RISC? Existe comercialmente um uC ou uP com um misto destes dois modelos?

MICROCONTROLADOR FAMÍLIA 8051

� Exemplo de blocos básicos de um microcontrolador comercial:

17/40

MICROCONTROLADOR FAMÍLIA 8051

� Atmel 89S8252

� CPU de 8 bits otimizada para aplicações de controle;

� Facilidades para processamento “booleano” (Byte/bit);

� Possibilidade de 64 Kbytes de memória de programa;

18/40

� Possibilidade de 64 Kbytes de memória de programa;

� Possibilidade de 64 Kbytes de memória de dados;

� 256 Bytes de RAM de dados sobre o chip;

� 128 Bytes de registradores de funções especiais (SFR);

� 8K Bytes de memória de programa (Flash ROM) sobre o chip;

MICROCONTROLADOR FAMÍLIA 8051

� Atmel 89S8252

� 2K Bytes EEPROM para dados sobre o chip.

� 32 linhas de I/O bidirecionais endereçáveis individualmente e por byte;

19/40

� 3 temporizadores/contadores de 16 bits;

� 8 fontes de interrupção com dois níveis de prioridade;

� Comunicação serial “full-duplex”;

� Clock variando de 0 Hz à 33 Mhz.

MICROCONTROLADOR FAMÍLIA 8051

� Atmel: Exemplos de versões 89x

20/40

MICROCONTROLADOR FAMÍLIA 8051

21/40

MICROCONTROLADOR FAMÍLIA 8051

� Atmel 89S8252 – encapsulamentos mais comuns

DIP

22/40

MICROCONTROLADOR FAMÍLIA 8051

� Valores dos operandos:� Nenhum caracter especial: DECIMAL

� Precede com @ ou sucede com O: OCTAL

� Precede com $ ou sucede com H: HEXADECIMAL

� Precede com % ou sucede com B: BINÁRIO 8 BITS

� Modos de endereçamento disponíveis e exemplos:Direto: MOV A,5 ; DIV AB

23/40

� Direto: MOV A,5 ; DIV AB

� Imediato: MOV A,#5 ; MOV DPTR,#10AFH

� Relativo: SJMP DESVIO, SJMP FBH

� Registrador: MOV A,Rn ; MOVX A,@Ri

� n = 0 à 7 e i = 0 ou 1.

� Indireto: MOV A,@R1

� Absoluto: ACALL, AJMP – 2 bytes e desvio de até 2Kbytes

� Longo: LCALL, LJMP – 3 bytes e desvio de até 64Kbytes

� Indexado: JMP @A+DPTR, MOVC A,@A+PC

MICROCONTROLADOR FAMÍLIA 8051

� Organização da Memória: Programas podem ser deposita dos na ROM interna ou externa e podem manipular dados na RAM i nterna e externa!

RAM Interna

24/40

RAM Externa

ROM Externa

ROM Interna

MICROCONTROLADOR FAMÍLIA 8051

� Detalhe do endereçamento Relativo: SJMP DESVIO, SJMP FBH

25/40

MICROCONTROLADOR FAMÍLIA 8051

� Detalhe do endereçamento Absoluto: ACALL, AJMP

26/40

MICROCONTROLADOR FAMÍLIA 8051

� Detalhe do endereçamento por registrador: MOVX A,@Ri

Consideração: supor que anteriormente:MOV R1,#30HMOV 30H,#05

@ = “ENDEREÇADO POR...”

27/40

MICROCONTROLADOR FAMÍLIA 8051

� Organização da Memória: Exemplos de instruções para colocar o conteúdo em A das memórias ROM, RAM interna e RAM externa.

28/40

1FFF

MICROCONTROLADOR FAMÍLIA 8051

� Mapa da memória RAM interna

29/40

MICROCONTROLADOR FAMÍLIA 8051

� Barramentos para acesso a Memória de dados e de programa externas

30/40

MICROCONTROLADOR FAMÍLIA 8051

� Detalhe das conexões de HW para acesso a ROM externa

31/40

Portas P0 e P2 são sacrificadas!

MICROCONTROLADOR FAMÍLIA 8051

� Detalhe das conexões de HW para acesso a RAM externa

32/40

Portas P0 e P2 são sacrificadas!

MICROCONTROLADOR FAMÍLIA 8051

� Circuito típico de uC com acesso a RAM e ROM externa

33/40

MICROCONTROLADOR FAMÍLIA 8051

� Ciclo de máquina: Na família 8051, 1 ciclo = 12 pulsos de clock (P).� Um MOV A,Rn gasta 1byte de ROM e 1 ciclo de máquina� Já um MOV direto,direto consome 3 bytes de ROM e 2 ciclos de máquina� Quanto ciclos e espaço de ROM consome um LCALL rel ? E um INC A?

34/40

MICROCONTROLADOR FAMÍLIA 8051

� Temporizações do ciclo de máquina com e sem um MOVX (acesso à RAM)

35/40

MICROCONTROLADOR FAMÍLIA 8051

� Detalhe da RAM interna de 256bytes (acesso rápido)

Acesso indireto somente

36/40

MICROCONTROLADOR FAMÍLIA 8051

� Acesso aos bancos de registradores endereçáveis

37/40

FAMÍLIA 8051

� Mapa dos registradores especiais (SFR)

38/40

MICROCONTROLADOR FAMÍLIA 8051

� Exemplos de funções dos registradores SFR

39/40

MICROCONTROLADOR FAMÍLIA 8051

� Mapa da RAM Interna (Upper byte 128 à 255)

40/40

MICROCONTROLADOR FAMÍLIA 8051

� Mapa da RAM Interna (Lower - byte 0 à 127)

41/40

FAMÍLIA 8051

� Mapa completo dos bits da RAM Interna (8051)

42/40

� FIM DA PRIMEIRA PARTE!