Técnica Programação Assembler - PIC - Microchip

Técnica Programação Assembler - PIC - Microchip

(Parte 1 de 6)

PROGRAMAÇÃO ASSEMBLER PIC - Microchip

Bento Alves Cerqueira Cesar Filho - R 1.2 - JUN/07 1/28

“Às vezes, as coisas que nos são mais importantes permanecem desconhecidas, escondidas por trás da sua familiaridade.” Lüdwig Wittgenstein, filósofo

A arte de criar um programa ou algoritmo para controlar alguma coisa envolve muito mais que o conhecimento de uma linguagem de programação com suas instruções e recursos. Envolve o conhecimento do que deseja controlar. Como opera, funciona, responde, envia e recebe informações. A maioria dos problemas não envolve exclusivamente informações digitais, mas informações analógicas que devem ser manipuladas para atingir valores que podem ser lidos pelo sistema de controle. Envolve, ainda, a compreensão destes valores e o que representam para o sistema controlado. Pior, o programador deve ter conhecimento dos valores representados para transformá-los em valores digitais e interpretá-los adequadamente para que os sinais de controle enviados de retorno para o sistema tenham o correto desempenho.

Em suma, o programador não deve e não pode ser um simples “organizador de instruções”, mas um profundo conhecedor do processo para que o programa ou algoritmo desenvolvido seja o menor e o mais eficiente possível.

Assim como diz a frase do filósofo, o programador deve pensar o impensável, ver o invisível, imaginar o inimaginável para produzir uma obra de arte.

Assembler é uma linguagem de programação usada para desenvolver o código-fonte para uma determinada aplicação que utilize microcontroladores.

É uma linguagem com códigos e mnemônicos (baixo nível) que permitem o controle do processamento no nível de um bit de um registro portanto, aproxima o usuário da manipulação da informação dentro do núcleo de processamento e das memórias de programa e dados individualmente.

Ainda assim, o Assembler é uma linguagem para compreensão humana e não da máquina. A máquina só compreende informações na forma binária, que é de compreensão impossível pelo humano. Logo, deve existir um elemento tradutor da linguagem Assembler (humana) para a linguagem de máquina (binária). O tradutor é um programa residente elaborado pelo fabricante do dispositivo microcontrolador (compilador) que reconhece os comandos e mnemônicos da linguagem Assembler (que normalmente é exclusiva para cada fabricante) – um arquivo code.asm - e converte em linguagem de máquina – um arquivo code.hex – que será gravado na memória de programa do microcontrolador através de um dispositivo gravador adequado. A fig.1 mostra, esquemáticamente, o processo:

Fig. 1 – Processo de formação de código-fonte e gravação no MCU

CÓDIGO-FONTE (.asm)

Os programas usados para criar um código-fonte são, essencialmente, editores de texto. Enquanto o código está sendo escrito, todas as facilidades encontradas nos editores de texto estão presentes.

O código só será transformado em um arquivo executável após a compilação bem sucedida do código-fonte. Mesmo após a compilação, o que é apresentado para o programador na tela continua sendo um texto. Lembre-se que o arquivo executável (aquele que é gravado na memória de programa do controlador) é

Bento Alves Cerqueira Cesar Filho - R 1.2 - JUN/07 2/28 ilegível para nós humanos. Portanto, escrever o código-fonte de uma aplicação é um exercício de apresentação de texto.

Para facilitar o trabalho do programador, os programas para edição de código-fonte trazem uma série de facilidades automáticas tais como colorir o texto de acordo com a função de cada palavra, mas não organiza esse texto na tela. Isto é função do programador (trabalho braçal).

Um código-fonte bem elaborado (no aspecto visual, porque no aspecto lógico é outro assunto) tem apresentação tal que facilite a leitura, compreensão do funcionamento, correção (quando necessário) e evolução por qualquer outro programador, ou pelo seu criador (um ano depois).

Bento Alves Cerqueira Cesar Filho - R 1.2 - JUN/07 3/28

A apresentação utilizada do código-fonte será aquela mostrada no arquivo BÁSICO.asm, desenvolvido a partir de aplicações práticas e facilita as explicações e informações de como utilizar as diretivas e instruções do microcontrolador bem como a maneira de escrever de tal forma que o compilador seja capaz de interpretar e produzir o arquivo executável sem erros.

