Upload
romeu-corradi-junior
View
240
Download
2
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