Os materiais didáticos aqui disponibilizados estão licenciados através de Creative Commons Atribuição-SemDerivações-SemDerivados CC BY-NC-ND. Você possui a permissão para visualizar e compartilhar, desde que atribua os créditos do autor. Não poderá alterá-los e nem utilizá-los para fins comerciais.
Atribuição-SemDerivações-SemDerivados
CC BY-NC-ND
Cursos / Eletrônica / Projeto de Sistemas Microcontrolados / Aula
Os qualificadores, também conhecidos como modificadores, podem ser divididos em qualificadores de acesso e de armazenamento. O papel principal dos qualificadores é informar ao compilador o modo como os dados devem ser acessados ou modificados.
Os compiladores CCS e C18 suportam os qualificadores padrões volatile e const. O primeiro qualificador indica que o conteúdo da variável pode ser modificado durante a execução do programa. Já o segundo qualificador mostra que o valor da variável não pode ser modificado pelo programa. Sempre que o qualificador const for utilizado, se faz necessária a atribuição de um valor no momento da declaração da variável.
São elementos especiais usados para controlar a maneira como o compilador irá lidar com o armazenamento das variáveis. Os compiladores CCS e C18 fazem uso dos quatro qualificadores definidos em C, padrão ANSI: auto; extern; static; register. O C18 adiciona mais um qualificador: o overlay.
Para uma melhor compreensão desse qualificador, suponha que dois arquivos (arquivo1.c e Arquivo2.c) tratem uma variável comum (resultado_mult). Caso a declaração da variável resultado_mult, localizada no Arquivo2.c, não seja feita com o qualificador extern, o compilador gerará um erro informando a ocorrência de multiplicidade de declaração.
Exemplo
Arquivo1.c
long resultado_mult; // Declaração da variável
int x, y; //Declaração das variáveis
void main(void) {
x=40; y=32;
resultado_mult = multiplicacao(x,y); /*Chamada da função multiplicação que se encontra em outro arquivo (Arquivo2.c).*/
}
Arquivo2.c
extern long resultado_mult; /*Declaração da variável resultado_mult por meio do qualificador extern.*/
long multiplicacao(int a, int b)
{
resultado_mult = a*b;
return resultado_mult;
}
Para melhor tratar de dados de memória em uma arquitetura Harvard, o compilador C18 introduziu outros quatro qualificadores de memória: ram, rom, near e far. Os dois primeiros permitem distinguir se os dados estão localizados numa memória do tipo RAM ou numa memória do tipo ROM, já que essas memórias não compartilham o mesmo barramento. A utilização dos qualificadores ram e rom deve preceder a especificação dos qualificadores far e near, como demonstrado nos exemplos a seguir:
ram far int variavel_1; // Indica ao compilador que a variável deve ser localizada na atual seção da memória de dados (GPR).
ram near long variavel_2; // Indica ao compilador que a variável deve ser localizada no endereço 0x00 da Access RAM.
rom far unsigned int variavel_1 = 4938; /* Indica ao compilador que a variável pode ser localizada em qualquer endereço da memória
de programa. */
ram char variavel_2[ ] = {“012345“}; /* Informa ao compilador que a variável deve ser armazenada na memória de programa, porém o
endereço não pode ultrapassar 64K */
Versão 5.3 - Todos os Direitos reservados