Você está na página 1de 25

Sistemas

Embarcados:
Microcontroladores

Programao
Assembly
8051

Programao Assembly
Ferramentas de simulao
MCU 8051 IDE v1.4.7
An open source IDE for MCS-51 based microcontrollers for
POSIX Systems, this software is licenced under the GNU GPL v2
licence.
Download at http://mcu8051ide.sourceforge.net

Proteus 8.0
Ferramenta para o design de projetos eletrnicos baseado em
SPICE.

MCU 8051 IDE


Execute o MCU 8051 IDE
Criao de Projeto
Project -> New

MCU 8051 IDE


Execute o MCU 8051 IDE
Criao 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
informaes gerais sobre a CPU

MCU 8051 IDE

rea de edio de cdigo

Simulador

MCU 8051 IDE


Na rea de edio de cdigo, insira o seguinte cdigo:
;****************************************
;*** PROGRAMA PISCA LED ******
;****************************************

INICIO:

ORG
LJMP

0000H
INICIO

ORG
CPL
MOV
DJNZ

0030H
P2.0
R0,#50
R0,$

SJMP

INICIO

END

; Diretiva que informa ao montador o endereo da prxima instruo


; Pula para o endereo (rtulo) "INICIO"

; Complementa o estado do bit 0 da porta P2


; Move o valor 50 em decimal para o registrador R0
; Decrementa o valor em R0 e pula para "$"(mesmo endereo) se for
; diferente de zero
; Pula para o endereo "INICIO"
; Diretiva que informa ao montador o FIM DO PROGRAMA

Aps, salve o cdigo


File Save

Monte o cdigo
Tools compile ou F11
7

MCU 8051 IDE

O arquivo .hex o que de fato


deve ser transferido ao
microcontrolador

MCU 8051 IDE Iniciando a simulao


Simulator Start/Shutdown ou F2

A linha verde indica


onde est a simulao

MCU 8051 IDE Simulao passo-a-passo


Simulator Step ou F7
Executa a instruo corrente e pula para prxima
instruo
Abaixo ver-se que a instruo LJMP INICIO foi executada
Ou seja, foi realizado o pulo para o endereo INICIO

10

MCU 8051 IDE Simulao passo-a-passo


Prximo F7
Executa CPL P2.0
Observe que o valor de P2 muda

11

MCU 8051 IDE Simulao passo-a-passo


Prximo F7
Executa MOV

R0,#50

Observe que a RAM de Dados modificada

12

MCU 8051 IDE Simulao passo-a-passo


Prximo F7
Executa DJNZ

R0,$

Observe que o valor em R0 decrementado


Observe que o ponteiro (linha verde) continua
no mesmo lugar.

13

MCU 8051 IDE Simulao passo-a-passo


Prximos 50 clicks em F7
Executa a instruo DJNZ

R0,$

Loop

50x

14

MCU 8051 IDE Simulao passo-a-passo


Prximo F7
Executa JMP

INICIO

Volta ao endereo INICIO

Prximo F7
Executa CPL

P2.0

E continua o lao INFINITO

15

MCU 8051 IDE


Programa: a cada 50 interaes, o estado do bit
0 da porta 2 modificado
Se um LED for ligado a este pino, ento este piscar

Questo?
Qual a frequncia em que o LED piscar?

16

Clculo da execuo do programa


Considerando um cristal de 12MHz
Perodo de clock (Tc) = 83,3 ns 1/12MHz
Ciclo de Instruo (Ti) = 1 s 83,3 ns * 12
Instruo

Nmero de Ciclos de
Instruo por instruo

Nmero de Ciclos de
Instruo por loop

CPL P2.0

MOV R0, #50

DJNZ R0,$

2*50

SJMP INICIO

Tempo de execuo 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

Frequncia de Oscilao do LED = 1/(2*TL) 4,8 kHz


17

Clculo da execuo do programa


Qual a frequncia caso o valor de inicial de R0
seja 250?
Qual a frequncia do LED caso o programa seja
modificado para o abaixo:

INICIO:

LOOP:

ORG
LJMP

0000H
INICIO

; Diretiva que informa ao montador o endereo da prxima instruo


; Pula para o endereo (rtulo) "INICIO"

ORG
CPL
MOV
MOV
DJNZ
DJNZ
SJMP

0030H
P2.0
R0,#250
R1,#250
R0,$
R1,LOOP
INICIO

; Complementa o estado do bit 0 da porta P2


; Move o valor 250 em decimal para o registrador R0
; Move o valor 250 em decimal para o registrador R1
; Decrementa o valor em R0 e pula para LOOP se for diferente de zero
; Decrementa o valor em R1 e pula para LOOP se for diferente de zero
; Pula para o endereo "INICIO"

END

; Diretiva que informa ao montador o FIM DO PROGRAMA

18

Insero 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 numerao da linha desejada para
insero de um breakpoint
Para executar at o breakpoint
Simulator Run ou F9

Observe o tempo de execuo

19

Arquivo de listagem
Contem informaes sobre o cdigo montado e
cdigo montado.
File Open
Filter = Code listing (*.lst)
PISCA_LED.lst

Cdigo de Mquina
20

Arquivo *.hex
Contm o cdigo de mquina que ser gravado
no microcontrolador
File Open
Filter = All files (*)
PISCA_LED.hex

Arquivo PISCA_LED.hex
:03000000020030CB
:0C003000B2A078FA79FAD8FED9FC80F46E
:00000001FF
Start code:

character em ASCII :

Byte count: Nmero de bytes do cdigo


Address:

Endereo inicial da sequncia de bytes de cdigo

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


Data:

Exemplos
- 00 indica que campo de dados (instrues)
- 01 indica fim de arquivo. Em geral, o
endereo especificado 0000

Sequncia de bytes de cdigo

Checksum: Byte de deteco de erro


21

Simulao no Proteus
Monte o circuito abaixo no Proteus e rode o
cdigo visto

22

Exemplos de circuitos com o 8051

23

Exemplos de circuitos com o 8051

24

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 nmero de evento em binrio
aparea em 8 LED.
Contador de eventos (use uma chave para emular o
evento) em que o nmero de evento em decimal
aparea em 1 display de 7 segmentos.
Cronmetro com mostrador de minutos e segundos.
Sistema de verificao de senha via teclado numrico
(keypad) 9x9.
Se senha ok, LED on.
Se senha incorreta, LED off e ALARME.
25