Programacao Assembly 8051

Embed Size (px)

Citation preview

  • 8/17/2019 Programacao Assembly 8051

    1/25

    SistemasEmbarcados:Microcontroladores

  • 8/17/2019 Programacao Assembly 8051

    2/25

    Programação

    Assembly8051

  • 8/17/2019 Programacao Assembly 8051

    3/25

    Programação Assembly

    ▪ Ferramentas de simulação

    ▪ MCU 8051 IDE v1.4.7

    ▪ An open source IDE for MCS-51 based microcontrollers forPOSIX Systems, this software is licenced under the GNU GPL v2licence.

    ▪ Download at http://mcu8051ide.sourceforge.net

    ▪ Proteus 8.0

    ▪ Ferramenta para o design de projetos eletrônicos baseado emSPICE.

    3

    http://mcu8051ide.sourceforge.net/http://mcu8051ide.sourceforge.net/

  • 8/17/2019 Programacao Assembly 8051

    4/25

    MCU 8051 IDE

    ▪ Execute o MCU 8051 IDE

    ▪ Criação de Projeto▪ Project -> New

    4

  • 8/17/2019 Programacao Assembly 8051

    5/25

    MCU 8051 IDE

    ▪ Execute o MCU 8051 IDE

    ▪ Criação de Projeto▪ Project -> New

    ▪ Digite um nome para o projeto

    ▪ Indique a pasta que será salvo o

    projeto▪ Defina o processador 

    ▪ Finalize

    ▪ OBS:▪ Em “Select MCU”, pode-se obter 

    informações gerais sobre a CPU

    5

  • 8/17/2019 Programacao Assembly 8051

    6/25

    MCU 8051 IDE

    6

     Área de edição de código

    Simulador 

  • 8/17/2019 Programacao Assembly 8051

    7/25

    MCU 8051 IDE

    ▪ Na área de edição de código, insira o seguinte código:

    ▪  Após, salve o código

    ▪ File  Save

    ▪ Monte o código

    ▪ Tools compile ou F11

    7

    ;****************************************;*** PROGRAMA PISCA LED ******;****************************************

    ORG 0000H ; Diretiva que informa ao montador o endereço da próxima instruçãoLJMP INICIO ; Pula para o endereço (rótulo) "INICIO"

      ORG 0030H

    INICIO: CPL P2.0 ; Complementa o estado do bit 0 da porta P2MOV R0,#50 ; Move o valor 50 em decimal para o registrador R0DJNZ R0,$ ; Decrementa o valor em R0 e pula para "$"(mesmo endereço) se for

    ; diferente de zeroSJMP INICIO ; Pula para o endereço "INICIO"

    END ; Diretiva que informa ao montador o FIM DO PROGRAMA

  • 8/17/2019 Programacao Assembly 8051

    8/25

    MCU 8051 IDE

    8

    O arquivo .hex é o que de fatodeve ser transferido aomicrocontrolador 

  • 8/17/2019 Programacao Assembly 8051

    9/25

    MCU 8051 IDE – Iniciando a simulação

    ▪ Simulator Start/Shutdown ou F2

    9

     A linha verde indica“onde” está a simulação

  • 8/17/2019 Programacao Assembly 8051

    10/25

    MCU 8051 IDE – Simulação passo-a-passo

    ▪ Simulator Step ou F7

    ▪ Executa a instrução corrente e pula para próximainstrução▪ Abaixo ver-se que a instrução LJMP INICIO foi executada

    ▪ Ou seja, foi realizado o pulo para o endereço INICIO

    10

  • 8/17/2019 Programacao Assembly 8051

    11/25

    MCU 8051 IDE – Simulação passo-a-passo

    ▪ Próximo F7

    ▪ Executa CPL P2.0▪ Observe que o valor de P2 muda

    11

  • 8/17/2019 Programacao Assembly 8051

    12/25

    MCU 8051 IDE – Simulação passo-a-passo

    ▪ Próximo F7

    ▪ Executa MOV R0,#50▪ Observe que a RAM de Dados é modificada

    12

  • 8/17/2019 Programacao Assembly 8051

    13/25

    MCU 8051 IDE – Simulação passo-a-passo

    ▪ Próximo F7

    ▪ Executa DJNZ R0,$▪ Observe que o valor em R0 é decrementado

    ▪ Observe que o “ponteiro” (linha verde) continuano mesmo lugar.

    13

  • 8/17/2019 Programacao Assembly 8051

    14/25

    MCU 8051 IDE – Simulação passo-a-passo

    ▪ Próximos 50 clicks em F7

    ▪ Executa a instrução DJNZ R0,$

    ▪ Loop

    14

    50x

  • 8/17/2019 Programacao Assembly 8051

    15/25

    MCU 8051 IDE – Simulação passo-a-passo

    ▪ Próximo F7

    ▪ Executa JMP INICIO▪ Volta ao endereço INICIO

    ▪ Próximo F7

    ▪ Executa CPL P2.0▪ E continua o laço INFINITO

    15

  • 8/17/2019 Programacao Assembly 8051

    16/25

    MCU 8051 IDE

    ▪ Programa: a cada 50 interações, o estado do bit

    0 da porta 2 é modificado▪ Se um LED for ligado a este pino, então este piscará

    ▪ Questão?

    ▪ Qual a frequência em que o LED piscará?

    16

  • 8/17/2019 Programacao Assembly 8051

    17/25

    Cálculo da execução do programa

    17

    ▪ Considerando um cristal de 12MHz

    ▪ Período de clock (Tc) = 83,3 ns   1/12MHz▪ Ciclo de Instrução (Ti) = 1 µs 83,3 ns * 12

    ▪ Tempo de execução do loop (TL) = (1+1+2*50+2)* 1 µs = 104 µs▪  Assim, o LED ficará ON por 104 µs e OFF por 104 µs

    ▪ Frequência de Oscilação do LED = 1/(2*TL) ≈ 4,8 kHz

    InstruçãoNúmero de Ciclos de

    Instrução por instrução

    Número de Ciclos de

    Instrução por loop

    CPL P2.0 1 1

    MOV R0, #50 1 1

    DJNZ R0,$ 2 2*50

    SJMP INICIO 2 2

  • 8/17/2019 Programacao Assembly 8051

    18/25

    Cálculo da execução do programa

    ▪ Qual a frequência caso o valor de inicial de R0

    seja 250?▪ Qual a frequência do LED caso o programa seja

    modificado para o abaixo:

    18

    ORG 0000H ; Diretiva que informa ao montador o endereço da próxima instruçãoLJMP INICIO ; Pula para o endereço (rótulo) "INICIO"

      ORG 0030HINICIO: CPL P2.0 ; Complementa o estado do bit 0 da porta P2

    MOV R0,#250 ; Move o valor 250 em decimal para o registrador R0MOV R1,#250 ; Move o valor 250 em decimal para o registrador R1

    LOOP: DJNZ R0,$ ; Decrementa o valor em R0 e pula para LOOP se for diferente de zeroDJNZ R1,LOOP ; Decrementa o valor em R1 e pula para LOOP se for diferente de zero

    SJMP INICIO ; Pula para o endereço "INICIO"

    END ; Diretiva que informa ao montador o FIM DO PROGRAMA

  • 8/17/2019 Programacao Assembly 8051

    19/25

    Inserção de breakpoints

    ▪ Compile o programa anterior e execute-o passo

    a passo (???).▪ Para executar um trecho de programa de uma

    vez, pode-se inserir breakpoint  .

    ▪ Click acima da numeração da linha desejada parainserção de um breakpoint

    ▪ Para executar até o breakpoint▪ Simulator Run ou F9

    ▪ Observe o tempo de execução

    19

  • 8/17/2019 Programacao Assembly 8051

    20/25

    Arquivo de listagem

    ▪ Contem informações sobre o código montado e

    código montado.▪ File Open

    ▪ Filter = Code listing (*.lst)

    ▪ PISCA_LED.lst

    20

    Código de Máquina

  • 8/17/2019 Programacao Assembly 8051

    21/25

    Arquivo *.hex

    ▪ Contém o código de máquina que será gravado

    no microcontrolador ▪ File Open

    ▪ Filter = All files (*)

    ▪ PISCA_LED.hex

    ▪ Arquivo PISCA_LED.hex

    21

    :03000000020030CB:0C003000B2A078FA79FAD8FED9FC80F46E:00000001FF

    Start code: character em ASCII “:”Byte count: Número de bytes do código

     Address: Endereço inicial da sequência de bytes de código

    Record type: Valor entre 00 e 05 que especifica o tipo de campo de dado

    Data: Sequência de bytes de código

    Checksum: Byte de detecção de erro

    Exemplos

    - 00 indica que campo de dados (instruções)- 01 indica fim de arquivo. Em geral, oendereço especificado é 0000

  • 8/17/2019 Programacao Assembly 8051

    22/25

    Simulação no Proteus

    ▪ Monte o circuito abaixo no Proteus e rode o

    código visto

    22

  • 8/17/2019 Programacao Assembly 8051

    23/25

  • 8/17/2019 Programacao Assembly 8051

    24/25

    Exemplos de circuitos com o 8051

    24

  • 8/17/2019 Programacao Assembly 8051

    25/25

    Tarefas

    ▪ Utilizando o MCU 8051 IDE e/ou o Proteus,

    monte os seguintes circuitos:▪ Contador de eventos (use uma chave para emular o

    evento) em que o número de evento em binárioapareça em 8 LED.

    ▪ Contador de eventos (use uma chave para emular oevento) em que o número de evento em decimalapareça em 1 display de 7 segmentos.

    ▪ Cronômetro com mostrador de minutos e segundos.

    ▪ Sistema de verificação de senha via teclado numérico(keypad ) 9x9.▪ Se senha ok, LED on.

    ▪ Se senha incorreta, LED off e ALARME.

    25