Você está na página 1de 61



E-mail: office@mikroe.com

o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o
o

o
o
o
o
o
o

Incio
Ferramentas de Desenvolvimento
Ferramentas de desenvolvimento PIC
dsPIC Ferramentas de Desenvolvimento
PIC24 e dsPIC33 Ferramentas
Ferramentas de Desenvolvimento PIC32MX
Ferramentas de desenvolvimento AVR
Cypress PSoC
8051 Ferramentas de desenvolvimento
Ferramentas de desenvolvimento ARM
GSM / GPRS Ferramentas
GPS Tools
Componentes
Adaptadores de Tomada
Ferramentas de Desenvolvimento Universal
Compiladores
PIC Compiladores
AVR Compiladores
Compiladores dsPIC30/33 e PIC24
Compiladores PIC32
8051 Compiladores
Software Adicional
Acessrio Boards
Comunicao Boards
Conselhos de armazenamento
Tempo de medio Boards
Mostrar Boards
MEASURCmaras ement
udio e placas de voz
Poder de Controle Diretoria de Abastecimento
Vrias placas
Ofertas Especiais
PIC Ofertas
dsPIC30 Ofertas
PIC24 e dsPIC33 Ofertas
Ofertas AVR
8051 ofertas
Compra Fcil
Publictions
PIC Livros
dsPIC Livros
8051 Books
Diversos livros eletrnicos
Artigos
Outros Livros de Autores
Suporte
Projetos
Download

Livro: Microcontroladores PIC Programao em C

TOC

Capitulo 1
Captulo 2
Captulo 3
Captulo 4

Apndice A

Captulo 2 - Programao do microcontrolador


Voc certamente sabe que nou suficiente apenas para ligar o micro para ligar a outros componentes e fornecimento de energia para
execut-lo, certo? Temos de fazer algo mais. Voc precisa programar o microcontrolador. Se voc acha que isso complicado,
erradoed. Todo o procedimento muito simples. Basta ler o texto para compreender o que queremos dizer.

2,1 Linguagens de Programao

MikroC 2,2 PRINCIPAIS CARACTERSTICAS


2,3 TIPOS DE DADOS mikroC
2,4 variveis e constantes
2,5 OPERADORES

2,6 ESTRUTURAS DE CONTROLE


2,7 Advanced Tipos de Dados
2,8 FUNES

Preprocessor CARACTERSTICAS 2,9


MikroC 2,10 PRO PARA PIC

2,11 PROGRAMAO PARA O USO PIC PIC mikroC PRO

2,1 Linguagens de Programao

O microcontrolador executa o programa carregado na memria Flash. Isso chamado de cdigo executvel composta por uma srie de
zeros e uns, aparentemente sem significado. Dependendo da arquitetura do microcontrolador, o cdigo binrio consiste em palavras de
12, 14 ou 16 bits. Cada palavra interpretada pelo processador como um instrumentoction a ser realizada durante o funcionamento do
microcontrolador. Todas as instrues que o microcontrolador pode reconhecer e cumprir os chamados coletivamente conjunto de
instrues. Como mais fcil trabalhar com o sistema de numerachexadecimal on, cdigo executvel muitas vezes representado como
uma srie de nmeros hexadecimais chamado cdigo hexadecimal. microcontroladores PIC, nas palavras do programa de 14 bits, o
conjunto de instrues tem 35 notrues diferente.

Linguagem assembly

Como o processo de escrever um cdigo executvel foi bastante rdua assim foi criada a primeira linguagem de programao Assembler
chamado (ASM). Aps a sintaxe bsica da linguagem assembly, que era mais fcil escrever e entender o cdigo. Instrues de montagem
esto a assinar as abreviaturasIFIC e cada afirmao corresponde a um local de memria. Um programa chamado assembler compila
(traduz) as instrues de linguagem assembly em cdigo de mquina (cdigo binrio).
Hester programa de instruo de instruo compila sem optimizao. Em relao ao controle em pormenor todos os processos
implantados nos dentro do chip, esta linguagem de programao ainda popular.

Vantagens das linguagens de programao de alto nvel


Apesar de todos os lados bons, a linguagem montador tem algumas desvantagens:

Mesmo uma nica transao no programa escrito em assembly consiste de muitas instrues,
o que torna muito longas e pesadas.

Cada tipo de microcontrolador tem seu prprio conjunto de instrues um programador tem
que saber escrever um programa

Um programador tem de conhecer o hardware do microcontrolador para escrever um programa

Programa escrito em C (O mesmo programa compilado para cdigo assembler):

As linguagens de programao de alto nvel (Basic, Pascal, C, etc.) foram criadas com o objectivo de ultrapassar as desvantagens da
assemblia. In Lenguajes alto nvel de programao vrias instrues de montagem so substitudos por uma sentena. O programador
no precisa conhecer o conjunto de instrues ou recursos de hardware do microcontrolador utilizado. No mais possvelOcero
exatamente como cada instruo executada, porm isso no importa. Embora voc sempre pode inserir um programa escrito em
assembler seqncia.
Se voc j escreveu um programa para uma linguagem assembly do microcontrolador PIC provavelmente sabe que a arquitetura RISC
carece de algumas instrues. Por exemplo, no h nenhuma instruo adequada para multiplicao de dois nmeros. Claro que, para
cada problema tem uma soluo e esta no uma exceo graas p aritmticanables executar operaes complexas, quebrando-as em
vrias operaes mais simples. Neste caso, a multiplicao pode ser facilmente substitudo por adio sucessiva (axb = a + a + a + ... +
a). Estamos no incio de uma histricahistria muito longa ... No precisa se preocupar quando usando uma dessas linguagens de
programao como C de alto nvel, porque o compilador automaticamente encontrar a soluo para este problema e assim por diante.
Para multiplicar os nmeros a e b, c bastantesobre como escrever um * b.

linguagem C
A linguagem C tem todas as vantagens de uma linguagem de programao de alto nvel (descrito acima) e permite que voc execute
algumas operaes em ambos os bytes e bits em (operaes lgicas, as mudanasN:, etc.) As caractersticas do C podem ser muito teis
quando a programao de microcontroladores. Alm disso, o padro C (padro ANSI) muito porttil, assim que o mesmo cdigo pode
ser usado muitas vezes em diferentes projetos. O que hs acessvel a qualquer pessoa que conhea esta linguagem, independentemente
da finalidade de utilizao do microcontrolador. C uma linguagem compilada, o que significa que os arquivos de origem contendo o

cdigo C traduzidas para linguagem de mquina compilado pelor. Todas essas caractersticas fazem com que o C das linguagens de
programao mais popular.

A figura acima um example geral do que acontece durante a compilao de um programa em linguagem de programao de alto nvel a
um nvel baixo.

MikroC 2,2 PRINCIPAIS CARACTERSTICAS


Aqui apresentamos os principais elementos da linguagem desen mikroCOllada por Mikroelektronika. Esta linguagem muito semelhante
ao padro C, porm em alguns aspectos, difere do padro ANSI em algumas caractersticas. Algumas dessas diferenas se relacionam com
as melhorias projetadas para facilitar a programaong microcontroladores PIC, enquanto os outros so o resultado da limitao da
arquitetura de hardware do PIC. Aqui ns apresentamos as especificidades lingusticas mikroC na programao de microcontroladores
PIC. O C termo usado para se referir s caractersticas comuns do C e mikroC.

Este livro descreve uma aplicao muito concreta da linguagem de programao C usado em mikroC PRO compilador para PIC. Neste
caso, o compilador usado para microcontroladores PIC programao.

COMPILAO PASSOS

O processo de compilao vrias etapas e executado automaticamente pelo compilador. Para um conhecimento bsico de trabalho
podem ser teis para entender o conceito de mikroC lngua.
O arquivo de origem contm o cdigo que voc escreve para o programa mikroC microcontrolador. O pr-processador usado
automaticamente pelo compilador para iniciar o processo de compilao. O compilador procura directivas de pr-processamento (sempre
comeando com "#") no cdigo e modificar o cdigo-fonte De acordo com as directivas. Esta fase ter lugar, incluindo arquivos, definir
constantes e macros, etc, facilitando assim o processo. Mais tarde iremos descrever em detalhe estas polticas. A analisador (Analisador)
remove todas as informaes de cdigo intil (comentrios, espaos em branco). Em seguida, o compilador traduzir o cdigo para um
arquivo binrio chamado arquivo. MCL. A vinculador (Linker) recupera todas as informaes necessrias para executar o arquivo externos
e agrupados em um nico arquivo (. dbg). Alm disso, um projeto pode conter mais de um arquivo de origem eo desenvolvedor pode usar
funes pr-definidas e agrupadas em arquivos chamados bibliotecas. Finalmente, gerador. hexa produzir a. hex. o arquivo a ser
carregado no microcontrolador.

Todo o processo de compilao, que inclui todos os passos acima chamado "Construo".

ESTRUTURA DO PROGRAMA
A principal idia de escrever um programa C para "quebrar" um grande problema em vrias partes menores. Suponha que voc precise
escrever um programa el microcontrolador para medir a temperatura e exibir os resultados em um LCD. O processo de medio
realizada por um sensor que converte a temperatura em tenso. O microcontrolador usa o conversor A / D para converter esta tenso
(anal valorsistema de arquivos utilizado) em um nmero (valor digital) que so ento enviados para o LCD por vrios pilotos.
Consequentemente, o programa dividido em quatro partes, cada uma das quais corresponde a uma ao especfica:

1. Activar e configurar o A / D incorporadanominal;


2. Medir a analgica;

3. Calcule a temperatura, e

4. Envie os dados no formato apropriado para o LCD;


As linguagens de programao como C de alto nvel permitem que voc para resolver este problema facilmente digitando quatro funes
a serem implementadas ciclo, sem parar.
A idia geral dividir o problema em vrios pedaos, dos quais cada um pode ser escrita como uma nica funo. Todos os programas
escritos em mikroC conter pelo menos uma funo chamada main () como ll fechadosaves {} instrues a serem executadas. Esta a
primeira funo a ser executada no incio da execuo do programa. As outras funes podem ser chamadas dentro da funo principal.
Em outras palavras, podemos dizer que a funo main () obrigatrio, Enquanto outros so opcionais. Se voc no tiver escrito um
programa em C, voc pode achar tudo confuso. No se preocupe, aceit-lo como para agora e mais tarde entender a sintaxe.

E agora, seu primeiro show "real"! A figura mostra a estrutura do programa, apontando as partes onde ela est.

Como escrever cdigo em C muito importante. Por exemplo, C difere maisculas de minsculas funo, portanto, o main () no pode
ser escrito main () ou Main (). Alm disso, note que duas linhas de cdigo dentro da funo termina com um ponto e vrgula. Em C todas
as sentenas devem terminar com um ponto e vrgula ',' assim o compilador pode isol-los e traduzi-los em cdigo de mquina.

COMENTRIOS
Os comentrios so parte do programa usado para clarificar as instrues ou um programa para fornecer mais informaes respeito. O
compilador ignora os comentrios e no compilado para cdigo executvel. Simplificando, o compilador capaz de reconhecer os
caracteres especiais utilizados para designar onde os comentrios comeam e terminam nou no fazer nada se o texto entre eles durante
a compilao. Existem dois tipos de tais personagens. Designar alguns comentrios longos que se estendem por vrias linhas de programa
marcado pela /*...*/, seqncia especial, enquanto outras designar o comentshorts ariana que se encaixam em uma nica linha / /.
Embora os comentrios no afetem a execuo do programa so to importantes quanto qualquer outra parte do programa. Aqui est o
porqu ... Muitas vezes necessrio para melhorar, modificar, atualizar, simplificar um programa ... No possvel interpretar at
mesmo programas simples sem usar os comentrios.

2,3 TIPOS DE DADOS mikroC


Em C, os dados tem um tipo, ou seja, cada um dos dados utilizados no programa deve ter seu tipo especificadoed. Isto permite ao
compilador saber o tamanho dos dados (nmero de bytes necessrios na memria) e sua representao. Existem vrios tipos de dados que
podem ser utilizados na linguagem de programao mikroC dependendo do tamanho dos dados eo intervalo valores. A tabela mostra o
intervalo de valores que os dados podem ser utilizadas quando em sua forma bsica.
Datatype

Descrio

char
int

Texto (caractere)
Valores inteiros

Tamanho (nmero de
bits)
8
16

flutuar

Valores de ponto flutuante

