Cursos / Eletrônica / Projeto de Sistemas Microcontrolados / Aula

arrow_back Aula 05 - Linguagem Assembly e ambientes de programação

MPLAB

O MPLAB é um software de desenvolvimento projetado e disponibilizado pela própria Microchip (fabricante dos microcontroladores PIC). Ele permite escrever, compilar, depurar código em tempo real, simular a execução do programa e, por fim, gravar o código executável gerado em um microcontrolador. Nesta aula, o MPLAB será utilizado apenas para as tarefas de edição e montagem do código.

Na Figura 5, é mostrada, no ambiente de desenvolvimento MPLAB, a tela de edição com o código de controle dos semáforos. Para abrir um código em Assembly, deve-se navegar até o menu File e, em seguida, clicar em Open.

Ambiente de desenvolvimento MPLAB.

Na Figura 6, pode-se observar parte do programa escrito em linguagem Assembly. A primeira linha contém a diretiva LIST p=16F877, a qual especifica que o modelo de PIC a ser utilizado será o 16F877. É necessário incluir o arquivo de cabeçalho (ou definições) do modelo de PIC a ser utilizado. Isso é feito através da diretiva #include.

Uma vez escolhido o modelo e incluído o arquivo de definições, o próximo passo é a criação (ou definição) das variáveis que serão utilizadas no programa. Para isso, foi utilizada a diretiva CBLOCK. Neste exemplo da Figura 6, são utilizadas três variáveis: state, l1 e l2. Após a definição da última variável (nesse caso, l2) o bloco de variáveis é encerrado com a diretiva ENDC.

A próxima linha contém a diretiva org 0, definindo que o código que vem a seguir será armazenado a partir da posição 0 da memória de programa.

Em seguida, tem-se a diretiva goto setports que desvia a execução do programa para a função setports, responsável pela inicialização do PORTB como saída.

Após o goto, tem-se a diretiva org 4, e mais uma vez o armazenamento do código é reposicionado. Dessa vez para o endereço 4 da memória de programa, reservada para rotinas de tratamento de interrupções.

Em seguida, tem-se a linha de comando halt goto halt, a qual leva o programa a executar um loop infinito.

No código escrito para esse programa está também definida a função initialise, que define o estado inicial do semáforo.

Parte inicial do programa escrito em Assembly para controle dos semáforos.

A Figura 7 mostra uma segunda parte do programa. A função loop é responsável por atribuir o estado do semáforo ao PORTB do PIC. Para isso, pode-se observar que a primeira linha da função loop contém uma chamada (através da diretiva call) à função getmask, responsável pelo cálculo do próximo estado que o semáforo irá assumir. Uma vez definido o próximo estado, a função loop se encarrega de atribuir as condições desse novo estado ao PORTB do PIC.

Segunda parte do programa em Assembly.

A Figura 8 mostra duas funções: wait e wait2. Essas duas funções trabalham em conjunto e servem para gerar um atraso (ou delay). Neste exemplo, o atraso é usado para que seja possível visualizar a mudança de estado do semáforo.

Terceira parte do programa em <span class='italico'>Assembly</span>.

Uma vez escrito o código, o próximo passo é sua compilação ou montagem. Para montar o código no MPLAB, basta navegar até o menu Project e clicar na opção Quickbuild. Esse processo é ilustrado na Figura 9.

Processo de montagem de um programa em <span class='italico'>Assembly</span> no MPLAB.

Se a montagem for bem-sucedida, ou seja, se o código não apresentar nenhum erro, aparecerá a mensagem BUILD SUCCEEDED, conforme mostrado na Figura 10.

Tela mostrada no MPLAB após um processo de montagem.

Observe ainda na Figura 10 que acima da mensagem BUILD SUCCEEDED aparece todos os avisos (warnings) gerados durante a montagem do código. O montador mostra ainda a linha de código de cada um dos avisos e erros. Isso é útil quando o código apresenta erros, pois o programador já sabe imediatamente em qual linha esse erro ocorreu.

Versão 5.3 - Todos os Direitos reservados