Usando o emulador

Configurando o esquema de memória

Por padrão, o emulador usa um esquema de memória que separa a memória de código da memória de dados (Arquitetura de Harvard). Entretanto, o kit que utilizamos no curso (SDM-9431) adota um mesmo espaço de memória externa para código e para dados. Para que o emulador se comporte de maneira mais parecida com o kit, é necessário configurá-lo de acordo com os passos abaixo.

Emulando um código

Carregue o código usando a opção Load Hex File do menu File.

O emulador assume por padrão que o código será colocado a partir do endereço 0000h. Se o seu código em Assembly começava com org 5000h, como aqueles feitos em aula no kit, ele será colocado a partir do endereço 5000h. Você tem duas alternativas. Ou usa org 0000h para que seu código seja colocado no começo da memória, ou altera o registrador PC para 5000h antes de começar a executar o código, clicando duas vezes em PC na janela de registradores, como mostrado abaixo.

Para executar as instruções passo-a-passo, use a tecla F11. Experimente também as outras opções do menu Run.

Cuidados para utilizar a opção Run->Run

Lembre-se que o emulador não tem como saber onde parar de executar o código quando você utilizar a opção Run->Run. No kit, geralmente chamamos o programa monitor ao final do nosso código, que devolve o controle para o código de comunicação com o software do kit. Mas no emulador não existe programa monitor, o único código na memória do 8051 é o seu próprio código.

Um truque para evitar esse problema é colocar um loop infinito no final do seu código, por exemplo LOOP: JMP LOOP. Mesmo assim, você tem que parar a emulação manualmente usando a opção Run->Stop, mas pelo menos assim você evita que o emulador comece a rodar código de outras posições de memória.