A formatação do texto do código-fonte foi organizada para permitir o fácil sequenciamento do procedimento de programação utilizando, básicamente, tres grandes capítulos:

1- Área de Identificação

Nesta área são colocadas as informações que identificam o código-fonte.A fig.2 mostra parte da Área de Identificação do arquivo BÁSICO.asm:

Fig. 2 – Trecho da Área de Identificação no Código-Fonte

É claro que a fig.2 mostra apenas uma sugestão, visto que o tipo de informação constante na Área de Identificação depende exclusivamente dos objetivos do programador.

Bento Alves Cerqueira Cesar Filho - R 1.2 - JUN/07 4/28

2- Área de Diretivas

Nesta área o programador coloca as instruções que orientam o compilador na formação do arquivo executável. A fig.3 mostra parte da Área de Diretivas do arquivo BÁSICO.asm:

Fig. 3 – Trecho da Área de Diretivas no Código-Fonte

A quantidade de diretivas depende do número de variáveis envolvidas no processo, quantidade de constantes, número de entradas e saídas empregadas pelo controlador etc..

Bento Alves Cerqueira Cesar Filho - R 1.2 - JUN/07 5/28

3- Área de Código

Nesta área é escrito o programa efetivo que será gravado na memória do controlador. O compilador monta o arquivo executável com as instruções desta áre a partir das diretivas dadas na Área de Diretivas.

A fig.4 mostra parte da Área de Código do arquivo BÁSICO.asm:

Fig. 4 – Trecho da Área de Código no Código-Fonte

A extensão da Área de Código é dependente apenas da complexidade do sistema externo a ser controlado, podendo possuir tabelas de valores e caracteres, sub-rotinas, interrupções, cálculos matemáticos etc..

Bento Alves Cerqueira Cesar Filho - R 1.2 - JUN/07 6/28

Para escrever o código-fonte algumas regras básicas devem ser observadas. Como o código-fonte é um editor de texto, a formatação do texto pode seguir algumas regras simples comuns a todo o código-fonte:

-não se usa acentuação do Portugues (acentos, til, cedilha etc.) – lembre-se que a língua de origem do Assembler é o Ingles que não tem nenhum tipo de acentuação. -para evitar possíveis problemas de identificação do tamanhodo caixa da letra, utilizar sempre letras maiúsculas (caixa alta) para qualquer texto no código-fonte – o processador tem códigos diferentes para identificar a mesma letra quando maiúscula (caixa alta) ou minúscula (caixa baixa), o que pode causar erro de compilação e este erro não é identificado como tamanho do caixa da letra, mas como Nome (label) inexistente.

Nas figuras 2, 3 e 4 podemos ver como é a apresentação do texto do código-fonte atendendo a estas regras básicas - é trabalho braçal feito pelo programador. No entanto, essa preocupação facilita a leitura e interpretação do código-fonte pelo programador a qualquer tempo.

Para escrever na linguagem de código-fonte utilizamos os seguintes elementos:

-Nomes (labels)

São criados e utilizados para identificar: • Endereços

• Variáveis

• Constantes

• Registros

• Bits

Os elementos especiais de um controlador (Registros de Função Especial e seus respectivos Bits) são identificados por Nomes fornecidos pelo fabricante. Normalmente são mnemônicos ou abreviaturas da função deste elemento na operação do controlador.

Os elementos de uso geral (Registros e Bits) são identificados por Nomes criados pelo programador e que, preferencialmente, devem ser relacionados à função proposta de cada um deles.

Os Nomes empregados no código-fonte não são interpretados pelo compilador – são apenas para interpretação humana – durante a compilação serão substituídos pelos endereços físicos das memórias (registros, bits e endereços).

Regras - um Nome não pode ser repetido para elementos diferentes – uma vez criado um Nome, ele é único e individual para aquele código-fonte. - deve ser iniciado por um carácter alfabético ou under-line (não deve ser um carácter numérico ou dois . under-line). - pode ser formado por letras e números desde que o primeiro carácter não seja numérico.

- nomes compostos devem ser separados sempre por under-line (não usar hífen ( - )ou espaço). - não deve conter símbolos gráficos ou gramaticais.

(Parte 1 de 6)

Comentários