Cursos / Eletrônica / Projeto de Sistemas Microcontrolados / Aula
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.
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.
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.
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.
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.
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.
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