32

dupla

Valores em ponto flutuante de preciso


dupla

32

faixa de valor
0-255
-32.768-32.767
de 1,17549435082 10-38 a 6,80564774407
1038
de 1,17549435082 10-38 a 6,80564774407
1038

* Devido s limitaes impostas pelo hardware do microcontroladorou impossvel de conseguir um dados mais precisos do tipo float.
Portanto, o tipo de casal em equivalente mikroC a flutuar.
Ao adicionar um prefixo (qualifier) a quaisquer dados inteiro ou caractere, o leque de mudanas possveis valores-se como o nmero de
bytes de memria necessria. Por padro, o tipo de dados int so assinados, enquanto o tipo char unsigned. O qualificador assinada
(assinatura) indica que os dados podem ser positivos ou negativos. O prefixo unsigned indica que os dados s podem ser positivas.
Observe que o prefixo opcional.
Datatype
char

int

Prefixo tipo de dados


signed char
unsigned int
short int
s, assinadohort int
long int
assinado long int

Tamanho (nmero de bits)


8
16
8
8
32
32

faixa de valor
de -128 a 128
0-65535
0-255
-128 A 127
0-4294967295
-2147483648 A 2147483647

Integer (int)
Um inteiro um nmero sem parte fracionria que pode ser expressa nos seguintes formatos:

Hexadecimal (base 16): o nmeroou comea com 0x (ou 0X). Os nmeros inteiros constitudos
de dgitos hexadecimais (0 a 9) e / ou letras (A, B, C, D, E, F). Por exemplo: X1A '0 '.

Decimal (base 10): O nmero composto de dgitos (0 a 9). O primeiro dgito no pode ser 0.
Neste formato, Voc pode inserir o sinal de nmero ('+' or' "). Por exemplo: 569, -25, 1500.

Octal (base 8): os nmeros correspondem base 8 usando apenas 8 dgitos (0-7). inteiros
Octal comeam por 0. Por exemplo: '056 '.

Binrio: quando um inteiro empieza com 0b (ou 0B) so representadas como uma srie de bits
('0 'e '1'). Por exemplo: 0B10011111

0x11 / / Equivalente hexadecimal de 17 decimais


11

/ Decimal /

-152 / Decimal /

011

/ / Equivalente octal de 9 decimais

0b11 / / Formato biNario decimal igual a 3

tipo de ponto flutuante (float)


O tipo de ponto flutuante (float) usado para nmeros reais com o ponto decimal. Float tipo de dados pode ser representada de vrias
formas. Uma coisa sempre consignar float (assinado).

0.

/ / = 0.0

-1.23

/ / = -1,23

23.45e6 / / = 23,45 * 10 ^ 6
2e-5

/ / = 2.0 * 10 ^ -5

3E +10
0,09 E34

/ / = 3.0 * 10 ^ 10
/ / = 0,09 * 10 ^ 34

Personagem (char)
O tipo char considerado como um nmero inteiro, o compilador. No entanto, dois usadospara dados de caracteres. Um tipo de dados
caractere est entre aspas e caracteres ASCII codificados.

59

/ / Inteiro

'P' / / 'P' ASCII

Uma seqncia de caracteres chamado de seqncia de caracteres (string). Strings so fechados em comilhas em dobro, por exemplo:

"Press RA0"

2,4 variveis e constantes


Definies
Uma varivel um objeto chamado pode conter dados que podem ser alterados durante a execuo do programa. Em C, as variveis so
digitados, o que aumentaca que necessrio especificar o tipo de dados que atribudo a uma varivel (int, float, etc.) As variveis so
armazenadas na memria RAM e espao de memria ocupado (em bytes) depende do seu tipo.

/ * Duas linhas de programa consecutivos. Na primeira linha do programa


define o tipo de varivel * /

int 1000 =; / / Tipo de varivel int e equivalente a 1000


uma = 15;

/ / A igual a 15

Uma constante tem as mesmas caractersticas como uma varivel, exceto que o seu valor paragnade no pode ser alterado durante a
execuo do programa. Ao contrrio de variveis, constantes so armazenados na memria flash do microcontrolador para armazenar
tanto espao como memria RAM. O compilador reconhece pelo nome eo prefixo const. Em mikroC, o compilador reconhece
automaticamente o tipo de dados de uma constante, por isso no necessrio especificar o tipo.

/ * Duas linhas consecutivas do programa * /

const A 1000 = / / O valor da constante A t definido


A = 15;

/ / ERRO! no pode alterar o valor da constante

Cada varivel ou constante deve ter um identificador que o distingue de outras variveis e constantes. Consulte os exemplos acima, e A
so identificadores.
Regras de nomenclatura
Em mikroC, identificadores pode ser to longo como voc quer. No entanto, h vrias restries:

Identificadores podem incluir qualquer um dos caracteres alfabticos AZ (az), dgitos de 0-9 e
sublinhado '_' personagem. A compilador sensvel diferena entre maisculas e

minsculas. Os nomes de funes e variveis so muitas vezes escritos em letras minsculas,


enquanto que os nomes constantes so maisculas.

Os identificadores no podem iniciar com um dgito.

Identificadores podem no corresponder as palavras-chave mikroC linguagem, porque so


palavras reservadas do compilador.

Compilador MikroC reconhece 33 palavras-chaves:

absoluta
asm
em
auto
bit
bool
quebrar
caso
capturas
char
classe
cdigo
const

dados
padro
excluir
fazer
dupla
mais
enum
explcita
extern
falsa
flutuar
para
amigo

mikroC - palavras-chave
se
inline
int
io
tempo
mutvel
namespace
operador
org
pascal
privada
protegidas
pblico

retorno
rx
sfr
curto
assinado
sizeof
estticas
struct
switch
modelo
presente
jogar
verdade

typedef
typeid
typename
Unio
no assinado
usando
virtual
vazio
volteis
enquanto

continuar

goto

Registre-se

tente

Exemplos de identificadores vlidos e invlidos:

temperatura_V1

/ / OK

Presso

/ / OK

no_corresponder

/ / OK

dat2string

/ / OK

SUM3

/ / OK

_vtexto

/ / OK

7temp

/ / NO - no pode comear com um nmero

% Ms_alto

/ / NO - no pode conter caracteres especiais

se

/ / NO - no pode coinciding com uma palavra-chave

j23.07.04

/ / NO - no pode conter caracteres especiais (ponto)

nome da varivel / / NO - no pode conter em branco

Declarao de variveis
Cada varivel deve ser declarada antes de ser utilizado no programa. Como as variveis so armazenadas na memria RAM, necessrio
reservar o espao para eles (um, dois ou mais bytes). Ao escrever um programa, voc sabe quais os dados que voc usa e que tipo de
dados esperado como resultado da oprao, enquanto que o compilador no sabe. No se esquea que o programa lida com as variveis
com nomes atribudos. O compilador reconhece-los como nmeros na memria RAM sem saber o seu tamanho e formato. Para melhorar a
legibilidade do cdigoAs variveis so muitas vezes declarado, no incio de funes:

<tipo> varivel;

Voc pode declarar uma varivel mais de uma vez se eles tm o mesmo tipo.

<tipo> variavel1, variavel2, varivel de 3;

Alm do nome e tipo, as variveis freqentemente atribudo o valor inicial apenas uma vez em sua declarao. Esta no uma etapa
obrigatria, mas "uma questo de moralidade." Parece que o seguinte:

unsigned int peso; / / Declara uma varivel chamada peso


peso = 20;

/ / Atribua o valor 20 varivel peso

Um mtodo mais rpido chamado de declarao com inicializao (atribuio de valores):

unsigned int peso = 20; / / Peso declarado e seu valor de 20

Se existem vrias variveis com o mesmoou o valor inicial atribudo, o processo pode ser simplificado:

unsigned int Peso 1 = = Peso2 peso3 = 20;


int valor_inicial un_mnimo_de_petrleo = = 0;

Tenha cuidado para no declarar a mesma varivel novamente dentro da mesma funo.

Voc pode modificar o meio-fiopassaram de uma varivel para atribuir um novo valor quantas
vezes voc quiser

Quando voc declarar uma varivel, sempre considerar os valores que a varivel ir conter

durante a execuo do programa. No exemplo acima, no Peso1 ser representado com um


nmero com ponto decimal ou um nmero com um valor negativo.

declarao constante
Semelhante a variveis, constantes devem ser declaradas antes de serem utilizadas no programa. Em mikroC, obrigatrio especificar o
tipo de decl constantelavra. Alm disso, as constantes devem ser inicializadas no momento em que so declaradas. O compilador
reconhece as constantes pelos seus prefixo const na declarao. Aps duas declaraes so equivalentes:

int const MNIMO = -100; / / Dezembrolrare mnimo constante


const MNIMO = -100;

/ / Mnimo Declare constante

Constantes podem ser de qualquer tipo, incluindo seqncias:

const T_MAX 3.260E1 =;

/ / Ponto flutuante T_MAX constante

const I_CLASS = 'A';

/ / Character I_CLASS constante

const Mensagem = "Pressione LEFT" / / Mensagem seqncia constante

constantes de enumerao so um tipo especial de constantes inteiras que faz um programa mais compreensvel para alocar
nmerosapenas constantes ordinal. Por padro, o valor 0 atribudo automaticamente ao primeiro constante em chaves, o valor 1 para o
segundo, o valor 2 para o terceiro e assim por diante.

enum fornecedores {gua, leo, cloro}; gua / / = 0; DIESEL = 1; CLORO = 2

possvelvel para entrar diretamente o valor de uma constante na lista de enumeraes. O aumento pra quando atribuir um valor a um
elemento da matriz, em seguida, reinicia a partir do valor atribudo. Veja o exemplo abaixo:

enum {Fornecedores AGUA, COMBUSTVEL = 0, cloro}; gua / / = 0; DIESEL = 0; CLORO = 1

constantes de enumerao so utilizados como segue:

int Velocidad_de_ascensor
enum motor_de_ascensor {STOP, START, NORMAL, MAX};
Velocidad_de_ascensor = normal; / / Velocidad_de_ascensou = 2

Defina novos tipos de dados


Palavra typedef permite que voc facilmente criar novos tipos de dados.

int typedef unsigned positiva; / / Positivo um sinnimo para o tipo int unsigned
positivos a, b;

/ / Variveis A e b a taxa positiva

a = 10;

/ / Varivel igual a 10

b = 5;

/ / Varivel b igual a 5

Escopo de variveis e constantes


Uma varivel ou constante reconhecida pelo compilador, com base em suas identificador. Um identificador no tem sentido se o
compilador pode reconhecer. O escopo de uma varivel ou constante o intervalo do programa em que a identificao no tem sentido.
O escopo determinado pelo lugar onde v declaradoV arivel ou constante. A tentativa de acessar uma varivel ou constante de
resultados fora do seu mbito, um erro. Uma varivel ou constante invisvel, fora do seu mbito. Todas as variveis e constantes que
ns usamos em um programa deve ser dTATEMENTS anteriormente no cdigo. Variveis e constantes podem ser globais ou locais. Uma
varivel global declarada no cdigo fonte externa de todas as funes, enquanto uma varivel local declarada dentro do corpo da
funo odEu ando um bloco aninhado em uma funo.

Um variveis globais so acessveis de qualquer parte do cdigoMesmo dentro das funes, desde que sejam declaradas. O escopo de uma
varivel global limitada at o final do arquivo de origem que tenha sido declarada.
O escopo das variveis locais limitado pelo bloco entre chaves {} que tenham sido declarados. Por exemplo, se declarou no incio da
funo do corpo (como na funo principal) O seu mbito entre o ponto da declarao e do fim da funo. Consulte o exemplo
anterior. Uma varivel local dTATEMENTS em main () no pode ser acessado a partir do Funcin_1 e vice-versa.
Um bloco de resina composta um conjunto de declaraes e afirmaes (que tambm pode bloquear) entre chaves. Um bloco pode ser
uma funo, uma estrutura de controle etc. Uma varivel declarada dentro de um bloco so considerados locais, ou "existe" apenas
dentro do bloco. No entanto, as variveis declaradas fora da rea ainda so visveis.
Apesar das constantes no podem ser modificados no programa, siga ass mesmas regras como variveis. Isso significa que eles so visveis
dentro do bloco, exceto a constante global (declarada fora de qualquer funo). As constantes so normalmente declarados no incio do
cdigo fora de qualquer funo (Variveis globais).

classes de armazenamento
classes de armazenamento so usados para definir o escopo e da vida das variveis, constantes e funes dentro de um programa. Em
mikroC voc pode usar diferentes classes de armazenamento:

autou uma classe de armazenamento padro para as variveis locais, por isso raramente
usado. usado para definir uma varivel local a hora local. A classe de armazenamento
automtico no podem ser usados com variveis globais.

estticas uma classe de armazenamento padro para variveis globais. Especifica que uma

varivel visvel dentro do arquivo. Um variveis locais declaradas com o prefixo estticas eles
podem acessar no arquivo de origem (ou se comportam como variveis globais.)

extern: Palavra-chave extern usado quando o programa composto de arco diferentesive

fonte. Isso permite que voc use uma varivel, uma constante ou uma funo declarada em
outro arquivo. Claro que, para compilar e vincular este arquivo corretamente, ele deve ser

includo em seu projeto. Nos exemplos a seguir, o programa consiste em dois arquivos: File_1

e File_2. A File_1 usa uma varivel e funo declarada no File_2.


Arquivo 1:

extern int CNT;

/ / Varivel visvel em File_1 cnt

extern void Ol (); / / Funo Ol () pode ser usado em File_1

vazio main () {
PORTA cnt = + +;
Ol ();

/ / CNT Quaisquer alteraes sero visveis em File_1 File_2


/ / Funo Ol () pode ser chamado a partir daqui

Arquivo 2:

int cnt = 0;
vazio Ol ();

vazio Ol () { / / As alteraes
./ / CNT em File_1 so visveis aqui
.
.
}

2,5 OPERADORES
Um operador um smbolo que indica uma operao aritmtica, a operao lgica, ou outro elemento. Simplificando, a aritmtica vrias
operaes lgicas so realizadas atravs da operadorao. H mais de 40 operaes disponveis em C, mas usa um mximo de 10-15 deles

na prtica. Cada operao executada em um ou mais operandos podem ser variveis ou constantes. Alm disso, cada operao
caracterizada por prioridade de execuo e associatividade.

Operadores Aritmticos
Os operadores aritmticos so usados em operaes aritmticas e sempre retornam resultados numricos. Existem dois tipos de
operadores, unitria e binrio. Ao contrrio de as operaes unitrias que so executadas em um operando, operaes binrias so
executadas em dois operandos. Em outras palavras, dois nmeros so necessrias para executar uma operao binria. Por exemplo: a +
b ou a / b.
Operador
+
*
/
%

Operao
Adenda
Subtrao
Multiplicao
Diviso
Resto da diviso

int a, b, c; / / Declare trs inteiros a, b, c


a = 5;

/ / Inicializa a

b = 4;

/ / Inicializar b

c = a + b; / / C = 9
c = c 2%;

/ / C = 1. Esta operao freqentemente usado


/ / para verificao de paridade. Neste caso, o
/ / Resultado 1, o que significa que a varivel
/ / um nmero mpar

Operadores de Atribuio
Existem dois tipos de atribuio na linguagem C:

Operadores simples atribuir valores a variveis usando o carter comum '='. Por exemplo: a =
8

dotaes especficas so feitas para C. Composto por dois caracteres, como mostrado na
tabela direita. So usadas para simplificar a sintaxe e permitir execuo mais rpida.
Operador
+=
-=
*=
/=
%=

int a = 5; / / Declara e inicializa a varivel

Exemplo
Expresso
a+=8
para -= 8
a 8 *=
a/=8
em% = 8

Equivalente
a=a+8
a=a-8
a=a*8
a=a/8
a =% a 8

a + = 10;

/ / A = a + 10 = 15

OPERADORES DE AUMENTO E DIMINUIO


As operaes de incremento e decremento para 1 so indicados com "+ +" e "--". Esses personagens podem preceder ou acompanhar uma
varivel. No primeiro caso (+ + x), a varivel x incrementado por 1 antes de serem utilizados em expresso. Caso contrrio, a varivel
utilizada no prazo antes de ser aumentado em 1. O mesmo se aplica operao de decremento.
Operador

Exemplo
++A
a++
-B
b-

++
-

Descrio
A varivel "a" incrementado por 1
A varivel "a" decrement para 1

int a, b, c;
a = b = 5;
c = 1 + a + +; / / C = 6
b = c + + + a

/ B = 7 + 6 = 13

Os operadores relacionais
Os operadores relacionais so usados em comparaes, a fim de comparar dois valores. Em mikroC, se uma expresso evaluada como
falsa (false), o operador retorna 0, enquanto que se a sentena for avaliada como verdadeira (true), retorna 1. Isso usado em
expresses como "se a expresso for avaliada como verdadeira, ento ..."
Operador
>
>=
<
<=
==
!=

Descrio
superior
igual ou superior
menos de
inferior ou igual
Como
desigual

Exemplo
b>
a> = 5
a <b
a <= b
a 6 ==
a! = b

Cexatido ONDIES
se b maior do que para
se para maior ou igual a 5
se para inferior b
se para inferior ou igual b
se para igual a 6
se para desigual b

int prop;
int var = 5;
var prop = 10; / / Expresso avaliada como verdadeira, prop = 1

Operadores lgicos
Existem trs tipos de operaes lgicas em C: Y (E) ou a negao lgica (OR) e lgico - NO (no) lgica. Os operadores lgicos retornam
verdadeiro (1 lgico) se a expresso avaliada no zero. Caso contrrio, ele retorna falso (0 lgico) se a expresso avaliada zero. Isso
muito importante porque as operaes lgicas geralmente so realizados em expresses, no em variveis (nmeros) indivduos no
programa. Portanto, as operaes lgicas referem-se a veracidade da expresso.

Por exemplo: 1
(

&
r

&
s

igual a (

&

&

O resultado 0, que - False em ambas as contagens.


Operador
&&

Funo

||

NO

Gesto de Operaes BITS


Diferentemente das operaes lgicas realizadas sobre os valores ou expresses, gesto de operaes de bits so realizadas sobre os bits
de um operando. Listados na tabela a seguir:
Operador
~
< <
> >

Descrio
Um complemento
Desvio esquerda
Shift direito

Exemplo
a=b~
a = <b <2
a = b>> 2

&

E lgico bit a bit

c=a&b

O lgico bit a bit

c=|b

EXOR lgico bit a bit

c=a^b

Resultado
b=5
b = 11110011
b = 11110011
um = 11100011
b = 11001100
um = 11100011
b = 11001100
a = 11100011
b = 11001100

um = -5
um = 11001100
um = 00011110
c = 11000000
c = 11101111
c = 00101111

Observe que o resultado da operao de deslocamento para a direita depende do sinal da varivel. Se a operao aplicada a uma
varivel unsigned ou positivo, os zeros sero introduzidos no espao vcuo criado pelo deslocamento. Se aplicada a um nmero inteiro
negativo, ser introduzido primeiro de janeiro de manter o sinal correto da varivel.
COMO USAR OS OPERADORES?

Alm dos operadores de atribuio, dois operadores no devem ser escritas lado a lado.
x * 12%; / / Esta expresso ir gerar um erro

Cada operador tem a sua prioridade e associatividade como mostra a tabela:

Semelhante a expresses aritmticas, os operadores so agrupados por parnteses. Primeiro


calculadaNenhum expresses entre parnteses. Se necessrio, voc pode usar parnteses
mltipla (aninhados).

Prioridade

Operadores

Adicionado

(
(

!
u

~
i

+
a

)
+
e
P

)
o

*
t

>
>

>

.
U
n
o

<

<

(
o
r

<

P
i

>

Associativismo
Da esquerda para a
direita
n
t

i
e

t
i

)
r

do direitodeixou cha
Da esquerda para
direita
Da esquerda para
direita
Da esquerda para
direita
Da esquerda para
direita

a
a
a
a

&
^
|
&

&

|
?

Baja

=
=

*
|

:
/

<

=
=

/
>

&

Da esquerda para
direita
Da esquerda para
direita
Da esquerda para
direita
Da esquerda para
direita
Da esquerda para
direita
da direita para
esquerda
da direita para
esquerda
Da esquerda para
direita

a
a
a
a
a

int a, b, respectivamente;
a = 10;
b = 100;
res = a * (a + b) / / Resultado = 1100
res = a * a + b;

/ / Resultado = 200

DADOS DE TAXA DE CONVERSO


Algumas operaes envolvem a converso de dados. Por exemplo, se voc dividir dois valores inteiros, existe uma grande possibilidade de
que o resultado no um nmero inteiro. O mikroC realiza uma converso automtica quando necessrio.
Se dois operacionals de diferentes tipos so usados em uma operao aritmtica, a taxa de explorao do menor prioridade torna-se
automaticamente o tipo de operao no maior prioridade. Os principais tipos de dados so colocados na seguinte ordem
hierrquicaQuico:

O autoconverso realizada tambm nas operaes de cesso. O resultado da expresso direita operador de atribuio sempre
convertido para o tipo da varivel esquerda do operador. Se o tipo de resultado a maior prioridade, ele descartado ou arredondado
para corresponder ao tipo de varivel. Quando voc converte um dado real en um inteiro, so sempre descartados os nmeros aps o
ponto decimal.

int x;

/ / Uma varivel x atribudo o nmero inteiro (um inteiro)

x = 3;

/ / Uma varivel x atribudo o valor 3

x + = 3,14; / / O valor de 3,14 adicionado varivel x para

/ / Faz a operao de atribuio

/ * O resultado da adio de 6 em vez de 6,14, conforme o esperado.


Para obter o resultado desejado, sem demitir os seguintes nmeros da
ponto decimal, voc deve declarar x como uma bia. * /

Para realizar uma converso, antes de escrever uma expresso ou varivel que voc deve especificar o tipo de suportes de lucro
operacional.

dupla distncia, tempo, velocidade;


distncia = 0,89;
tempo = 0,1;
velocidade = (int) (A / b) / / C = (int) 8.9 = 8.0
velocidade = ((int) A) / b; / / C = 0/0.1 = 0,0

2,6 ESTRUTURAS DE CONTROLE


Estruturas condicionais
As condies so ingredientes comuns de um programa. As condies de permitir a execuo de uma instruo ou instrues, dependendo
da validade de uma expresso. Em outras palavras, "Se a condio precisa ser feito (...). (...), Caso contrrio, se a condio no for
preenchida, deve ser (...)'. operandos condicional if-else e switch utilizados nas operaes de condicional. A instruo condicional pode
ser seguido por uma nica instruo ou um bloco de instrues a serem executadas.
If-else Operador Condicional
O operador se pode ser usada sozinha ou associada com o operador outra (if-else).
Exemplo de operador se:

se(Expression) operao;

Se o resultado da expresso entre parnteses for verdadeira (diferente de 0) a operao executada eo programa continua com a
execuo. Se o resultado da expresso falso (0), o operao falha e continuar o programatinua a execuo imediatamente.
Como mencionado, o contrrio se combina o operador e para o outro:

se(Expression) operacin1 mais operacin2;

Se o resultado da expresso verdadeira (diferente de 0), feita operacin1, Caso contrrio oO Rio realizado operacin2. Depois de
realizar as operaes, o programa continua a execuo.
A sentena if-else parecido com o seguinte:

se(Expression)
operacin1
mais
operacin2

Se operacin2 consiste operacin1 ou insira um lista de instrues entre chaves. Por exemplo:

se(Expresso) {
... / /
... / / Operacin1
...} / /
mais
operacin2

O operador if-else pode ser substitudo pelo'?:': condicional

(Expression1)? expression2: expression3

Se o valor da expresin1 diferente de 0 (verdadeiro), o resultado de toda a expresso ser equivalente ao resultado de expression2.
Caso contrrio, se expression1 0 (falso), o resultado de toda a expresso ser equivalente ao resultado obtido o expression3. Por
exemplo:

mximo = (a> b)? a: b / / A varivel atribudo o mximo


/ / Valor da maior varivel (a ou b)

Mudar de operadora

Ao contrrio do processo if-else que selecciona entre duas opes no programa, eoperador l switch pode escolher entre vrias opes. A
sintaxe da switch o seguinte:

switch (Selector) / / Seletor do tipo char ou int


{
constante1 caso:
operacin1 / / O grupo de operadores que so executados se
...

/ Dial / e o constante1 so equivalentes

quebrar;

caso constante2:

operacin2 / / O grupo de operadores executado se


...

/ / Discar e so equivalentes constante2

quebrar;
...
padro:

operacin_esperada / / O grupo de os operadores para executar se


...

/ / No constante equivalente ao selector

quebrar;
}

A operao da chave executado da seguinte forma: primeiro voc deve executar o seletor e comparados com constante1. Se forem
iguais, caso que pertencer a esse bloco executado at a ruptura palavra-chave ou o fim do interruptor de operao. Se no
corresponder, o seletor comparado com o constante2. Se forem iguais, as instrues que pertencem a esse bloco executado para
alcanarr para a palavra-chave break etc Se a chave no corresponde a nenhuma constante, ir executar as operaes que seguem o
operador padro.

Tambm possvel comparar uma expresso com um grupo de constantes. Se ele corresponder a qualquer uma delas,
executadooperaes Aran apropriado:

switch (Dias) / / O dia varivel de um dia por semana.


{/ / Voc deve determinar se um dia de trabalho ou no
Caso 1: Caso 2: CASE3: caso4: Case5: LCD_message = 'durante a semana; quebrar;
case6: case7: LCD_mENSAGEM = 'Weekend'; quebrar;
padro: LCD_message_1 = 'Escolha um dia da semana; quebrar;
}

'Break' palavra-chave C pode ser usado em qualquer tipo de blocos. Ao usar o 'break', voc pode deixar um bloco enquanto a condio
para fpenais no foi cumprida. Ele pode ser usado para terminar um loop infinito, ou para forar um loop a terminar mais cedo que o
normal.

LAOS
Muitas vezes necessrio repetir alguma operao algumas vezes no programa. Um conjunto de comandos que so repetidasdez
chamado um loop de programa. Executar muitas vezes, que quanto tempo o programa ficar em loop, dependendo das condies fora
do circuito.

While
O loop enquanto parecido com o seguinte:

enquanto(Expresso) {
comando
...
}

Os comandos so executados repetidamente (o programa fica em loop) at que a expresso se torne falsa. Se a expresso for falsa no
circuito, ento o loop no ser executado e o programa ir continuar aps o final do loop while.
Um tipo especial de lao programa um loop infinito. formado se a condio se mantm inalterado dentro do loop. A aplicao
simples, neste caso, pois o resultado em chaves sempre verdade (1 = true), o que significa que pROGRAM permanece no mesmo ciclo:

enquanto(1) { / / Em vez de "enquanto" (1), voc pode escrever "while (true)"


...

/ / Expresses entre chaves ser executado

...

/ / Vrias vezes (loop infinito)

Loop
O loop para seguido semelhante aonte:

para(Expresin_inicial; expresin_de_condicin; cambiar_expresin) {


operaes
...
}

A aplicao desta seqncia programa semelhante ao circuito enquantoS que neste caso o processo de especificao do valor inicial
(semente) rEalice no comunicado. A varivel expresin_ inicial especifica o ciclo inicial, que foi posteriormente comparada com a
de_condicin expresin_ antes de entrar no loop. Operaes dentro do loop executado vrias vezes e aps cada iteraong o valor
aumenta de acordo com o expresin_inicial cambiar_expresin regra. A iterao continua at que o expresin_de_condicin torna-se
falsa.

para(K = 0, k <5, k + +) / / A varivel k aumentada em cinco vezes (1-4) e


operao

/ / Toda vez que ele repete a mesma operao

...

A operao foi executada por cinco vezes. Ento, quando o teste confirma que a expresso k <5 falsa (aps 5 iteraes k = 5) e o
programa sair do lao.

Do-while
O loop do-while parecido com o seguinte:

fazer
operao
enquanto (Cambiar_condicin)

O cambiar_condicin expresso executado no final do ciclo, o que significa que a operao realizada pelo menos uma vez, sem
perceber que se a condio verdadeira ou falsa. Se o resultadoou diferente de 0 (verdadeiro), o procedimento repetido.
Todos os seguintes so equivalentes. Este pedao de cdigo exibe "Ol" em um LCD de 10 vezes com um atraso de um segundo. Note que
este exemplo usa funes predefinidas, Compilador encontrados nas livrarias mikroC para PIC PRO. No entanto, aconselhamos a no
tentar entender em detalhes. Geral comportamento dentro do ciclo explicado pelos comentrios.

i = 0; / / Cont Inicializaoador

enquanto (I <10) {

/ Estado /

Lcd_Out (1,3, "Ol"); / / Mostra "Ol" do LCD


Delay_ms (1000);
Lcd_Cmd (_LCD_CLEAR)

/ Delay / ms 1000
/ / Clear LCD

Delay_ms (500);
i + +;

/ / 500ms de atraso
/ / Contador incrementado

}
para(I = 0; i <10; i + +) {
Lcd_Out (1,3, "Ol");

/ / Aumento de inicializao, condio


/ / Mostra "Ol" do LCD

Delay_ms (1000);
Lcd_Cmd (_LCD_CLEAR)

/ Delay / ms 1000
/ / Clear LCD

Delay_ms (500);

/ / 500ms de atraso

}
i = 0;

/ / Reset do contador

fazer {
Lcd_Out (1,3, "Ol");
Delay_ms (1000);
Lcd_Cmd (_LCD_CLEAR)

/ / Mostra "Ol" do LCD


/ Delay / ms 1000
/ / Clear LCD

Delay_ms (500);/ / 500ms de atraso


i + +;

/ / Contador incrementado

}
enquanto (I <10);

/ Estado /

SALTO DE PENAS
Acrdo BREAK
s vezes necessrio parar e sair de um loop dentro de seu corpo. A instruo break pode ser usados dentro de qualquer loop (while, for,
fazer enquanto), e tambm mudar declaraes. Nestes a instruo break usada para sair do switch declaraes se a condio de caso

verdadeiro. Neste exemplo, "espera" comear a piscar na paredeLCD ntalla at que o programa detecta um problema lgico no pino 0 da
Porta.

enquanto(1) { / / Loop infinito


if (PORTA.F0 == 1)
break;

/ / Testa se o estado lgico do pino 0 da porta


/ / Porta um, se igual, deixe o bucle

Lcd_Out (1,3, "Waiting"); / / Show "Wait" em LCD


Delay_ms (1000);
Lcd_Cmd (_LCD_CLEAR)
Delay_ms (500);

/ Delay / ms 1000
/ / Clear LCD
/ / 500ms de atraso

Acrdo CONTINUAR
A instruo continue colocado dentro um loop usado para pular uma iterao. Ao contrrio do comando break, o programa permanece
dentro do loop e continuar as iteraes.

/ / Se x = 7, pode ser uma diviso por 0.


/ / Continue aqui utilizado para evitar essa situao.
x= 1;
enquanto (X <= 10) {
se (X == 7) { / / Passar x = 7, para evitar diviso por 0
Lcd_Cmd (_LCD_CLEAR)
Lcd_Out (1,3, "Diviso por 0");
Delay_ms (1000);
x + +;
continuar;/ / Aps essa linha, saltar para o comando while com x = 8
}

a = 1 /(X-7); / / Esta diviso ir gerar um erro se x = 7

/ * Muitas operaes podem acontecer aqui * /

Lcd_Out (1,3, "A diviso OK"); / / Coloque a mensagem no LCD


Delay_ms (1000);
x + +;
}

declarao de IR
A instruo goto permite que voc faa um salto absOluta para outro ponto no programa. Este recurso deve ser usado com cautela, pois
sua aplicao pode causar um salto incondicional ignorando todos os tipos de limitaes de aninhamento. O ponto de destino
identificado por uma etiqueta, Usado como um argumento para a instruo goto. Uma marca um identificador vlido seguido por dois
pontos (:).

...
se(CO2_sensor) goto ar condicionado; / / Se o valor foi
...

/ / Dos vriosble CO2_sensor = 1


/ / Para ir para a linha de programa
/ / Ar Condicionado

...
Ar condicionado:

/ / A partir daqui o cdigo que executadoRa


/ / No caso de uma concentrao muito alta de CO2

...

/ / No ambiente

2,7 Advanced Tipos de Dados


MATRIZES
Uma matriz uma lista de itens e colocado o mesmo tipon posies de memria contguas. Cada elemento referenciado por um ndice.
Para declarar um array, voc deve especificar o tipo dos seus elementos (tipo array chamado), seu nome e nmero de itens entre
colchetes. MoitaEu os elementos de um array tm o mesmo tipo.

tipo_de_matriz nombre_de_matriz [No _de_elementos]

Os elementos da matriz so identificados por sua posio. Em C, o ndice varia de 0 (o primeiro elemento de uma matriz) para N-1 (N o
nmero de elementoses contidas em uma matriz). O compilador tem de "saber" como locais de memria muitos devem acomodar-se
declarar uma matriz. O tamanho de uma sombra no pode ser uma varivel. Portanto, voc pode usar dois mtodos:

/ / Mtodo 1
int mostrar [3]; / / DeDeclarao da exposio da matriz capaz de conter trs nmeros inteiros
/ / Mtodo 2
const DIGIT = 5;
char [DGITOS] Matriz_nueva; / / Declarao da matriz Matriz_nueva
/ / Capaz de conter 5 nmeros inteiros

Um array pode ser inicializado para vez declarar, ou mais tarde no programa. Em ambos os casos, esta etapa feita usando chaves:

int array_1 [3] = {10,1,100};

Para ler ou modificar um elemento da matriz, no exemplo acima, basta digitar o seu ndice entre colchetes:

/ * Isto pressupe que previamente tenha sido declarada como um inteiro * /

a = array_1 [0]; / / Uma varivel atribuda a valor do membro matriz

/ / Com o ndice de 0 (a = 10)


array_1 [2] = 20; / / Os array_1 matriz [2] modificada (o novo valor 20)

As seguintes alteraes do programa a ordem dos elementos de uma matriz. Note-se que o ndice pode ser expresso por varoperaes
iable e bsico.

vazio main () {
MUESTRAS_DE_AGUA const = 4; / / Valor da constante de 4 MUESTRAS_DE_AGUA

i, int temp; / / Variveis de temperatura so i e int


profunidad_de_sonda int [MUESTRAS_DE_AGUA] 24,25,1,1987 = {};/ / Todos os

/ / A profundidade os membros da matriz


/ / Probe int

for (i = 0; i <(MUESTRAS_DE_AGUA / 2) i + +) { / / Loop executado 2 vezes


temp = profundiad_de_sonda [i];

/ / Temp usado para armazenar um valor


/ / temporariamente

profundiad_de_sonda [i] = profundiad_de_sonda [MUESTRAS_DE_AGUA-1-i];


profundiad_de_sonda [MUESTRAS_DE_AGUA-1-i] = temp;
}

/ / Aqui ns temos: profundidad_de_sonda [MUESTRAS_DE_AGUA] = {} 1987,1,25,24


}

matrizes de dimenses
Aparte de matrizes unidimensionais, que pode ser interpretado como uma lista de valores, a linguagem C permite declarar arrays
multidimensionais. Nesta parte, iremos descrever somente arrays de duas dimenses, tambm conhecido como tabelas ou matrizes.
Uma matriz bidimensional declarada, especificando o tipo de dados da matriz, o nome da matriz eo tamanho de cada dimenso.

tipo_de_matriz nombre_de_matriz [nmero_de_filas] [nmero_de_columnas]

A declarao deste nmero_de_filas matriz e nmero_de_columnas representam o nmero de linhas e colunas em uma tabela que
consiste respectivamente. Veja a seguinte matriz bidimensional:

int Tabela [3] [4]; / / Tabela definida com 3 linhas e 4 colunas

Esta matriz pode ser representado sob a forma de uma tabela.


tabela [0] [0]
tabela [1] [0]
tabela [2] [0]

tabela [0] [1]


tabela [1] [1]
tabela [2] [1]

tabela [0] [2]


tabela [1] [2]
tabela [2] [2]

tabela [0] [3]


tabela [1] [3]
tabela [2] [3]

Unidimesionales matrizes semelhantes, voc pode atribuir valores para os elementoses de uma tabela na linha de declarao. A
atribuio deve ser feita linha por linha, como no exemplo a seguir. Como observado anteriormente, essa matriz tem duas linhas e trs
colunas:

int Tabela [2] [3] = {{3,42,1}, {7,7,19}};

A matriz anteriorior pode ser representada tambm na forma de uma tabela de valores:
3
7

42
7

1
19

PONTEIROS
Um ponteiro uma varivel para receber um endereo. Um ponteiro "aponta" para uma localizao de memria referenciada por um
endereo. Em C, o endereo um objeto pode ser obtido por um operador unitrio &. Para acessar o contedo da memria em uma
direo especfica (tambm chamado de objeto de destino), utilizando um operador de indireo (*).

'& N' o endereo do 'n' a posio de memria.


'* (& N) " o contedo do endereo (& N)' ou 'n'.
Para declarar um ponteiro, voc deve especificar o tipo da varivel apontada:

tipo_de_variable * Ptr;

Nesta fase, os pontos mi_puntero ponteiro para o valor armazenado neste local de memria ou para um valor desconhecido. Ento, a
inicializao altamente recomendvel:

ponteiro = &variable;

Ahora, ponteiro contm o endereo da varivel.


Para acessar o contedo da varivel apontada, voc deve usar "*". O exemplo a seguir mostra o contedo da memria, dependendo da
ao tomada pelo ponteiro.

Os ponteiros so muito teis para a manipulao de matrizes. Neste caso, um ponteiro usado para apontar para o primeiro elemento de
uma matriz. Devido que pode executar operaes bsicas sobre ponteiros (ponteiro aritmtico), fcil de manipular os elementos de
uma matriz.
Observe a diferena entre '+1' v * e' * (v +1) 'no exemplo a seguir:

short int V [3] = {0,5,10};


curto int * V;
v = & (V [0]);

/ / V contm o endereo de um volt [0]

* (V +1) = 2;
V [2] = v * 1;

/ / Volt [1] 2 =
/ / Tab [2] = 1 (separador [0] + 1)

* (V 2) * = (v 1);

/ / Volt [2] = 2

v + +;

/ / V contm o endereo de um volt [1]

* V = 1;

/ / Volt [1] = 1

Ponteiros tambm podem ser declaradas com 'const' o prefixo. Neste caso, seu valor no pode
ser alterada aps a inicializao, similar a uma constante.
Ao contrrio do C, o mikroC no suporta alocao dinmica.

ESTRUTURAS
Vimos como o grupo de elementos dentro de matrizes. Entretanto, ao usar este mtodo todos os itens devem ser do mesmo tipo. Por
estruturas usando, voc pode agrupar diferentes tipos de variveis com o mesmo nome. A variveis dentro de uma estrutura chamada
de membros da estrutura. As estruturas de dados so declarados usando a seguinte sintaxe:

struct {Nombre_de_estructura
tipo1_de_miembro1 member1;

tipo2_de_miembro2 member2;
tipo3_de_miembro3 miembro3;
..
};

No possvel inicializar as variveis na declarao da estrutura de dados:

struct gerador de {
int tenso;
char corrente;
};

Depois, voc pode definir objetos chamado 'turbina' no cdigo. A cada um tosse trs objetos (turbinas) atribudo as variveis 'corrente'
e 'tenso'.

struct turbina_1 geradores, turbina_2, turbina_3;

Para acessar as variveis, voc deve usar o ".

turbina_3.voltaje = 150;
turbina_3.corriente = 12;

Por suaporque, como ponteiros usando, ainda permitido para realizar operaes atravs de operadores, e declaraes, tal como
definido nas partes anteriores.
Se voc estiver familiarizado com a linguagem C, lembre-se que mikroC no suporta inicializao membros da estrutura atravs das
teclas. Por exemplo, 'conjunto_1 = {15, "m"},' retorna um erro na mikroC.

2,8 FUNES
Uma funo uma sub-rotina que contm uma lista de declaraes a serem feitas. A idia principal dividir o programa em vrios peas
usando essas funes para resolver o problema inicial com mais facilidade. Alm disso, as funes nos permitem usar as habilidades e os
conhecimentos de outros desenvolvedores. A funo executada toda vez que voc chama dentro de outra funo. Em C, um programa
contm pelo menos uma funo, a funo main (), embora o nmero de funes geralmente maior. Quando o cdigo usando a funo se
torna mais curto, possvel chamar uma funo, muitas vezes, conforme necessrio. Em C, o cdigoou normalmente consiste em muitas
funes. No entanto, se seu programa muito curto e simples, voc pode escrever todos os comandos dentro da funo principal.

Funo principal
A funo principal main () uma funo especial no que que est sendo executado na inicializao. Alm disso, o programa termina
depois de terminar a execuo desta funo. O compilador reconhece automaticamente essa funo e voc no pode cham-la por outra
funo. A sintaxe desta funo que seseguinte forma:

vazio principal (vazio) {

/ * O primeiro 'vazio' significa que retorna nenhum valor principal. A segunda


'Vazio' significa que no recebe qualquer valor. Note que o compilador
tambm suporta a seguinte sintaxe: main () "ou" void main () "ou
* Main (void) /

..

/ * --- --- Insira o seu programa aqui * /

.
};

Isto significa que f uma funo que recebe um nmero real x como parmetro e retorna 2 * xy.
A mesma funo em C semelhante ao seguinte:

flutuar f (flutuar x, flutuar y) / / Variveis X e Y esto flutuando puso ueden f


{
flutuar r;

/ / R Declare para armazenar o resultado

r = 2 * x - y; / / Guarda o resultado do clculo de r


retorno r;

/ / Retorna o valor de r

Cada funo deve ser declarada, a fim de interpretar corretamente cpropriedade de trabalho durante o processo de compilao. A
declarao contm os seguintes elementos:

Tipo de resultado (valor de retorno): tipo de dados do valor de retorno


Nome da Funo: um identificador que pode chamar uma funo.

Declarao parmetro semelhante declarao de variveis regulares (por exemplo: float x).
Cada parmetro uma varivel ponteiro constante, ou matriz, precedido pelo tipo de dados
da etiqueta. Eles so usados para transmitir informaes para a funo de chamarMarla.
Diferentes parmetros so delimitados por vrgulas.

Funo principal: bloco de instrues dentro de chaves

Uma funo semelhante ao seguinte:

result_type nombre_de_funcin (tipo argument1, tipo argument2 ,...)


{
Acrdo;
SentenaIA;
...
retorno ...
}

Note que uma funo no requer quaisquer parmetros (funo main (), por exemplo), mas deve estar entre parnteses. Caso contrrio,
o compilador interpreta mal a funo. Para deixar claro, voc pode substituir o espao em branco entre parnteses e do vazio de
palavras-chave: main (void).

VALOR DE RETORNO
Uma funo pode retornar um valor (no obrigatrio) pela palavra-chave retorno. Chegando em contrapartida, a funo avalia um valor
(pode ser uma expresso) e retorna para a linha de programa a partir do qual ele foi chamado.

retorno r;

/ / Retorna o valor em r

retorno (2 * x - y); / / Retorna o valor da expresso 2 * x-y

Uma funo no pode retornar mais de um valor, mas pode retornar um ponteiro ou estrutura. Tenha cuidado ao utilizar matrizes e
ponteiros. O exemplo a seguir um erro comum:

int * Reverse (int * Tab) / / Esta funo deve retornar uma matriz r
{/ / Cujo contedo est em ordem inversa
/ Re /SPECT para a guia dos pais
int r [SID]; / / Declarando uma nova matriz chamada r

int i;
para(I = 0; i <DIM; i + +)

/ / Loop para copiar o guia de contedo em r

r [i] tab = [DIM-1-i]; / / Para inverter a ordem

retorno r; / / Retorna o valor de r


}

Em realidade, o compilador aloca memria para a funo de armazenamento nica varivel durante a execuo inversa. Uma vez que a
aplicao do reverso, o local da memria para a varivel r io para a matriz no mais reservada. Este significa que o endereo que
contm os valores ior [] livre para inserir novos dados. Especificamente, a funo retorna apenas o valor de r & [0], ento apenas o
primeiro elemento da guia principal sero armazenadas na memria. Outras localidadesatividades de memria, tais como & tab [1], &
tab [2], etc sero considerados pelo compilador como um espao em branco, ou estar pronto para receber novos valores.
Para escrever esta funo, passar a matriz r] [como parmetro (ver sub-Passe a seo de parmetros).
A funo pode conter mais de uma instruo de retorno. Neste caso, para executar a instruo de retorno em primeiro lugar, a funo
retorna o valor correspondente e interrompe a execuo da funo.

flutuar abs (flutuar x, flutuar y) / / Retorna o valor absoluto de 2 * x-y


{
se ((2 * x - y)> = 0)
retorno (2 * x - y);
mais
retorno (-2 * X + y);
}

Se a funo no retorna nenhum valor, o vazio a palavra a ser usada como um tipo de resultado na declarao. Neste caso, luma
instruo de retorno no deve ser seguido por qualquer expresso. Pode ser omitido, como no exemplo a seguir:

vazio wait_1 (unsigned int a)


{
cnt + +;

/ / Aumento de uma varivel global cnt

Delay_ms (a); / / Execute a funo delay_ms

/ / Observe que delay_ms retorna nada

FUNO PROTTIPOS DECLARO


Para usar uma funo, o compilador deve estar ciente de sua presena no programa. Programao em C, os programadores escrevem
tipicamente primeira funo main () e, em seguida, as funes adicionais. Para dizer o compilador da presena das funes adicionais
so obrigados a declarar os prottipos de funo no incio do programa antes do show main (). Um prottipo de funo compostopelo:

tipo de resultado
nome da funo

tipos de parmetro

um ponto e vrgula (;)

O prottipo da funo principal no precisa ser declarado.

flutuar f (flutuar,flutuar)

/ * No necessrio para gravar os nomes dos parmetros. Este prottipo


informa ao compilador: no programa, a funo f,
usando dois parmetros de tipo float e retorna o resultado do tipo
float. * /

CALL FUNCTION
Enquanto uma funo definido e declarado o seu prottipo pode ser utilizado em parte pr CulquiOGRAM. No entanto, como a funo
principal 'root' do programa no pode ser chamado em qualquer parte do programa. Para executar uma funo, voc deve digitar seu
nome e parmetros associados. Veja os exemplos a seguir:

flutuar resultado, a, b; / / resultado, a, b, do tempo, devem corresponder aos tipos


/ / Definir
int tempo = 100;

/ / Na declarao das funes f e wait_1

um = 10,54;
b = 5,2;
resultado = f (a, b);

/ / Executa a funo f por meio dos parmetros b

/ / O valor de retorno atribudo varivel resultado

pausa_1 (tempo);
funcinX ();

/ / Executa a funo pausa_1 varivel ao longo do tempo


/ / Executa a funo funcinX (sem parmetros)

Quando a funo chamadaons, o programa salta para a funo chamada, executa, em seguida, retorna para a linha a partir do qual ele
foi chamado.

Passando Parmetros
Ao chamar uma funo, os parmetros so passados. Em C, existem duas maneiras de passar parmetros para uma funo.
A primeiro mtodo, chamado de "passar por valor ' o mais fcil. Neste caso, os parmetros podem ser considerados como variveis locais
da funo. Quando voc chamar uma funo, o valor de cada parmetro copiado para um novo espao de memria reservado
dudurante a execuo da funo. Uma vez que os parmetros so tratados como variveis locais, o compilador, os valores podem ser
modificados dentro da funo, mas as alteraes no permanecem na memria aps a execuo est completa funo.
Observe que a funo retorna um valor, no uma varivel. Alm disso, ele cria cpias dos valores dos parmetros, para que seus nomes
na funo f pode ser diferente a partir dos parmetros utilizados no main (). A maioria dos devento de 'passar por valor que a nica
interao que tem uma funo com o resto do programa o valor de retorno de um nico resultado (ou a modificao de variveis
globais).
O outro mtodo, chamado de "passar por endereo 'permite que sobrepasar este problema. Em vez de enviar o valor de uma varivel ao
chamar a funo, voc deve enviar o valor do endereo de memria. Em seguida, a chamada funo ser capaz de modificar o contedo
desta posio de memria.

/ / Funo sort'orden 'membros da matriz por ordem crescente de valor


/ / E retorna o membro com o maior valor

int sort (int *) / Prottipo da funo /


const SIZE = 5; / / Nmero de inscritos para a ordem

vazio main () {
int mxima, a entrada [TAM] = {} 5,10,3,12,0; / / Declarao variveis na matriz
tipo = mximo (entrada);
/ / O valor mximo para a varivel
}

int sort (int * Seqncia) {

/ / Chama funo e atribuir a mxima

int i, de temperatura, swap;


PERMUT = 1;

/ / Declarao de variveis

/ / Bit Bandeira indica que tem uma permutao

enquanto(Permut! = 0) {
PERMUT = 0;

/ / Fique no loop at o reincio da bandeira


/ / Flag Reset

para(I = 0; i <TAMANHO-1, i + +) {

/ / Compare e membros oredenar de

/ / Array (dois a dois)


se(Sequncia [i]> sequncia [i +1]) {
seqncia temp = [i];
seqncia [i] = seqncia [i +1];
seqncia [i +1] = temp;
PERMUT = 1; / / Houve uma permutao, a proibiodera Bit
/ / definido como um
}
}
}

retorno seqncia [TAMANHO-1]; / / Retorna o valor do ltimo membro

}/ / Isso tanto o membro com o maior valor

Neste exemplo, por meio de uma funo realizou duas operaesraes, as ordens dos membros do valor asdendente matriz e retorna o
valor mximo.
Para usar um array para uma funo, voc deve atribuir o endereo para a matriz (ou o seu primeiro membro). Veja o exemplo abaixo:

flutuar mtodo_1 (int[]);

/ / Declarao de prottipo de funo Mtodo_1

flutuar mtodo_2 (int *);

/ / Declarao Mtodo_2 prottipo da funo

const NMERO_DE_MEDICIONES = 7; / / Nmero de membros da matriz

vazio main ()
{
dupla promedio1, average2; / / Declarao de variveis promedio1
/ / E average2
int tenso [NMERO_DE_MEDICIONES] = {7,8,3,5,6,1,9}; / / Declarao
/ / Array de tenso
promedio1 method =todo_1 (e de tenso [0]); / / O parmetro a funo de direo
/ / O primeiro membro
average2 = mtodo_2 (voltagem) / / Parmetro da funo a direo do
/ / A matriz
}

//
flutuar mtodo_1 (int Tenso [])

/ / Funo Start mtodo_1

{
int i, soma;

/ / Declarao de variveis locais i e soma

para(I = 0; i <NMERO_DE_MEDICons; i + +) / / Calcular o valor mdio da tenso


soma + = tenso [i];

/ / Voc pode usar * (tenso + i) em vez de tenso [i]

retorno(Adio / NMERO_DE_MEDICIONES)
}

//
flutuar mtodo_2 (int * Tenso) / / Funo Start mtodo_2
{
int i, soma;

/ / Declarao de variveis locais i e soma

para(I = 0; i <NMERO_DE_MEDICIONES; i + +) / / Calcular o valor mdio da tenso


soma + = * (tenso + i),

/ / Voc pode usar a tenso [i] em vez de * (tenso + i)

retorno(Adio / NMERO_DE_MEDICIONES)
}

As funes 'mtodo_1' e 'mtodo_2 "so completamente equivalentes. Ambos retornam o valor mdio da matriz 'tenso []'. Depois de
dezembrolararla, o endereo do primeiro membro pode ser escrita como 'tenso' ou '& Tenso [0]'.

Preprocessor CARACTERSTICAS 2,9


O pr-processador um programa que processa o cdigo antes de passar pelo compilador. Opera sob o controle linha de comando
chamado directivas de pr-processamento. directivas Preprocessor so colocados no cdigo-fonte, geralmente no incio do arquivo. Antes
de atravessar o compilador, o cdigo fonte analisado pelo pr-processador que detecta e executa todas as diretivas de prprocessamento. directivas Preprocessor seguir uma regra de sintaxe especial, comeando com um ponto e vrgula smbolo '#' e no
requerem no final (;).

directiva Preprocessor
Os seguintesTabela I contm um conjunto de directivas de pr-processamento comumente usados:
directivas Preprocessor podem ser divididos em trs categorias:
As Directivas
# Define
# Undef
# Define
# Ifdef
# Endif
# Ifndef
# Se
# Else
# Elif

Caractersticas
Define a substituio de uma macro
Remove uma definio de no-"Macro nome do
Especifica um arquivo para ser includo
Teste de definio de macro
Especifique o fim do # if
Testando se uma macro no est definido
testar as condies de compilao
Especifica quatro alternativas# ndo se o teste falhar
Especifica alternativa quando mais de duas condies so necessrias

definies de macro
Arquivo Incluses

Compilao de Controle

Agora, vamos apresentar apenas as directivas de pr-processamento mais utilizadosem conformidade. No entanto, nem todos eles
precisam saber para microcontroladores programa. Basta ter em mente que o pr-processamento uma poderosa ferramenta para
programadores avanados em C, especialmente para controlar a compilao.
directiva definir macros pr-processador

Usando macros, voc pode definir constantes e executar funes bsicas. substituio de macro um processo em que um programa
identificador substitudo por uma seqncia pr-definida. O preprocesador substitui todas as ocorrncias do identificador no cdigofonte de uma seqncia. Depois da substituio, o cdigo ser compilado normalmente.
Isso significa que o cdigo substitudo deve respeitar a sintaxe da mikroC. A aco tem lugar pela directiva '# define'.

# Define PI 3,14159 / / Substituindo simples, PI passa a ter


/ / Valor de 3,14159 em todas as partes do programa

Voc tambm pode usar os parmetros para substituies mais complexa:

# Define VOL (D H,) (((D / 2) * (D / 2) * PI)) H * / / Macro com Parmetros

Ento, no cdigo, a seguinte declarao:

Tanque_1 VOLUME = (altura, dimetro);

substituda por:

Tanque_1 = (((dimetro / 2) * (dimetro / 2) * PI * altura);

Usando o unde #f possvel remover uma definio de nome de macro. Isso especifica que a substituio tenha sido definido
anteriormente no ocorrer mais no cdigo a seguir. Isso til quando voc deseja restringir a definio apenas para uma parte
especfica do programa.

# TANQUE Undef / / Remover o volume definio de macro

INCLUDE FILE
A directiva de pr-processamento # Include cpia de um arquivo especfico no cdigo fonte. O cdigo deve seguir a sintaxe do C ser
compilado corretamentente.
Existem duas formas de escrever estas polticas. Em primeira instncia, apenas o nome do arquivo especificado, ento o prprocessador ir procurar no arquivo de incluso. No segundo exemplo, especifica o caminho completo, assim que o arquivo ser includos
diretamente (este mtodo mais rpido).

# Incluir <file_name>

/ / Ele especifica somente o nome do arquivo

# Include "C: \ Caminho \ nombre_de_archivo.h"

/ / Especifica o local

/ / ExActas Arquivo

MikroC 2,10 PRO PARA PIC


Como vimos, existem vrias diferenas entre as lnguas e mikroC ANSI C. Neste captulo, vamos apresentar as caractersticas especficas
de mikroC com a finalidade de facilitar a programao dos meusmicrocontroladores PIC.

O acesso aos registos funo especial (SFR)


Como todos os microcontroladores da famlia PIC tem a funo de registradores especiais (SFR). Para programar um PIC, voc precisa
acessar esses registros (para leitura ou escrever). Usando o compilador mikroC para PIC PRO possvel acessar qualquer SFR
microcontrolador em qualquer parte do cdigo (o SFR so consideradas variveis globais), sem declar-la antes. A regioStros funo
especial definido em um arquivo externo e includas no compilador (file. def.) Este arquivo contm todos os SFR de programao de
microcontroladores PIC.

TRISB = 0; / / Todos os pinos do PORTB esto configurados como sali portodas


PORTB = 0; / / Todos os pinos do PORTB so definidos como 0

ACESSO INDIVIDUAL PARA BITS


O compilador mikroC para PIC PRO permite que voc acesse os bits individuais de variveis de 8 bits por nome ou posio em bytes:

INTCON.B0 = 0;

/ / Definir a 0 Registo INTCON bit 0

ADCON0.F5 = 1;

/ / Definir a 1 o bit 5 do Registo ADCON0

INTCON.GIE = 0; / / Definir a 0 o bit de global de interrupo (GIE)

Para acessar um bit individual pode ser usado. "FX" e ". BX" (X um nmero inteiro entre 0 e 7 repressente-se a posio do bit).

TIPO SBIT
Se voc declarar uma varivel que corresponde a um pouco de SFR, utilize o tipo SBIT. Uma varivel do tipo SBIT se comporta como um
ponteiro e deve ser declarada como uma varivel global:

SBIT Botn_PARADA parat PORTA.B7; / / Definida Botn_PARADA


...
vazio main () {
...
}

/ / As alteraes afetam PORTA.B7 Botn_PARADA


/ / As alteraes afetam Botn_PARADA PORTA.B7

Neste exemplo, o Botn_PARADA uma varivel declarada pelo utilizador, enquanto PORTA.B7 (PORTA bit 7) ser automaticamente
reconhecido pelo compilador.

BIT RATE
MikroC PRO compilador para PIC oferece um pouco de tipo de dados que pode ser usado para dezembrovariveis lrare. No pode ser
utilizado em listas de discusso, indicadores e valores de retorno de funes. Alm disso, possvel declarar e inicializar uma taxa de
bits varivel na mesma linha. O compilador determina a pouco em um dos registros disponvel para armazenar as variveis.

bit bf;
bit * Ptr;

/ / Taxa de bits varivel vlido


/ Bit invlido / varibales.
/ / No h indicaes de uma taxa de bits varivel

bit bg = 0; / / Erro; instruo de inicializao no peRMIT


bit bg;
bg = 0;

/ / Declarao e inicializao vlida

Inserir cdigo ASM EM C


s vezes o processo de escrever um programa C exige que as partes escritas em cdigo de montagem. Isto permite-lhe executar as partes
complicadas do programa de uma maneira bem definidas ao longo de um perodo de tempo exato. Por exemplo, quando voc precisa que
pulsos muito curtos (alguns microssegundos) aparece regularmente em um pino do microcontrolador. Nesses casos, a soluo mais
simples seria a utilizao decdigo assembly no ar o programa que controla a durao do pulso.

Um ou mais instrues de montageme esto inseridas no programa escrito em C, usando o comando asm:

asm

{
instrues de montagem
...
}

Cdigos escritos em assembler pode usar constantes e variveis previamente definidas em C. Claro que, como o programa inteiramente
escrito em C, suas regras se aplicam a declarar essas constantes e variveis.

unsigned char mximo = 100; / / Declare as variveis: mxima = 100


asm
{/ / Incio do cdigo de montagem
Movf mximo, W

/ W / = Mximo = 100

...
}/ / Fim do cdigo assembler

INTERRUPO DE FUNO
Uma interrupo interrompe a execuo normal de um programa para executar operaes especficas. Uma lista de frases deve executar
ester escrito em uma determinada funo chamada interrupt (). A sintaxe de uma interrupo no mikroC lembra o seguinte:

vazio interrupt () {
cnt + +;

/ / Quando uma ruptura


/ / A CNT incrementado por 1

PIR1.TMR1IF = 0; / / Definir a 0 o bit TMR1IF


}

Ao contrrio das funes padro, no necessrio declarar o prottipo da funo interrupt (). Alm disso, desde a implementao desta
funo no faz parte da execuo do programa regular, no debe chamada em qualquer parte do programa (execute automaticamente,
dependendo das condies que o utilizador tenha definido no programa). No captulo seguinte, iremos dar uma explicao clara da
execuo e definio de sub-rotinas switcho.

Estantes
Voc j deve ter notado que nos exemplos anteriores, usamos algumas funes como "delay_ms ',' LCD_out ',' LCD_cmd 'etc Essas funes
so definidas nas bibliotecas contidas no compilador mikroC.

Uma biblioteca representa um cdigo compilado, previamente escrito em mikroC, que contm um conjunto de variveis e funes. Cada
biblioteca tem uma finalidade especfica. Por exemplo, a biblioteca contm funes LCD tela LCD, enquanto qUE C_math fornece
algumas funes matemticas.
Antes de usar qualquer um deles no programa, voc deve informar o compilador para marc-los na lista de bibliotecas do compilador
existente. Se o compilador encontra uma outra funoprograma internacional de classe durante a execuo, ele primeiro vai buscar a sua
declarao na biblioteca marcada.

Alm da librEras existente, voc pode criar bibliotecas e, em seguida, usar o programa. O procedimento para a criao de bibliotecas
so descritos em detalhes na Ajuda (Ajuda) Do compilador.
compilador MikroC inclui trs tipos de bibliotecas:
- Bibliotecas ANSI C etandard:
Livrar
Ctype Biblioteca C ANSI
Biblioteca matemtica ANSI C
ANSI C stdlib Biblioteca
Biblioteca C ANSI String

Descrio
Usado principalmente para testes ou para converter dados
Usado para a matemtica de ponto flutuante
biblioteca de funes Contm Standard
Utilizado para realizar operaes de corda e de processamento da memria

- Diversos bibliotecas:
Livrar
Biblioteca de Button
Converso da biblioteca
Sprint Biblioteca
Imprimir Biblioteca
Time Library
Trigonometria Biblioteca
Setjmp Biblioteca

Descrio
Usada para desenvolver projetos
Usado para ctipo de dados ONVERSO
Usado para formatar os dados com facilidade
Usado para formatar os dados e imprimir
Utilizados para os clculos de tempo (UNIX formato de hora)
Usouada para a execuo de funes trigonomtricas bsicas
Usado para o programa de saltos

- Bibliotecas de hardware:
Livrar
ADC Biblioteca
CAN Biblioteca
CANSPI Biblioteca
Compact Flash Biblioteca
EEPROM Biblioteca
EthernetPIC18FxxJ60 Biblioteca
Flash Memory Biblioteca
LCD Grfico Biblioteca
I2C Biblioteca

Descrio
Usado para operar o A / D
UEsta folha para as operaes com o mdulo pode
Usado para operaes com o mdulo CAN externa (MCP2515 e MCP2510)
Usado para operaes com cartes de memria Compact Flash
UtiLizada para as operaes com a memria EEPROM construda
Usada para as operaes internas com mdulo de Ethernet
Usado para operaes com memria flash em
Usado para operaes com o mdulo LCD grfico com resoluo de 128x64
Usado para operaes com o mdulo de comunicao serial I2C incorporada

Teclado Biblioteca
Lcd Biblioteca
Manchester Biblioteca Cdigo
Biblioteca Multi Media Card
Uma Biblioteca Wire
Porto Biblioteca Expander
Biblioteca PS / 2
PWM Biblioteca
Biblioteca RS-485
Software Library I2C
Software Biblioteca SPI
Software Library UART
Som Biblioteca
SPI Biblioteca
Biblioteca SPI Ethernet
Biblioteca SPI LCD Grfico
L SPICD Biblioteca
Lcd8 Biblioteca SPI
Biblioteca SPI Grfica T6963C LCD
Li UARTbrary
USB HID Biblioteca

Usado para operaes com o teclado (teclas de 4x4 presso)


Usado para operaes com o LCD (2x16 caracteres)
Usado para comunicao usando o cdigo Manchester
Usado para operaes com cartes multitimedia flash MMC
Usada para as operaes com os circuitos de comunicao serial usando Um Fio
Usado para operaes com o extensor de porta MCP23S17
Usado para operaeses com o padro de teclado PS / 2
Usada para as operaes internas com mdulo de PWM
Usada para operaes em mdulos utilizando comunicao serial RS485
Usado para simularr comunicao I2C com software
Usado para simular a comunicao com o software SPI
Usado para simular o software de comunicao UART
Usado para gerar sinais de udio
Usado para operaes com built-in mdulo SPI
SPI usado para se comunicar com o mdulo Ethernet (ENC28J60)
Usado para o 4-bit de comunicao SPI com o LCD grfico
Usado para o 4-bit de comunicao SPI com o LCD (2x16 caracteres)
Usado para se comunicar de 8 bits SPI LCD
IPS utilizado para comunicao com o LCD grfico
Usado para operaes com built-in mdulo UART
Usado para operaes com built-in mdulo USB

2,11 PROGRAMAO PARA O USO PIC PIC


mikroC PRO
Nas sees anteriores apresentamos a linguagem mikroC, especialmente concebidos para programar o PIC. Agora, ns analisamos
suficiente para comear a programao, hora de apresentar o software utilizado para desenvolver e editar projeto. Este software
chamado Bairro desdesenvolvimento integrado (Integrated Developement Environment - IDE) e inclui todas as ferramentas necessrias
para desenvolver projetos (editor, debugger, etc.) Por extenso, o IDE muitas vezes chamado de compilador. Esta seco ir lhe
ensinar o bsico que precisa saber para comear a desenvolver o seu primeiro projecto em mikroC IDE usando mikroC PRO compilador
para PIC.
Alm de todas as caractersticas comuns de qualquer IDE, mikroC PRO para PIC contm a arquitetura da informao do
microcontroladores PIC (registos, mdulos de memria, o funcionamento de circuitos privados, etc) para compilar e gerar um arquivo
legvel por um microcontrolador PIC. Tambm inclui ferramentas especficas para a programao de microcontroladores PIC.
O processo de criao e execuo de um projeto contm os seguintes passos:

1. Criar um projeto (nome do projeto, configurao do projeto, as dependncias entre os arquiv


2. Edio de um programa

3. Compile o programa e correo de erro

4. Debug (executado programa passo a passo para garantir que as operaes desejadas so
realizados).

5. Programao de um microcontrolador (carregar o arquivo. Hex gerado pelo compilador para


microcontrolador usando o programador PICFlash.)

PIC mikroC PRO PARA INSTALAR


Formiga que nada, voc deve instalar o compilador (com IDE) no PC. A instalao da mikroC para PIC PRO semelhante para a
instalao de qualquer programa no Windows. Todo o procedimento realizado atravs da wizards (assistentes de instalao!ion)

Basta seguir as instrues e clique em Next, OK, Next, Next ... Em geral, o procedimento o mesmo fenmeno a ltima opo, "voc
quer instalar v7.11 PICFlash programador?". Qual esse software? Que falaremos mais tarde. Por enquanto, s sei que um software
autnomo usado para carregar o programa no microcontrolador.
V-sez Mais: Em seguida, em OK, Next, Next ...

Quando a instalao estiver completa PICFlash, o sistema operacional ir pedir para instalarsoftware similar ar, o software para
programar um grupo especial de microcontroladores PIC operando em modo de baixa energia (3,3 V). Ignorar esta etapa ...
A etapa final - a instalao do driver (driver)!

Clique em Sim.

Um driver um programa que permite ao sistema operacional para se comunicar com um perifrico. Neste caso, este dispositivo o
programaqueimador (hardware) de desenvolvimento de sistemas.

O driver para instalar depende do seu sistema operacional. Selecione o driver para o OS (sistema operacional) usada (abrindo a pasta) e
iniciar a instalao. Mais uma vez, seguida, em OK, Next, Next ... Bem, tudo est instalado para iniciar a programao!

CARACTERSTICAS PRINCIPAIS PARA PIC mikroC PRO


Quando voc iniciar o IDE mikroC PRO compilador para PIC pela primeira vez, uma janela como seguinte forma:

Infelizmente, uma descrio detalhada de todas as opes disponveis nesta IDE precisoria de longo prazo. Ento, ns descrevemos
apenas os mais importantes mikroC PRO compilador para PIC. Enfim, para mais informaes clique no boto Ajuda (Help) [F1].

Gerenciar Projetos
Antes de comear a escrever o cdigo, vocSeja criar um projeto. Um programa escrito em compilador mikroC para PIC PRO um arquivo
de origem no autnomo, mas parte de um projeto que inclui um cdigo hexadecimal, o cdigo assembler, cabealho e outros
arquivos. Algumas delas exigem po construir o programa, enquanto outros so criados durante o processo de compilao. Um arquivo com
extenso . Mcppi permite que voc abra qualquer um destes projetos.
Para criar um projeto, basta selecionar a opo Project / NewE Wizard aparecer automaticamente. E depois? Siga as instrues ...
Gerente de Projeto (Administrador de Projetos)
Uma vez que o projeto criado, voc pode gerenciar todos os arquivos que ele contm, usando a janela do Project Manager. Basta
pressionar Boto direito do mouse em uma pasta e selecione a opo que voc precisa para seu projeto.

Project Settings (Configuraes do projeto)


Ao compilar um projeto, o compilador gera o arquivo. Hex para ser carregado no microcontrolador. Esses arquivos sero diferentes,
dependendo do tipo de microcontrolador e os efeitos da compilao. Para esta razo de alguns ajustes de projetos usando a janela
Configuraes do projeto.

Device (dispositivo):
Ao selecionar o tipo de microcontrolador para uso permite que o compilador para extrair o arquivo de definio (file. Def) associados. O
arquivo de definio contm um microcontrolador informaes especficas do seu SFR registros, sua direoes das variveis de
memria e programao especfica para esse tipo de microcontrolador. necessrio para criar Hex a. compatvel.

Oscillator (Oscilador)
Voc deve especificar a velocidade de funcionamento do microcontrolador. claro que Eu valor depende do oscilador usado. O
compilador precisa compilar as rotinas, as quais exigem informaes de tempo (por exemplo, o delay_ms funo). Mais tarde, o
desenvolvedor precisar dessa informao tambm. S a velocidade de operaoe configurado de modo a permitir o funcionamento do
microcontrolador oscilador interno a uma freqncia selecionada.

Construir tipo de depurador /:

Todo o processo de elaborao (construo) consiste em anlise (parsing), compilao de ligao (link) garquivos de Janeiro. hex. O tipo
de compilao permite que voc defina o modo de compilao. Dependendo do modo selecionado, carregar arquivos diferentes gerados
no microcontrolador.
Lanamento: Ao escolher esta opo, o compilador no pode afetar execuo de programa aps a compilao mais. O programa
carregado no microcontrolador no modificada de forma alguma.
depurao CID: Ao escolher esta opo, aps a concluso do processo de compilao e carrega o programa na memriapara o
microcontrolador, o compilador ligado ao microcontrolador atravs do cabo USB e do programador, e ainda pode afetar seu
desempenho. O arquivo. Hex gerado contm dados adicionais que permitem o funcionamento dos dEpure. Uma ferramenta chamada
mikroICD (Circuit Debugger - In Circuit Debugger) para executar o programa passo a passo e fornecer acesso ao contedo atual de todos
os registros de um microcontrolador real.
O simulador no us-los dispositivos reais para simular o funcionamento do microcontrolador, assim, algumas operaes no pode ser
reproduzido (por exemplo, interrupo). Enfim, mais rpido para depurar um programa usando um simulador. Alm disso, no requiere
qualquer dispositivo de destino.
Observe que voc pode alterar essas configuraes a qualquer momento durante a edio do programa. No se esquea de recompilar e
reiniciar o dispositivo depois de mudar uma configurao.
GESTO BIBLIOTECA (editor de bibliotecas)
O compilador deve conhecer todas as dependncias do mikroC arquivo de origem para compilar corretamente. Por exemplo, se as
bibliotecas fazem parte de seu projeto, voc deve especificar quais deles so utilizados.
A bibliotecas contm um grande nmero de funes prontas para uso. MikroC livrarias oferecem muitas facilidades para escrever
programas para microcontroladores PIC. Abra a janela Library ManagerE marca que voc deseja usar o proprograma. A marcao de uma
biblioteca automaticamente adicionado ao projeto e ligados durante o processo de compilao. Assim, h necessidade de incluir as
bibliotecas manualmente no seu cdigo-fonte arquivos usando a diretiva de pr-processamento # Include.

Por exemplo, se seu programa usa um LCD no preciso escrever novas funes e que a seleo da biblioteca de LCD, voc pode usar
pronto para usar funes da biblioteca LCD (Lcd_Cmd, LCD_Init ...) em seu programa. Se esta biblioteca no est seleccionado na janela

do Gerenciador de Biblioteca, cada vez que voc tentar usar uma funo de biblioteca LCD, COMPILador ir reportar um erro. Uma
descrio de cada biblioteca est disponvel clicando no boto direito do mouse sobre seu nome e selecione Ajuda.

E EDIO DE PROGRAMAS DE ELABORAO


Editor de Cdigo (Code Editor)
O processo de programa de edio des devem ser realizadas dentro da janela principal do IDE chamada Code Editor. Ao escrever o
programa no se esquea dos comentrios. Os comentrios so muito importantes para refinar e melhorar o programa. Alm disso,
embora o compilador no tem as respostasrestries de formatao, voc deve sempre seguir as mesmas regras de edio (como nos
exemplos fornecidos neste livro.) Como no h limitaes de tamanho, no hesite em usar o espao em branco para tornar seu cdigo
mais legvel.

Ao escrever um programa, no esperem para terminar de escrever o programa para compilar. Compilar o cdigo regularmente com o
propBear muito mais corrigir os erros de sintaxe. Tambm voc pode compilar seu programa a cada vez que voc completar a elaborao
de uma nova funo e provar o seu desempenho ao utilizar o modo de depurao (ver prxima seo). Assim, mais fcil para corrigir os
erros do programa para no "tomar um caminho errado" para escrever seu programa. Caso contrrio, voc ter que editar o programa
inteiro.
Explorador de cdigo (SCANNER CODE)
Cdigo do Windows Explorer permite que voc localize funes e procedimentos no mbito dos programas de maior dimenso. Por
exemplo, se voc olhar para uma funo utilizada no programa, basta clicar duas vezes sobre seu nome na janela, eo cursor ser
automaticamente colocado na linha adequada en o programa.
ELABORAO e corrigir erros
Para compilar o cdigo, clique no menu a opo Build Project. Na verdade, todo o projeto compilado, e se a compilao for bem
sucedida, vai gerar arquivos de sada (asm. hexagonal, etc.) Uma compilao foi executada com sucesso sem nenhum erro encontrado.
Durante o processo de compilao gera muitas mensagens que so exibidas na janela de mensagens. Essas mensagens consistem em
advertncia, informao e errarorar. Cada erro encontrado est associado com a sua linha de programa e descrio.
Como um erro no cdigo pode gerar muitos mais erros, simplesmente tentar corrigir o erro em primeiro lugar na lista e recompilar seu
programa. Em outras palavrasVoc deve corrigir o erro por um.

No exemplo acima, h dois erros e uma advertncia: falta um puE dois pontos e uma declarao de varivel O aviso diz que falta o tipo
de valor de retorno de funo principal.
A compilao permite que voc corrija o programa, resolvendo todos os erros do mikroC. Quando todos os erros so solueses, o
programa est pronto para ser carregado no microcontrolador. De qualquer forma, a sua tarefa ainda no terminou, porque eu ainda no
sei se o programa funciona como esperado ou no.

Programa de depurao
A depurao um passo importante e que lhe permite testar o programa depois de uma compilao bem-sucedida feita, ou corrigir os
erros descobertos durante a execuo do programa. Como vimos, existem duas maneiras para depurar: um depurador de software que
simula o funcionamento do microfonerocontrolador (modo padro) e depurador hardware (mikroICD), que l diretamente o contedo da
memria do microcontrolador. O processo de purificao o mesmo independentemente do modo escolhido. Se voc escolher a opo
depurao CIDVoc deve carregar o programa para o microcontrolador antes de depurao.
Para iniciar a depurao, clique na opo depurador Incio Menu Executar. O editor ser ligeiramente modificado o cdigo
automaticamente e uma janela chamada Observar valores.O princpio de purificao baseia-se na execuo do programa passo a passo e
monitorar o contedo dos registros e os valores das variveis. Assim, voc pode verificar o resultado de um clculo para ver se algo
inesperado aconteceu. Para executarr o programa passo a passo, voc pode facilmente identificar os problemas.
Durante a depurao do programa sero modificados, ento voc deve sempre recompilar o programa aps cada correo, e reiniciar o
depurador para verificar o que foi modificado.
DEPURADOR COMANDOS
Existem vrios comandos disponveis para depurar o cdigo:

Step Into - Executa uma nica instruo. Quando a instruo uma chamada a uma rotina, o
depurador ir saltar para a rotina e corre ir parar depoisr a primeira instruo dentro da
rotina.

Step Over - Executa uma nica instruo. Quando a instruo uma chamada a uma rotina, o

depurador no ir saltar para a rotina, mas que ser executado em toda a rotina. O depurador
pra na primera a instruo aps a chamada para a rotina.

Run To Cursor - O programa executado para a linha onde o cursor est localizado.

Saia - Outras instrues so executadas dentro da rotina. O depurador pra a direita fora de da
rotina.

Pontos de interrupo (breakpoints)


Breakpoints tornar o processo de depurao de programas de uma forma mais eficiente, uma vez que permitem executar o programa a
toda a velocidade e parar automaticamente em uma linha especfica (ponto de ruptura). Isso muito til, permitindo que voc verifique
apenas as partes essenciais do programa e no desperdiar tempo probEu ando ao redor da linha do programa por linha. Para adicionar
ou remover um breakpoint basta clicar sobre a linha apropriada no lado esquerdo do editor de cdigo, ou pressione [F5]. Uma pequena
janela chamada Breakpoints mostra onde esto os pontos ruptura. Observe que as linhas designadas como pontos de interrupo esto
marcados em vermelho.
A linha est actualmente em execuo est marcada em azul. Voc pode ler o contedo dos registos e variveis selecionadas na janela
Watch em Valores cuAlugue agora. Para executar o programa a partir da linha em que o cursor para o ponto de interrupo, use a opo
Executar / Pausar Debugger.

JANELA DE VALORES DO RELGIO


O depurador software e hardware tm a mesma funo de monitorar o estado dos ficheiros durante a execuo do programa. A diferena
que o software depurador simula a execuo de proprograma em um PC, enquanto o depurador CID (hardware depurador) usa um
microcontrolador real. Qualquer alterao no estado lgico dos pinos mostrado no registo (porta) adequados. Valores como a janela
Watch permite-lhe controlar o estado de tregistros ll, pode facilmente dizer se um pino zero ou um. A ltima alterao est marcado
em vermelho na janela de inspeo Valores. Isto permite-lhe encontrar a mudana na lista de variveis e registros durante o processo de
tratamento de esgotoation.

Para visualizar esta janela voc deve selecionar a opo Exibir / Windows Debug Valores / Watch. Ento voc podefaa uma lista de
registros / variveis que voc deseja monitorar e como exibi-los.
CRONMETRO (TIMER)
Se voc quiser saber quanto tempo leva para um microcontrolador para realizar parte do programa, selecione Executar / Ver
cronmetro. ApareceEra uma janela como mostrado na figura direita. Como que um timer? Isso uma brisa ... O tempo que leva um
comando (entrar, passar por cima, executar / pausar, etc) Para executar o depurador automaticamente medidos e exibidos na
Cronmetro janela. Por exemplo, podemos medir o tempo para executar um programa, tempo suficiente para executar o ltimo passo e
assim por diante.

PROGRAMAO DO MICROCONTROLADOR
Se voc tiver corrigiu todos os erros em seu cdigo e acho o programa est pronto para uso, o prximo passo carregado no
microcontrolador. programador PICFlash usado para esta finalidade. D uma ferramentaesigned para agendar todos os tipos de
microcontroladores PIC. constituda de duas partes:

A parte de hardware usado para inserir um cdigo hexadecimal (o programa a ser carregado
no microcontrolador) e para programar o microcontrolador atravs de nveis especficos de
voltagem. Durante o processo de programao, um novo programa gravado na memria

flash do microcontrolador, enquanto o programa anterior ser automaticamente eliminado.

O software se encarrega de enviar o programa (. hex) para o hardware do controlador atravs

de um cabo USB. Uma interface de usurio do software acessvel a partir de IDE quando voc
clicar no menu Ferramentas opo mE_Programmer ou pressione [F11]. Por isso, possible

modificar algumas configuraes do programador e controlar o funcionamento do hardware


(Load, Escrever, Check ...).

O microcontrolador pode ser reprogramada quantas vezes forem necessrias.

COMPILER FERRAMENTAS
MikroC PRO compilador para PIC fornece ferramentas que simplificam o processo de escrever o programa. Todos Estas ferramentas esto
localizadas no menu Ferramentas. Na prxima seo ns damos uma breve descrio de todos eles.
USART Terminal
USART Terminal um substituto para o padro do Windows Hyper Terminal. Pode ser usado para controlar sobre o funcionamento do
microcontrolador usando a comunicao USART. Estes microcontroladores so incorporados em um dispositivo destino ligado ao conector
RS232 e um PC atravs de um cabo serial.
USART janela de terminal opes para configurar a comunicao serial e exibir os dados enviados / recebidos.

EDITOR EEPROM
Ao selecionar EEPROM opo Editor no menu Ferramentas, ser exibida uma janela como mostrado na figura abaixo. Isto como o
EEPROM do microcontrolador. Se voc quiser alterar o seu contedo depois de carregar o programa no microcontrolador, que a
abordagem certa. O novo contedo um tipo especfico de dados (char, int ou double), primeiro voc deve selecion-lo, digite o valor no
campo Edit Value e clique em Editar. Em seguida, clique no boto Salvar para salv-lo como uma dDOCUMENTO com. hex. Se usar o
Project est ativo na memria EEPROM, os dados so automaticamente carregados no microcontrolador durante a programao.

ASCII janela do grfico


Se voc precisa de uma representao numrica de um caractere ASCII, tabela ASCII selecione o menu Ferramentas. Uma mesa, como
mostrado na figura abaixo. Voc provavelmente sabe que cada tecla associada a um cdigo (cdigo ASCII). Como voc pode ver, os
personagens que representam os nmeros tm valores diferentes. Por este motivo, a instruo de programa para exibir o nmero 7 en um
LCD no exibir este nmero, mas o equivalente ao BEL comunicado. Se voc enviar o mesmo nmero que um personagem para um LCD,
voc obtm o resultado esperado - 7. Portanto, se voc quiser exibir um nmero sem fazer uma caracarter adequado, necessrio
adicionar 48 a cada nmero de dgitos que o nmero a ser exibido.

EDITOR DE SETE SEGMENTOS


Um editor de sete segmentos permite que voc facilmente determinar o nmero de colocar em uma porta de sada, a fim de mostrar o
smbolo desejado. Naturalmente, entende-se que os pinos da porta deve estar conectado segmentos a exibir corretamente. Basta
colocar o cursor em qualquer segmento do display e clique sobre ele. Isto ir exibir o nmero para entrar imediatamente no programa.

Caractere personalizado LCD (personagem LCD Definido pelo usurio)


Alm dos personagens padro, o microcontrolador tambm pode ver os personagens criados pelo proprogramador. Quando voc seleciona
o costume personagem ferramenta LCD ir evitar um trabalho pesado de criar funes para enviar um cdigo apropriado para uma
exibio. Para criar um smbolo, clique nas imagens pequenas sobre o carter LCD personalizado, luevai selecionar a posio ea linha e

clique no boto Gerar. O cdigo apropriado exibido em outra janela. No h necessidade de pressionar mais. Copiar para a rea de
transferncia (copiar para o clipboard) - Colar (colar) ...

BITMAP GERADOR DE LCD grfico


O gerador de bitmap para LCD grfico uma ferramenta vital se voc usar o programa que escreve o LCD (GLCD). Esta ferramenta
permite que voc exibir um bitmap facilmente. Selecione Ferramentas / GLCD Bitmap janela Editor parece adequado. Para usar,
selecione o tipo de exibio de usar e carregar um mapa bits. O bitmap deve ser monocromtico e ter a resoluo apropriada da tela
(128 x 64 pixels, neste exemplo). O procedimento o mesmo que no exemplo acima: Copiar para rea de transferncia ...

Um cdigo gerado utilizando ferramentas para monitorar e LCD exibe contendo funes de biblioteca GLCD LCD. Se usado no programa,
no esquea de marcar a caixa prxima a esta biblioteca na janela Gerenciador de bibliotecas. Assim, o compilador ir reconhecer essas
funes corretamente.
captulo anterior | tabela de contedos | prximo captulo

Ferramentas de desenvolvimento

EasyPIC6 Desenvolvimento de Sistemas


A EasyPIC6 um completo sistema de desenvolvimento de fou microcontroladores PIC. Ele vem com o microcontrolador PIC16F887. O
sistema inclui um programador USB 2.0 com mikroICD Muitos mdulos perifricos e tal como COG, o expansor da porta, MENU e 4x4
teclados etc [mais informaes]

Destaque Compiladores
mikroC para PIC PRO


mikroC para PIC PRO Fornece todo o poder e flexibilidade do padro ANSI C. Ele conta com a mais avanada IDE no mercado. examp
diversas prticasA documentao completa e vai permitir um arranque rpido na programao de microcontroladores PIC . [mais
informaes]

Links relacionados:
Produtos
Notcias
Fruns

Distribuidores

Sobre MikroElektronika

Informaes Legais e Poltica de Privacidade


Arquivo de Produtos
Fale Conosco

Copyright 1998-2010. Mikroelektronika. Todos os direitos reservados. Todo o comrcio e / ou servios aqui mencionados so marcas de propriedade de seus
respectivos proprietrios.