Escolar Documentos
Profissional Documentos
Cultura Documentos
E
LINGUAGEM C
Pgina 1
Sumrio
LISTA DE FIGURAS ........................................................................................................................................................... 4
LISTA DE TABELAS ........................................................................................................................................................... 7
Captulo 1 Introduo ...................................................................................................................................................... 8
1.1
1.2
1.3
1.3.1
1.3.2
MEMRIAS .................................................................................................................................................. 15
1.3.3
REGISTRADORES ......................................................................................................................................... 17
1.3.4
1.3.5
1.3.6
BARRAMENTOS ........................................................................................................................................... 19
1.3.7
INTERRUPES ........................................................................................................................................... 20
1.4
MICROCONTROLADORES ................................................................................................................................ 21
1.5
1.6
1.7
1.7.1
1.7.2
1.7.3
1.8
O BIT ................................................................................................................................................................ 28
1.9
O BYTE ............................................................................................................................................................. 28
1.10
1.10.1
1.10.2
PORTA OR ............................................................................................................................................... 30
1.10.3
1.10.4
PIC18F4550 e PIC32MX775F256L.................................................................................................................... 34
PIC18F4550 ............................................................................................................................................. 34
KIT DE DESENVOLVIMENTO com PIC18F4550 ................................................................................................. 49
2.2.1.
2.2.2.
CHAVES/TECLAS ...................................................................................................................................... 50
2.2.3.
2.2.4.
DISPLAYS ................................................................................................................................................. 53
Pgina 2
2.2.5.
2.2.6.
2.3
3.2
3.2.1.
3.2.2.
3.3
3.4
3.5
3.6
3.7
4.2
PRINCPIOS DE PROGRAMAO...................................................................................................................... 95
4.2.1.
4.2.2.
FLUXOGRAMAS ....................................................................................................................................... 96
4.2.3.
4.3
4.3.1.
4.4.
4.5
4.5.1
4.5.2
4.5.3
4.5.4
4.5.5
4.5.6
4.5.7
4.5.8
4.6
Pgina 3
LISTA DE FIGURAS
Pgina 5
Pgina 6
LISTA DE TABELAS
Pgina 7
Captulo 1 Introduo
O objetivo principal deste captulo familiarizar o leitor com alguns conceitos e nomenclaturas
existentes no mundo dos microprocessadores e microcontroladores. Alm disso, o captulo ir abordar um
pouco da histria da evoluo tecnolgica que culminou no mundo moderno que vivemos hoje.
Durante toda sua histria, o homem buscou desenvolver meios para facilitar a realizao de
atividades complicadas e repetitivas. Atualmente, vivemos a era da automao total em que boa parte das
atividades, sem cunho criativo, so ou sero realizadas por mquinas (robs), desde complexas
manipulaes cirrgicas at mquinas incumbidas da retirada do lixo. Por exemplo, hoje em dia comum
entrarmos em um banheiro de
Shopping
Center em que a luz acende sozinha, a torneira ativa
automaticamente e at mesmo para acionar a descarga preciso apenas que o usurio se afaste do
sanitrio. Na indstria moderna, a interveno do homem nos processos vem sendo cada vez menor,
restringindo-se apenas ao monitoramento de alarmes e eventuais falhas do sistema. Carros que falam ou
que obedecem a comandos de voz; avies que voam sozinhos; sondas espaciais no tripuladas que
pousam em Marte, enfim so inmeros os exemplos em que a automao das mquinas est presente nos
dias atuais.
Para entendermos como chegamos a este momento, vamos voltar um pouco na histria. Com o
crescimento do conhecimento matemtico com o passar dos anos, e seu grande uso nas atividades
comerciais, um dos maiores problemas encontrados passou a ser a realizao de clculos mais complexos,
o que levou criao de dispositivos MECNICOS para auxiliar estas tarefas. H aproximadamente 5.500
anos atrs, provavelmente na Mesopotmia, surgiu o primeiro desses dispositivos, o baco (Figura 1.1). Ele
permitia fazer operaes de adio, subtrao, multiplicao e diviso. O mais intrigante que esse
dispositivo de construo to simples criaria um conceito de mquina que muitos sculos depois seria a
base para o surgimento de sistemas extremamente complexos conhecidos como MICROPROCESSADORES.
Calculadora de Pascal e a Mquina Diferencial de Babbage (Figura 1.2) que revolucionaram seu tempo
e ajudaram o homem a dar passos mais largos em sua evoluo.
Pgina 8
Em 1969 uma equipe de engenheiros japoneses da empresa BUSICOM chegou aos EUA com um
pedido de circuitos integrados para calculadoras que deveriam ser desenvolvidos de acordo com as
necessidades de seus produtos. O pedido foi enviado para a Intel que encarregou Marcian Hoff para
execuo deste projeto. Tendo Marcian j trabalhado com o desenvolvimento de um computador
(computador vlvula), o PDP8 (ver Figura 1.6), ele sugeriu uma ideia fundamentalmente diferente do
pedido da BUSICOM. A sua ideia presumia que o funcionamento do circuito integrado seria baseado em um
programa armazenado nele ao invs dos projetos engessados da poca, em que cada circuito integrado
possua uma e somente uma funcionalidade. Isso significaria que a configurao dos produtos da empresa
japonesa ficaria mais simples, tendo em vista que um nico circuito integrado poderia ser utilizado em mais
de um produto, mudando-se apenas a programao gravada nos mesmos. Por outro lado, esta nova
filosofia de projeto iria requerer mais memria do sistema que o projeto proposto pelos engenheiros
japoneses, o que na poca era algo ainda de valor elevado.
Conversor A/D
Pgina 10
Pgina 11
prprios projetos. Chuck Peddle deixou a Motorola para entrar para a MOS Technology e continuar
trabalhando intensivamente no desenvolvimento dos microprocessadores.
Em 1975, na exposio WESCON nos Estados Unidos, aconteceu um episdio na histria dos
microprocessadores. A MOS Technology anunciou que iria lanar no mercado os microprocessadores 6501
e 6502 ao preo de US$ 25 cada e que poderia atender de imediato todas as encomendas. Isto pareceu to
sensacional que muitos pensaram tratar-se de uma espcie de fraude, considerando que os competidores
vendiam os processadores 8080 e 6800 por aproximadamente US$ 179,00 cada. Para responder a este
competidor, tanto a Intel quanto a Motorola baixaram seus preos para US$ 69,95 logo no primeiro dia da
exposio. Rapidamente a Motorola, antiga empresa onde Peddle trabalhava, colocou uma ao em
tribunal contra a MOS Technology e contra o prprio Chuck Peddle por violao dos direitos autorais por
copiarem o processador 6800. Com isso, a MOS Technology deixou de fabricar o 6501, mas continuou com
o 6502. O 6502 era um microprocessador de 8-bits com 56 instrues e uma capacidade de endereamento
de 64kBytes de memria. Devido ao seu baixo custo, os processadores 6502 tornaram-se muito popular,
sendo utilizado em computadores como o KIM-1, Apple I, Apple II, Atari, Comodore, Acorn, Oric, Galeb,
Orao, Ultra e muitos outros. Logo apareceram vrias outras empresas interessadas em fabricar o 6502
(Rockwell, Sznertek, GTE, NCR, Ricoh e Comodore) que, no auge da sua prosperidade, chegou a vender
microprocessadores razo de 15 milhes de processadores por ano.
Contudo, os outros no baixaram os braos. Frederico Faggin deixou a Intel e fundou a Zilog Inc.
Em 1976, a Zilog anunciou o Z80. Durante a concepo deste microprocessador, Faggin tomou uma
deciso crtica. Sabendo que existia uma enorme quantidade de programas j desenvolvidos para o
microprocessador 8080, Faggin concluiu que muitos permaneceriam fiis a este microprocessador devido
s grandes despesas que representaria a troca do processador. Assim, ele decidiu que o novo
microprocessador deveria ser
COMPATVEL (nasceu a ideia de compatibilidade) com o 8080, ou seja,
deveria ser capaz de executar todos os programas j escritos para o 8080. Alm disto, outras
caractersticas adicionais foram incorporadas ao CHIP, de tal modo que o Z80 se tornou um
microprocessador muito potente em seu tempo. Ele podia enderear diretamente 64kBytes de memria,
tinha 176 instrues para programao, um grande nmero de registros, uma opo para refreshing de
memria RAM dinmica, maior velocidade de funcionamento, etc. O Z80 tornou-se um grande sucesso e
todos que utilizavam o processador 8080 migraram para o Z80. Pode-se dizer que o Z80 se constituiu como
o microprocessador de 8-bits de maior sucesso em seu tempo. Alm da Zilog surgiram outros novos
fabricantes como, por exemplo, Mostek, NEC, SHARP e SGS. O Z80 foi o corao de muitos computadores
como o Spectrum, Partner, TRS703, Z-3 e Galaxy, que fizeram muito sucesso devido sua grande utilizao.
Em 1976, a Intel lanou uma verso melhorada do microprocessador de 8-bits, chamado de 8085.
Contudo, a superioridade do Z80 fez com que a Intel desistisse do projeto. Apesar do surgimento, na poca,
de outros microprocessadores no mercado (6809, 2650, SC/MP etc.), o cenrio da poca estava bem
definido. J no existiam grandes melhorias a serem introduzidas pelos fabricantes que justificassem o
lanamento de um novo microprocessador. Desta forma, o 6502 e o Z80, acompanhados pelo 6800,
mantiveram-se como os mais representativos microprocessadores de 8-bits do perodo. Restou Intel
trabalhar no lanamento do primeiro microprocessador de 16-bits o 8088 que fez muito sucesso e deu
origem a todos os processadores atuais. Ele foi seguido pelo 80186, depois pelo 80286, que evoluiu para o
80386 (popularmente conhecido como 386), chegando ao 80486 (popularmente conhecido como 486).
Depois surgiu o Pentium que evoluiu at o Pentium 4. Nesse momento, a tecnologia se deparou com uma
barreira na evoluo dos microprocessadores que at ento era baseada, quase que exclusivamente, no
aumento da velocidade de processamento. Em seguida, a evoluo dos processadores atrelou-se
evoluo da sua arquitetura interna (forma como se estruturam e interagem os componentes bsicos
utilizados em sua construo). Atualmente, os processadores que encontramos no mercado so
processados Dual Core, Core 2 Duo, Quad Core, Xeon, Turion, etc., que diferem entre si pelo nmero e tipo
de Ncleos de Processamento (Core) existentes em sua arquitetura interna.
A Figura 1.8 mostra a evoluo histrica dos processadores, evidenciando alguns dos principais
sistemas desenvolvidos at os dias atuais.
Pgina 12
Unidade Central de Processamento) e funciona como o crebro de todo o sistema, ou seja, ele quem
comanda tudo que feito pelo sistema microprocessado. Um exemplo muito conhecido de sistemas
microprocessados o computador pessoal (Laptop ou Desktop) que utilizamos todos os dias. Outros
exemplos so: Celulares, Ipods, Palm Tops, etc.
Por mais diferentes que possam parecer os diversos exemplos de sistemas microprocessados,
todos eles so compostos basicamente por uma CPU, um conjunto de Memrias, Portas de Entrada/Sada
(onde so conectados os perifricos) e Barramentos (Figura 1.9).
Pgina 13
1.3.2 MEMRIAS
Em sistemas microprocessados, memria so todos os dispositivos que permitem que os dados
sejam guardados, temporariamente ou permanentemente. As memrias podem ser classificadas
basicamente de duas maneiras. A primeira classificao est associada forma como os dados so
armazenados, neste caso, existem dois tipos de memria, as Volteis e as No-Volteis.
Memrias Volteis: so as que requerem energia para manter a informao armazenada. So
fabricadas com base em duas tecnologias:
dinmica e esttica. A dinmica a mais de menor custo
entre a esse tipo de memria. So popularmente conhecidas como Memria RAM (do ingls
Randomic
Acess Memory - Memria de Acesso Aleatrio), que significa que os dados, nela
armazenados, podem ser acessados a partir de qualquer endereo. As memrias RAM se
contrapem com as de acesso sequencial, que exigem que qualquer leitura/escrita seja feita a partir
do primeiro endereo e, sequencialmente, vai pulando de um em um at atingir o endereo
desejado. Na realidade, existem outras memrias de acesso aleatrio nos computadores, inclusive
no-volteis, portanto, importante ter o conhecimento de que o nome RAM apenas uma
popularizao do nome da memria principal dos computadores, utilizada para armazenar os
programas e dados no momento da execuo. (Figura 1.11)
Pgina 15
EPROM
EEPROM
NOME
Read Only Memory (memria
somente de leitura).
Programable Read Only Memory
(memria programvel somente de
leitura).
TECNOLOGIA
Gravada na fbrica uma nica vez.
Gravada pelo usurio uma nica vez.
Pode ser gravada ou regravada por meio de
um equipamento que fornece as tenses
eltricas adequadas em cada pino. Para
apagar os dados nela contidos, basta iluminar
o chip com raios ultravioleta. Isto pode ser
feito atravs de uma pequena janela presente
na parte de cima do CHIP (Figura 1.12).
Pode ser gravada, apagada ou regravada
utilizando um equipamento que fornece as
voltagens adequadas em cada pino.
Figura 1.13 - Tipos de dispositivos que utilizam memria FLASH para armazenamento de dados.
Pgina 16
A segunda classificao dada s memrias est relacionada ao seu modo de acesso, onde temos
dois tipos de memria, as Memrias Primrias e as Memrias Secundrias.
Memrias Primrias: tambm chamadas de memria real, so memrias que o processador pode
acessar diretamente, sem as quais os sistemas computadorizados no podem funcionar.
Geralmente fornecem uma ponte para as secundrias, mas a sua funo principal a de conter a
informao necessria para o processador num determinado momento; esta informao pode ser,
por exemplo, os programas em execuo. Nesta categoria insere-se a memria RAM (voltil),
memria ROM (no-voltil), registradores e memrias cache. Apesar desse tipo de memria ser
bem mais rpida que a memria secundria, elas possuem baixa capacidade de armazenamento,
onde armazenado somente o programa que est sendo executado pelo processador.
Memrias Secundrias: memrias que no podem ser acessadas diretamente, a informao
precisa ser carregada em memria primria antes de poder ser tratada pelo processador. No so
estritamente necessrias para a operao dos sistemas computadorizados. So geralmente
no-volteis, permitindo guardar os dados permanentemente. Incluem-se, nesta categoria, os discos
rgidos (HDs), CDs, DVDs e disquetes. So memrias de armazenamento em massa, guardam
grandes quantidades de dados.
Para entendermos melhor a aplicao dessas memrias vamos pensar em um exemplo de
computador, sendo a RAM a memria primria e o HD a memria secundria. Quando clicamos em um
cone para abrir um programa (por exemplo, o WORD), esta programa, que estava armazenado na memria
secundria (HD), carregado na memria primria (RAM) e ficar l at que o programa seja encerrado.
1.3.3 REGISTRADORES
Como j foi dito, um registrador ou clula de memria um circuito eletrnico capaz de armazenar
uma pequena quantidade de Bytes (geralmente 1 Byte). Os registradores esto no topo da hierarquia de
memria, sendo assim, so o meio mais rpido e caro de se armazenar um dado. uma espcie de
secretria utilizada para armazenar todos os dados sobre os quais sero realizados algum tipo de operao
(ADD, MOVE, SHIFT, etc.). Ele tambm armazena os resultados dessas operaes. Por exemplo, quando
uma instruo de soma entre duas variveis quaisquer (A e B) executada, antes da soma ser realizada, as
variveis sero carregadas, da memria RAM, para dentro de dois registradores. S depois a soma
realizada. Isso acontece porque somente os registradores possuem comunicao direta com a CPU de um
processador (Figura 1.14). O resultado da operao tambm ser armazenado em outro registrador antes
de ser carregado na memria RAM. No PIC18F4550 esses registradores so chamados de GPR (General
Purpose Register Registradores de Propsito Geral).
Figura 1.14 - O Registrador um tipo de memria que tem acesso direto a CPU.
Pgina 17
f. Isso
dependendo da necessidade da aplicao. Quando os pinos esto configurados como entrada, o registrado
PORT passa a funcionar como um registrador de leitura, onde possvel ler o estado (0 ou 1) de cada
um dos pinos que esto conectados quele registrador. J quando os pinos esto configurados como sada,
o registrador PORT funciona como um registrador de escrita, onde possvel colocar lgica 0 ou lgica 1
nos pinos (Figura 1.16 - Portas do microcontrolador.).
Pgina 20
1.4 MICROCONTROLADORES
microprocessadores, o seu custo muito menor. Alm disso, so muito teis em aplicaes onde as
dimenses, custo, tamanho e consumo do produto so muito importantes.
O primeiro microcontrolador produzido foi o 8048 da Intel, substitudo mais tarde pela famlia 8051,
que se tornou muito popular junto com o 6811 da Motorola. Atualmente no mercado, existem vrios modelos
e fornecedores desses componentes, sendo usados em veculos, equipamentos domsticos, celulares,
Pgina 21
instruo na memria, o contador de programa se incrementa, apontando assim para a prxima instruo.
Em um dado instante de tempo, o contador de programa contm o endereo da instruo que ser
executada na continuao (PEREIRA, 2008).
O Registrador de Endereos de Dados armazena os endereos dos dados situados na memria.
Este registrador essencial para o tratamento de dados indiretos na memria.
A Pilha (STACK) tem como principal funo armazenar endereos de retorno quando so
utilizadas instrues de chamadas de sub-rotinas. O endereo da prxima instruo do programa
armazenado na pilha e o programa desviado para o endereo da sub-rotina. Quando o programa
desviado para o comeo de uma rotina por meio da instruo correta, o endereo seguinte ao ponto que
estava sendo rodado armazenado na pilha para que, ao fim da rotina, o programa possa retornar
(SOUZA, 2005).
A memria do microcontrolador o lugar onde esto armazenadas, dentre outras coisas, as
instrues e os dados do programa. Em um microcontrolador sempre h, pelo menos, dois tipos de
memrias: uma voltil de rpido acesso (memria RAM) e outra com velocidade inferior com maior
capacidade de armazenamento e no voltil (memria FLASH). A RAM perde a informao armazenada
quando no h alimentao de energia. Sua funo armazenar temporariamente dados e instrues a
serem executadas pela CPU do microcontrolador. A memria FLASH, por sua vez, utilizada para
armazenar permanentemente todo o programa que deve ser executado pelo microcontrolador. Um nmero
crescente de microcontroladores dispe de alguma memria no voltil do tipo EEPROM para armazenar
dados fixos que s so trocados esporadicamente.
A quantidade de memria FLASH disponvel normalmente superior a quantidade de memria
RAM. Isso obedece a duas razes: a primeira est relacionada ao preo dessas memrias, sendo maior o
custo por Byte das memrias RAM se comparadas com as memrias FLASH. O outro motivo que a
memria RAM deve armazenar apenas partes do programa que sero executadas naquele momento, no
se fazendo necessrio o armazenamento completo do cdigo.
As entradas e sadas so particularmente importantes nos microcontroladores, pois atravs
delas que o microcontrolador interage com o meio exterior. O microcontrolador possui tanto entradas e
sadas digitais (portas I/O, portas de comunicao serial, PWM, etc.), quanto portas analgicas associadas
aos conversores A/D e D/A.
Outro recurso importante e cada vez mais comum nos microcontroladores atuais o Watchdog
Timer, que reinicia todo o sistema caso o programa principal apresente alguma falha.
processador (m quina el trica), o algarismo 0 equivale a uma tenso eltrica na faixa de 0 a 0,8 Volts e o
algarismo 1 equivale a uma tenso eltrica na faixa de 2 a 5 Volts (dependendo da tecnologia utilizada).
Valores entre 0,8 e 2 Volts so indefinidos, ou seja, podem ser interpretados tanto como lgica 0 ou
lgica 1). Isso foi feito para simplificar os circuitos envolvidos na construo das mquinas eltrica e
porque os sistemas computacionais iniciais eram valvulados, onde vlvulas abertas equivaliam a lgica 0
e
vlvulas fechadas a lgica 1.
Apesar de possuir apenas dois algarismos, possvel representarmos qualquer nmero, letra e
comando com as palavras bin rias (palavras constitudas de 0s e 1s), tendo como limitante apenas o
Pgina 23
nmero de bits, pois quanto maior for o nmero de bits dessa palavra binria, maior ser o nmero de
combinaes binrias (nmeros binrios diferentes). Por exemplo:
- Com 2-bits ns s podemos criar 4 palavras binrias diferentes: 00, 01, 10 e 11;
- J com 3-bits possvel obter at 8 comandos diferentes: 000, 001, 010, 011, 100, 101, 110 e
111.
Desta forma, para uma palavra de n-bits teremos 2
A matemtica uma cincia extraordinria, tudo to lgico e simples. O universo inteiro pode ser
descrito com apenas dez dgitos diferentes (0,1,2,3,4,...9). Mas ser que este a nica maneira de
fazermos isso? Tem de ser exatamente dez dgitos? Claro que no, foi s uma questo de hbito. Lembram
das lies da escola? Por exemplo, o que significa o nmero 764? Significa: 4 unidades, 6 dezenas e 7
centenas. Ns poderamos descrever esse nmero de uma maneira mais complicada? Claro que sim,
0
1
2
vejam: 4 + 60 + 700, ou mais complicado ainda: 4x1 + 6x10 + 7x100, ou ainda, 4x10 + 6x10 + 7x10 . Mas
0
1
2
o que isso realmente significa? Porque ns usamos exatamente os nmeros: 10 , 10 e 10 ? Por que tudo
parece girar em torno do nmero 10? Isso acontece porque na representao numrica decimal ns
utilizamos dez dgitos diferentes (0, 1, 2,..., 8, 9). Em outras palavras, porque usamos um sistema de
numerao base-10, ou seja, Sistema Decimal de Nmeros.
Pgina 24
Observe que a palavra binria 11011010 equivale ao nmero 218 no sistema decimal de
numerao. Veja que para representarmos o mesmo nmero, o sistema binrio necessita de 8 algarismos
enquanto que o sistema decimal apenas 3. Essa a principal desvantagem do sistema binrio, pois exige
que o sistema possua uma memria maior para armazenar a mesma quantidade de informao. Por outro
lado, o sistema binrio bem menos complexo, pois s trabalha apenas com dois algarismos, permitindo
que os sistemas computadorizados trabalhem com o sistema de Tudo (lgica 1) ou Nada (lgica 0),
conhecida como Linguagem de Mquina ou Linguagem de Computador. Desta forma, se quisermos que
um computador (ou mais especificamente o processador do computador) entenda o nmero 218, na
verdade teremos de passar para ele o nmero 11011010.
Ainda existe outro sistema de numerao, chamado Hexadecimal, utilizado para representar os
programas escritos em cdigo binrio de forma mais compacta. Isso acontece porque, diferente do cdigo
binrio que possui menos algarismos que o sistema decimal, o hexadecimal possui 16 algarismos,
necessitando assim de palavras menores para representar o mesmo cdigo decimal ou binrio.
No incio do desenvolvimento dos sistemas computadorizados, as pessoas perceberam que
tinham muitas dificuldades em lidar com nmeros binrios, pois os cdigos desenvolvidos em linguagem de
mquina ficavam muito extensos e difceis de serem lidos. Por isso, um novo sistema de numerao foi
desenvolvido. S que desta vez, foi criado um sistema com 16 algarismos diferentes. Os primeiros 10
dgitos so os mesmo do sistema decimal (0, 1, 2, 3,... 9) e os 6 outros dgitos foram criados utilizando as
seguintes letras: A, B, C, D, E e F, formando assim um sistema de numerao Alfanumrico, chamado de
Sistema de Numerao Hexadecimal. O algarismo A equivale ao nmero 10 do sistema decimal, o B
equivale ao 11 e assim sucessivamente at o F que equivale ao 15. Desta forma, ficou mais simples para os
projetistas entenderem os cdigos de mquina que haviam desenvolvido, pois os mesmos ficaram bem
mais compactos uma vez que com um algarismo do sistema Hexadecimal era possvel representar at 4
algarismos do sistema Binrio, por exemplo, o maior nmero que pode ser representado com uma palavra
binria de 4-bits o 1111 que corresponde ao nmero 15 no sistema decimal e F no hexadecimal. (Figura 1.23)
Pgina 25
Agora que conhecemos quais so os sistemas numricos mais utilizados pelos sistemas
microprocessados, muito importante sabermos converter nmeros de um sistema de numerao para o
outro, ou seja, como transformar uma s rie de 0s e 1s em valores compreensveis para ns.
1.7.1 CONVERSO BINRIA PARA DECIMAL
Os dgitos em um nmero binrio possuem pesos diferentes de acordo com sua posio no
nmero. Alm disso, cada um desses pesos poder estar associado a um 1 ou a um 0. Para encontrarmos
o valor decimal de um nmero binrio temos de multiplicar cada um de seus dgitos pelo peso da posio
em que ele se encontra, desta forma, encontraremos o valor decimal de cada dgito. O valor do nmero
decimal equivalente igual soma dos valores decimais dos dgitos binrios, veja o exemplo mostrado na
Figura 1.24:
Com 2 dgitos => 2 1 = 3 (como vimos com nmeros binrios de 2 dgitos podemos representar
os nmeros decimais de 0 a 3, sendo o 3 o seu valor mximo);
3
Pgina 26
o resultado poderia ser de 6, 110 ou 272 produtos, respectivamente. Consequentemente, a fim de evitar
mal-entendidos, diferentes prefixos e sufixos so adicionados diretamente aos nmeros. O prefixo 0x ou $
bem como o sufixo h marcam os nmeros em hexadecimal. Por exemplo, o nmero hexadecimal 10AF
pode aparecer das seguintes formas $10AF,
0x10AF ou 10AFh. Da mesma forma, os nmeros binrios
normalmente possuem o sufixo
% ou 0b, enquanto nmeros decimais possuem o sufixo D ou, mais
usualmente, aparecem sem nenhum sufixo ou prefixo.
1.8 O BIT
1.9 O BYTE
Pgina 28
Um nibble o nome dado a meio Byte (4-bits). Existem dois tipos de nibble, o low e o high,
onde o primeiro o nome dado a metade menos significativa do Byte (os primeiro 4-bits) e o ltimo
representa a metade do Byte mais significativa (os ltimos 4-bits). (Figura 1.28)
Pgina 29
uma operao lgica AND entre as variveis A e B, bit a bit, e os bits do resultado s foram iguais a 1
quanto o bit de A e o bit de B eram iguais a 1, o que aconteceu apenas no bit3 e no bit6.
Pgina 30
Se um programa realiza uma operao lgica NOT em um Byte, o resultado ser um Byte com
todos os bits invertidos. (Figura 1.34)
Pgina 31
eletrnico, dotado de uma inteligncia program vel, utilizado no controle de processos lgicos (SOUZA,
2005). Para entendermos melhor esta definio, vamos analis-lo por partes:
O controle de processos deve ser entendido como o controle de perifricos, tais como: LEDs,
botes, displays de 7-segmentos, displays de cristal lquido (LCD), rels, sensores diversos
(presso, temperatura, etc.) e muitos outros. So chamados de controles lgicos, pois a
operao do sistema baseia-se nas aes lgicas que devem ser executadas, dependendo do
estado dos perifricos de entrada e/ou sada.
O microcontrolador programvel, pois toda a lgica de operao de que acabamos de falar
estruturada na forma de um programa e gravada dentro do componente. Depois disso, toda
vez que o microcontrolador for energizado, o programa armazenado internamente ser
executado.
Quanto inteligncia do componente, podemos associa-la ao fato de os programas, a partir
dos quais o microcontrolador orienta suas aes, serem feitos a partir da inteligncia humana.
como se o homem emprestasse um pouco de sua inteligncia a uma mquina por meio de
algumas linhas de cdigo, permitindo a ela tomar decises dentro de um universo restrito de
eventos. Alm disso, a CPU do microcontrolador possui uma Unidade Lgica e Aritmtica
(ULA), que capaz de executar todas as operaes matemticas e lgicas requisitadas pelo
programa. Quanto mais poderosa a ULA do componente, maior sua capacidade de processar
informaes.
Em nossa defini o, o microcontrolador ganhou ainda o adjetivo pequeno, pois em uma
nica pastilha de silcio encapsulada (popularmente chamada de CI ou CHIP), temos todos os
componentes necessrios ao controle de um processo, ou seja, o microcontrolador est
provido internamente de memria de programa, memria de dados, portas de entrada e/ou
sada, CPU e perifricos diversos como: timers, contadores, comunicao serial e paralela,
PWMs, conversores analgico-digitais, entre outros.
Atualmente, muitos equipamentos de nosso uso dirio, tais como: eletrodomsticos, videocassete,
alarmes, celulares, DVDs, brinquedos, entre outros, utilizam microcontroladores para execuo de suas
funes bsicas. Portanto, pode ser que voc nem sabia, mas esses componentes j fazem parte da sua
vida h um bom tempo (SOUZA, 2005). Hoje, temos em mdia 24 microcontroladores em uma casa com 4
(quatro) pessoas.
Os microcontroladores PIC (Peripherical Interface Control er), fabricados pela Microchip
Technology, podem processar dados de at 32-bits, dependendo do tipo e famlia a que pertencem, com
uma extensa variedade de modelos e perifricos internos. Tiveram sua origem em 1965, na diviso
eletrnica da General Instruments (GI). No inicio dos anos 70, essa empresa introduziu no mercado um
microcontrolador de 16-bits chamado CP1600, contudo, ele era pobre em I/O e lento em processamento.
Por volta de 1975, a GI introduziu no mercado uma verso aprimorada do PIC, com memria de programa
reprogramvel e diversos outros aprimoramentos, sob a sigla PIC 16C50 (WIKIPDIA.ORG).
O PIC representa uma famlia de microcontroladores projetados sob a arquitetura Harvard, usando
um conjunto de instrues reduzido (RISC).
Os microcontroladores podem ser projetados segundo duas arquiteturas:
Von-Neumann: apenas um barramento interno, pelo qual trafegam tanto instrues quanto
dados (Figura 2.1);
Pgina 32
Harvard: dois barramentos, sendo um exclusivo para trafego de dados e outro para instrues.
No caso dos microcontroladores PIC, o barramento de dados podem ter de 8-bits a 32-bits e o
de instrues pode ter 12, 14 ou 16-bits como mostrado na Figura 2.2;
Na arquitetura Harvard pode-se executar uma instruo enquanto outra est sendo carregada.
Diferentemente do que ocorre com o Von-Neumann. Alm disso, como os barramentos so separados, h a
necessidade de a instruo conter o endereo dos dados a serem processados (SOUZA, 2005). Como
consequncia o nmero das instrues possveis fica limitado. Devida a essa limitao foi utilizado CPUs
com tecnologia RISC (Reduced Instruction Set Computer Computador com conjunto de instrues
reduzido). Existe ainda a tecnologia CISC (Complex Instruction Set Computer Computador com conjunto
de instrues complexo), muito utilizada em computadores com tecnologia Von-Neumann.
Os PICs da Microchip so os microcontroladores mais vendidos no mundo. Isso se deve a
algumas caractersticas, tais como: grande variedade de famlias que permitem adaptar o C s mais
variadas necessidades existentes nos tempos modernos, ferramentas de desenvolvimento comuns para
todas as famlias, grande variedade de funcionalidades embutidas, preos competitivos, bom suporte
(datasheet, livros, notas de aplicaes, seminrios e muita informao disponvel na internet) e
principalmente pelo fato de a Microchip ter investido em suporte para usurios iniciantes e encapsulamento
dos CHIPs que permitiam sua montagem em proto-boards.
Pgina 33
Figura 2.3- Distribuio dos pinos no microcontrolador PIC18F4550 (Fonte: datasheet PIC18F4550).
O PIC18F4550 possui at 35 pinos de I/O configurveis, que esto agrupados em cinco grupos
denominados PORTAS. Desta forma, temos a PORT A, a PORT B, a PORT C, a PORT D e a PORT E.
A maioria desses pinos podem ser configurados como entrada ou sada (input/output), e como j
foi dito, alguns deles acumulam outras funes.
Podemos ver mais detalhes sobre cada pino na Tabela 3 (dividida em partes), que segue abaixo
(Ver datasheet do PIC18F4550 da pgina 18 23):
Pgina 36
Pgina 37
Pgina 38
Pgina 39
Pgina 40
Pgina 41
Como vimos, a mostra na Figura 2.4, por meio de diagrama de blocos, as principais partes de um
sistema microprocessado padro. Na Figura 2.5 possvel visualizar como esto distribudas cada uma
dessas partes na arquitetura interna do PIC18F4550.
Pgina 42
Pgina 43
Pgina 44
O vetor Reset trata-se do primeiro endereo de memria de programa que ser executado quando
o PIC comear a rodar (aps a alimentao ou um reset). As rotinas de interrupo sero armazenadas na
rea de programao, juntamente com todo o resto do programa. No entanto, existe um endereo que
reservado para o incio do tratamento de todas as interrupes. A pilha um local, totalmente separado da
memria de programao, em que sero armazenados os endereos de retorno quando utilizarmos
instrues de chamadas de rotinas (SOUZA, 2005).
Pgina 45
Pgina 46
Pgina 47
REGISTRADOR STATUS
O registrador STATUS utilizado para armazenamento de flags (sinalizadores) matemticos e de
estado da CPU, esses flags sinalizam o status aritmtico da ULA. (Figura 2.9)
E = Bit de Escrita
Pgina 48
O KIT de desenvolvimento baseado no PIC18F4550, fabricado pela PICMinas, pode ser dividido
em quatro blocos: circuitos atuadores, chaves/teclas, circuitos sensores e displays.
2.2.1. CIRCUITOS ATUADORES
Os circuitos atuadores so compostos por: 3 (trs) LEDs (Vermelho, Verde e Amarelo), Rel de 5V
e o Buzzer (Sirene). A Figura 2.10, Figura 2.11 e Figura 2.12 mostram as ligaes de cada um desses
atuadores no PIC18F4550.
Pgina 49
BOOT. A chave
RESET de uso especfico e no pode ser utilizada pelos programas desenvolvidos pelo usurio. Para se
utilizar a chave ttil BOOT necessrio que o
Jumper BOOT/RB4 esteja selecionado na posio
BOOT, como mostrado na Figura 2.13. Caso contrrio, o boto no possui nenhuma funcionalidade e o
pino RB4 (onde a chave BOOT est conectada) ficar disponvel no conector do Display de 7-Segmentos,
tanto para acionamento do prprio display, quanto para a utilizao de dispositivos externos ao KIT.
Pgina 50
A Figura 2.14 mostra as ligaes das chaves Dip-Switch no KIT. Observe a existncia de um
Jumper chamado CHAVES. Com ele possvel habilitar ou desabilitar os pull-ups presentes em cada uma
das chaves. Os mesmos pinos que esto conectados s chaves (RA1/AN1, RA2/AN2, RA3/AN3 e RA4)
tambm so disponibilizados em um conector de expanso. Os pull-ups devem ser desabilitados sempre
que o usurio desejar acionar outros dispositivos externos por meio do conector de expanso.
Pgina 51
O sensor de temperatura utilizado o MCP9700A, que est conectado ao PIC como mostrado na
Figura 2.16. Este sensor est acoplado ao KIT por meio de um conector, podendo assim ser removido. Isso
permite a conexo de outros sensores entrada analgica AN0, desde que estes possuam caractersticas
eltricas compatveis com as entradas analgicas do PIC (ver datasheet Conversor Analgico Digital).
O potencimetro funciona como um circuito divisor de tenso. A tenso eltrica aplicada ao pino
AN4 do PIC18F4550 varia de acordo com a posio de seu parafuso. (Figura 2.17)
Pgina 52
2.2.4. DISPLAYS
Figura 2.17 - Ligao do potencimetro no PIC.
O KIT possui dois conectores para displays: um conector para display duplo de 7-segmentos
(anodo comum) e um conector compatvel com a maioria dos displays de LCD Alfanumricos disponveis no
mercado (displays 8x1, 8x2, 16x1, 16x2, 16x4, 32x2, etc.). As Figura 2.18 e Figura 2.19 mostram as
ligaes de cada um desses conectores. Observe que para habilitar o funcionamento do ponto entre os dois
dgitos, o Jumper BOOT/RB4 deve estar selecionado na posi o RB4, como mostrado na Figura 2.18.
Pgina 53
Pino do
Pino do
Nome do Pino
LCD
PIC18F4550
no PIC18F4550
VSS
GND
VDD
5V
Pino de Alimentao
VO
RS
P21
R/W
GND
P22
D0
No conectado
D1
No conectado
D2
No conectado
D3
10
No conectado
D4
11
P34
RD4
D5
12
P25
RD5
D6
13
P33
RD6
D7
14
P26
RD7
BL+
15
5V
BL-
16
GND
No conectado
RD2
Descrio
RD3
Pgina 54
A Figura 2. 21 mostra como os cinco Jumpers esto conectados aos respectivos circuitos do KIT
PICMinas.
Pgina 56
Referncias:
1- MARTINS, H. R.
Pgina 57
O MPLAB
um pacote de
programas fornecido
gratuitamente pela
Microchip
(www.microchip.com), fabricante dos microcontroladores PIC, para gerar os cdigos de programao que
sero convertidos em linguagem de m quina (tipos .hex e .cof) para serem gravados na memria dos
microcontroladores. O MPLAB integra num nico ambiente o gerenciador de projetos, o editor de programa
fonte, o compilador, o simulador, o emulador e quando conectado s ferramentas da Microchip tambm
integra o gravador do PIC, facilitando assim o trabalho do programador. um programa para PC, que roda
sobre uma plataforma Windows.
O Programa fonte, ou simplesmente fonte do programa uma sequncia de texto, escrita numa
linguagem de programao que ser convertida em cdigo de mquina para ser gravado na memria de
programa do PIC. O Compilador o programa que converte o cdigo fonte, desenvolvido pelo usurio em
alguma linguagem de programao, em cdigo de mquina. O Simulador o programa que, como o prprio
nome diz, simula o funcionamento do C (CPU e perifricos), tornando possvel a verificao de programas
fonte em desenvolvimento, sem a necessidade de um hardware.
A linguagem de programao utilizada pelo MPLAB para gerar os cdigos o
Assembly, mas
podem ser instalados outros compiladores para trabalharem em conjunto com o MPLAB, como por exemplo,
o PICC Lite da Hi-Tech, PCWH CSS, C18, C32, entre outros. Alguns desses compiladores utilizam a
linguagem C como interface com os usurios, porm cada compilador possui suas particularidades na forma
de configurar os registradores e acessar os perifricos do microcontrolador.
O MPLAB trabalha com projetos, que so constitudos por arquivos gerados pelo usurio e/ou
arquivos de bibliotecas que agrupam funes desenvolvidas pela prpria Microchip.
Nesta seo, sero mostrados os passos envolvidos na instalao do MPLAB IDE a partir do DVD
Didtico. Este DVD possui a verso mais atual da poca de sua gravao. Voc pode obter a verso mais
atual, gratuitamente, no site da Microchip.
Pgina 58
Procedimento
1) Para instalar o MPLAB utilizando o DVD, v
aba Instaladores e em MPLAB IDE clique no boto
Instalar (ver Figura 3. 1). O instalador abrir automaticamente. Clique em Next (ver Figura 3.2).
Pgina 59
2) A tela seguinte contm o termo de licena do MPLAB. Leia atentamente e, caso voc concorde, clique
em I accept the terms of the license agreement, em seguida, clique em Next (ver Figura 3.3).
Pgina 60
4) Neste passo iremos escolher o diretrio onde o MPLAB ser instalado. muito importante que o
diretrio seja C:\Microchip. Isso evita erros e padroniza a instalao. Para mudar para o diretrio
C:\Microchip clique em browse. Apague a frase program files ou arquivo de programas deixando
apenas c:\Microchip. Clique em Ok. Confira se o diretrio C:\Microchip. Se o diretrio estiver correto
clique em Next (ver Figura 3.5).
incorporar uma serie de mdulos de firmware pr-escritos em sua aplicao. Ele completamente
compatvel com o MPLAB IDE e foi desenvolvido pela prpria Microchip. Leia com ateno toda a
licen a e, caso voc concorde, clique em I accept the terms of the license agreement, em seguida
clique em Next.
6) Em seguida aparecer a opo para a instalao do compilador MPLAB C32. O C32 um compilador
para PICs da famlia 32. Leia com aten o toda a licen a e, caso voc concorde, clique em I accept
the terms of the license agreement e depois clique em Next.
7) No passo seguinte aparecer uma tela com um resumo do que ser instalado. Confira se o diretrio de
instalao C:\Microchip e clique em Next (ver Figura 3.6). Isso levar alguns minutos.
8) No final do processo de instalao ir aparecer uma mensagem pedindo para que o programa HI-TEC
C installer seja instalado. Esse programa um conjunto de compiladores para vrias famlias de PIC,
ferramentas de desenvolvimento para sistemas embarcados e uma IDE baseada em Eclipse (HI-TIDE
) para as famlias de 8, 16, e 32-bits do microcontrolador. Ns no utilizaremos esta ferramenta, desta
forma, desnecess ria sua instala o. Clique em No (ver Figura 3.7).
-la.
Pgina 62
10) Por fim, aparecer uma janela informativa mostrando uma lista de documentos e notas de verses e
instalaes de drives referentes aos programas instalados. Voc pode fechar essa janela.
Driver da Microchip
Instalar.
Para a programao dos PICs (PIC18 e PIC32) utilizados em nossos cursos, so utilizados os
compiladores C18 e C32 da prpria Microchip. Eles permitem que o programador escreva cdigos em
linguagem C e, posteriormente, os convertam para a linguagem de mquina apropriada ao C PIC
utilizado.
Os compiladores C18 e C32 possuem duas verses: uma verso comercial que pode ser
comprada no site da Microchip, e uma verso de estudante gratuita, disponvel neste DVD, que diminui seu
Pgina 63
poder de compilao aps um perodo de avaliao (60 dias). No entanto, mesmo aps expirar o tempo de
avaliao, este compilador continuar atendendo as necessidades de desenvolvimento de projetos no
comerciais.
Um projeto criado no MPLAB, gerenciado por informaes gravadas num arquivo de extenso
.mcp (Projeto do MPLAB). A compilao de um projeto gera importantes arquivos, conforme mostrado na
Figura 3.11.
O programador escreve o cdigo em C no MPLAB e inclui as bibliotecas que precisam ser usadas.
O MPLAB utiliza o compilador para converter a
linguagem de programao, tambm conhecida como
linguagem de alto nvel (neste caso linguagem C) para linguagem de mquina (linguagem de baixo
nvel). O compilador utiliza outro software chamado Linker (MPLINK) que ir instanciar as bibliotecas
necessrias para o funcionamento do cdigo em desenvolvimento. Finalmente, depois da linkagem e da
compilao, temos como resultado o cdigo em linguagem de mquina (.HEX).
O principal arquivo resultante no processo de compilao o arquivo
cdigo de mquina em formato hexadecimal, usado pelos simuladores (MPLAB SIM), emuladores (MPLAB
ICE 2000 and PICMASTER) e programadores (PRO MATE II e PICSTART Plus).
OBS.: para maiores
informaes sobre o MPLAB, consulte o MPLAB USERS GUIDE (DS51519C), disponvel no DVD didtico,
na se o Datasheets, em Manuais do MAPLAB Guia do Usurio.
Alguns dos outros arquivos gerados so:
Code file (.cod) Arquivo de depurao usado pelo MPLAB IDE, contm a informao
simblica e o cdigo objeto;
Listing file (.lst) Cdigo fonte original, passo-a-passo com o cdigo final em binrio;
Error file (.err) Arquivo de erros gerados pelo compilador;
Configuration file (.cof) Arquivo de configurao do dispositivo usado, contm toda a
configurao de portas de I/O, registradores e outros.
Pgina 64
Pgina 65
instalado o MPLAB em sua mquina e que este no esteja aberto. Clique em Next para continuar
(ver Figura 3.13).
3) Na janela seguinte temos o termo de licena do C18. Leia atentamente e, caso voc concorde, clique
em I accept the agreement e, em seguida, clique em Next (ver Figura 3. 14).
Pgina 66
4) No prximo passo deve-se escolher o diretrio onde o compilador C18 ser instalado. muito
importante que o diretrio seja C:\mplabc18. Mude o caminho padro presente na instalao para o
C:\mplabc18. Isso evita erros e padroniza a instalao. Clique em Next (ver Figura 3.15).
6) Ao final do processo de instalao aparecer uma janela informando que a instalao foi concluda com
sucesso. Pressione finish para fech
Pgina 67
Descrio
bin
cpp
doc
example
Contm aplicaes exemplos para auxiliar o usurio a comear a usar o MPLAB C18.
lkr
mpasm
lib
Scr
Pgina 68
instalado o MPLAB em sua mquina e que este no esteja aberto. Clique em Next para continuar
(ver Figura 3.18).
3) Na janela seguinte temos o termo de licena do C32. Leia atentamente e, caso voc concorde, clique
em I accept the agreement e, em seguida, clique em Next (ver Figura 3.19).
4) No prximo passo deve-se escolher o diretrio onde o compilador C32 ser instalado. muito
importante que o diretrio seja C:\MPLAB C32. Mude o caminho padro presente na instalao para o
C:\ MPLAB C32. Isso evita erros e padroniza a instala o. Clique em Next (ver Figura 3.20).
Pgina 70
6) Ao final do processo de instalao aparecer uma janela informando que a instalao foi concluda com
sucesso. Pressione finish para fech
3.3 FIRMWARE
BOOTLOADER
Para falarmos sobre Bootloader devemos primeiro entender a diferena entre um firmware e um
software. Firmware um programa que fica gravado dentro de um sistema embarcado (em sua memria de
programa: ROM, EEPROM e FLASH), e nele esto contidas todas as instrues de funcionamento,
reconhecimento e operao de um determinado equipamento eletrnico (como por exemplo, mquinas de
lavar, micro-ondas, celulares, vdeos-game, cmeras fotogrficas, entre outros), em suma, um programa
desenvolvido para um hardware especfico. J o software um programa desenvolvido para executar em
computadores de modo geral (respeitando alguns requisitos mnimos para o seu funcionamento), no
estando vinculado a um hardware especfico. Ou seja, um software pode ser desenvolvido para funcionar
em um computador independente de sua marca (Apple, HP, Del , Toshiba, etc.) ou modelo.
Baseado neste raciocnio, voc saberia responder se o programa Word da Microsoft seria um
software ou um firmware? Se o Word fosse um firmware, deveriam existir inmeras verses do mesmo, uma
para cada marca e modelo de computador existente no mercado. Desta forma, fica fcil concluir que o
programa Word, assim como o prprio Sistema Operacional Windows, so exemplos de softwares.
Outro exemplo seria um programa para controlar as funes de um forno de micro-ondas. Este
seria um software ou firmware? Para respondermos a esta pergunta vamos nos fazer outra pergunta: seria
possvel gravar o programa responsvel pelo funcionamento de um forno de micro-ondas da marca LG em
outro forno de micro-ondas da marca Consul e este ltimo continuar funcionando? Provavelmente no, pois
esses programas so desenvolvidos para a montagem especfica de cada modelo de micro-ondas,
pensando em seus dispositivos eletrnicos como, por exemplo, tipo de teclado, nmero de funcionalidades,
tipo de display (LCD, 7 segmentos, touch-screen, etc), caractersticas eltricas do motor que gira o prato e
at mesmo do microcontrolador utilizado para controlar todos esses perifricos. Desta forma, fica fcil
concluir que o programa gravado em um modelo especfico de forno de micro-ondas da marca LG foi
desenvolvido especificamente para aquele equipamento, no sendo possvel grav-lo nem em outros
Pgina 71
modelos de micro-ondas da prpria LG. Isso nos permite afirmar que este programa trata-se de um firmware
e no de um software, uma vez que o mesmo foi feito para um hardware especfico.
Firmware
Software
Outro conceito importante que devemos abordar antes de falarmos do Bootloader so os tipos de
gravao que um microcontrolador pode ter. Ou seja, as possveis formas de se armazenar (carregar) o
programa desenvolvido para um determinado microcontrolador dentro de sua memria de programa. Este
programa ir controlar todas as funcionalidades do microcontrolador para uma aplicao especfica. Iremos
cham-lo de Firmware de Aplicao.
O modo mais comum de gravar o Firmware de Aplicao chamado de gravao
off-board.
Nesse mtodo necessrio retirar o microcontrolador da sua plataforma de aplicao (placa de circuito
impresso que liga os perifricos do microcontrolador aos dispositivos externos que ele ir controlar, como
por exemplo: botes, rels, LEDs, display, etc.) e coloc-lo em outro dispositivo, chamado Gravadora, que
ir gerenciar a transferncia do
Firmware de Aplicao de dentro do computador para a memria de
programa do microcontrolador. Este mtodo ser melhor detalhado na seo 3.6. A Figura 3.22 ilustra esse
tipo de gravao.
Existem ainda outros dois mtodos de gravao: In-circuit via Hardware e In-circuit via Bootloader.
Nesses mtodos, no h a necessidade de retirar o microcontrolador da placa de aplicao para realizar a
gravao do firmware em sua memria de programa (In-circuit no circuito).
In-circuit via Hardware: Neste modo, apesar de no precisar retirar o PIC do KIT, ainda
necessrio o uso de uma gravadora. Alm disso, a placa de aplicao (por exemplo o KIT Didtico) deve
possuir alguma interface de comunicao com a gravadora, pois ser a gravadora que gerenciar o
processo de transferncia e armazenamento na memria de programa do microcontrolador. Para os PICs
um mtodo de conexo entre gravadora e placa de aplicao o ICSP (In-Circuit Serial Programmer),
compatvel com a maioria das gravadoras de PIC existentes no mercado. Perceba na Figura 3.23 que o KIT
Didtico est conectado gravadora por meio de seu conector ICSP (ver detalhes do KIT na seo 2.3
desta apostila). Assim como no mtodo off-board, neste mtodo necessrio conectar a gravadora ao
MPLAB (via conexo serial ou USB). O MPLAB busca o arquivo.hex (firmware compilado) no HD do
computador e o envia para a gravadora via porta USB ou serial. A gravadora acessa a memria de
programa do PIC (memria FLASH) via conexo ICSP e armazena o todo o arquivo.hex. (ver Figura 3.23)
Pgina 73
Pgina 74
Pgina 75
2)
Abra o MPLAB. Clique no menu Project e em seguida em Project Wizard (ver Figura 3.26)
3) Abrir uma janela de boas vindas ao assistente de criao de projetos. Clique em avanar (ver Figura
3.27)
Pgina 76
4) A tela seguinte permite a seleo do dispositivo a ser utilizado. Em nossos KITs utilizamos o
PIC18F4550 ou o PIC32MX775F256L. Selecione o microcontrolador desejado e, em seguida, clique no
boto avanar (ver Figura 3.28).
5) Na prxima tela, necessrio selecionar qual o compilador a ser utilizado no projeto. Isto feito atravs
da op o Active Toolsuite. Caso esteja utilizando o PIC18F4550 escolha a op o Microchip C18
Toolsuite. Caso esteja utilizando nosso KIT avan ado com o PIC32, escolha a op o Microchip PIC32
C-Compiler Toolsuite. Em seguida, clique em avan ar (ver Figura 3.29).
Pgina 77
6) A prxima tela permite ao usurio escolher o diretrio onde o projeto ser salvo, bem como o nome do
mesmo. Para tanto, clique em Browser e escolha o diretrio e o nome do projeto. Em seguida, clique
em avanar.
7) A prxima tela permite adicionar arquivos ao seu projeto. Ns no recomendamos adicionar arquivos
atravs desta janela devido grande complexidade dos modos de importao de arquivos. Apenas
clique em avan ar. (ver Figura 3. 31)
Pgina 78
8) A prxima janela mostra um resumo dos dados do seu projeto. Confira o microcontrolador escolhido, o
compilador, o caminho do projeto. Se todas as informa es estiverem corretas clique em concluir (ver
Figura 3.32).
9) O prximo passo adicionar os arquivos main.c e linker ao seu projeto. Recomendamos que utilizem os
arquivos disponveis em nosso DVD. Para adicionar arquivos ao seu projeto, utilize janela do Projeto
(Ver Figura 3.33). Nesta janela voc pode adicionar arquivos fontes (Source Files), arquivos cabealhos
(Header Files), arquivos objetos (Object Files) e arquivos de biblioteca (Library Files).
Pgina 79
10) Para adicionar o arquivo main.c em seu projeto, clique com o boto direito do
Source Files, e em seguida clique em Add Files (ver Figura 3.34).
12) Para incluir o arquivo linker (.lkr) siga as mesmas instrues dos passos 10 e 11. No entanto, este
arquivo deve ser includo na pasta Linker Script. Para isso, clique com o boto direito na pasta Linker
Script e, em seguida, clique em Add Files. Encontre o arquivo de linker e clique em abrir.
Pgina 80
13) Seu projeto est pronto. O passo seguinte ser abrir o arquivo main.c e comear a desenvolver o seu
cdigo. Para abrir o arquivo main.c, v na janela Project, na pasta Source Files e d um duplo clique
em main.c (ver Figura 3.36).
Figura 3.36 - Janela do MPLAB mostrando o arquivo main.c do projeto teste.mcp aberto.
Pgina 81
Aps a compilao de seu projeto ser gerado um arquivo com o mesmo nome do projeto com
extenso .hex dentro da pasta do projeto. Esse o seu firmware compilado. Os nossos KITs Didticos
possuem o Bootloader gravado na memria de programa de seus PICs. Isso permite que ele realize uma
Autogravao (ver seo 3.3 desta apostila). A seguir sero mostrados os passos necessrios para se
carregar um firmware na memria de programa de um PIC utilizando nosso KIT Didtico PIC18 e o nosso
DVD Didtico.
Procedimento para gravao de um firmware via bootloader
1) Abra o DVD Did tico e clique no cone Gravar PIC. Conecte o seu KIT Did tico ao seu computador e
coloque-o em modo de gravao conforme mostrado na animao do DVD (segure o boto de BOOT e
d um clique no boto RESET). Observe que os LEDs vermelho e amarelo comearo a piscar. Na
caixa de texto Status ir aparecer a mensagem Kit did tico conectado. Observe tamb m que alguns
dos botes sero habilitados aps a conexo (ver Figura 3.38).
Pgina 82
2) O prximo passo informar o diretrio onde est localizado o firmware que deseja gravar no PIC. Isso
feito atrav s do boto de funcionalidade Abrir Arquivo Hex. Usaremos um projeto exemplo do DVD
Didtico. Clique no boto
Load HEX File e v ao diretrio E:\DVD Didtico\Arquivos\Projetos\Botao
LED. Selecione o arquivo hexadecimal (.hex) disponvel nessa pasta (neste exemplo o arquivo ser
Boto LED.hex) e, em seguida, clique em Abrir (ver Figura 3.39).
3)
Em seguida clique no boto Gravar / Verificar e aguarde alguns instantes. Observe que aparecero
algumas mensagens na caixa de texto Status (ver Figura 3.40).
A grava o foi concluda com sucesso. Clique no boto Reiniciar do programa ou no boto de reset na
placa para verificar o funcionamento do seu programa no KIT.
3)
4) Feito isso, espere a instalao do driver e, em seguida, clique em Concluir. (Figura 3.44)
2) Sem alterar o cdigo, v ao menu Programmer -> Select Programmer -> 2 MPLAB ICD2. (Figura
3.46)
Caso o MPLAB no reconhe a o mdulo de grava o, exibindo uma mensagem de aviso: Autoconnect not enabled - Not connecting (Try enabling auto-connect on the ICD2 settings pages.).
Siga os passos abaixo, caso contrrio, pule para o passo 10.
4) Clique no menu Programmer -> MPLAB ICD2 Setup Wizard. (Figura 3.47)
5) Na janela de boas vindas (Welcome), clique no boto Avanar. Na janela seguinte, Comunications,
selecione a porta de comunicao USB e clique em Avanar. (Figura 3.48)
Pgina 87
Pgina 88
7) Na janela seguinte,
Pgina 89
9) Na janela final clique em Concluir. Repita o passo 2 e verifique se o mdulo de gravao foi
reconhecido, caso contrrio, entre em contato com o fabricante do mdulo.
10) Quando a gravadora estiver corretamente conectada ao MPLAB, ser possvel visualizar uma srie de
cones habilitados na barra de ferramentas. (Figura 3.52)
Hold in Reset
ICD
Tabela 6 - Descrio dos cones de gravao.
firmware
Program target device. importante apagar o contedo do dispositivo antes de realizar a gravao
do novo firmware.
12) O MPLAB exibir uma mensagem de Programao realizada com sucesso. (ver Figura 3.53)
Figura 3.53 - Mensagem informando que a programao foi realizada com sucesso.
Pgina 90
1) Voc pode acompanhar a simulao do programa criado e verificar o seu funcionando atravs do
MPLAB SIM. Trata-se de uma ferramenta muito til para a identificao e eliminao de erros (bugs)
em seu cdigo. Para isso clique no menu
Debugger e escolha a opo Select Tool. Em seguida,
selecione a opo MPLAB SIM (esse o simulador integrado ao MPLAB). (ver Figura 3.54)
5) Alm de ser possvel acompanhar a execuo de seu cdigo passo-a-passo, atravs do MPLAB SIM,
possvel acompanhar os valores das variveis criadas pelo usurio e tambm dos SFRs (Special
Function Registers Registradores com funes especiais). Clique no menu View e escolha a opo
Watch (ver Figura 3.58). Ser possvel visualizar o contedo das variveis ou dos SFRs. (ver Figura
3.59)
Pgina 92
alterar a base numrica clique com o boto direito sobre a varivel e selecione Properties..., na janela
que ir se abrir selecione no campo Format a opo que desejar (ver Figura 3.60).
Pgina 93
Desvantagens
desenvolvimento de novos
projetos;
Dificulta a manuteno de
projetos antigos
Exige projetistas experientes e
bem treinados;
Depurao complexa
Pgina 94
2)
3)
A prtica de programar, por mais simples que seja o programa, muito importante, para assim ter
a experincia e aperfeioamento na busca de um programa simples e claro.
4.2.2. FLUXOGRAMAS
Fluxogramas so elementos grficos utilizados para estabelecer a sequncia de operaes
necessrias para o cumprimento de determinada tarefa e consequentemente a resoluo de um problema.
Eles permitem esquematizar e visualizar os sistemas de forma racional, clara e concisa, facilitando seu
entendimento geral por todos os envolvidos.
Alguns elementos bsicos para a construo de um fluxograma esto listados abaixo:
Smbolo
Descrio
Incio ou Terminao: este tipo de smbolo utilizado para representar o
incio ou trmino do programa ou algoritmo.
Processamento: este smbolo utilizado para descrever uma determinada
tarefa.
Dados: normalmente este smbolo utilizado para descrever entrada e sada
de dados no sistema.
Tomada de deciso: este smbolo utilizado para representar um ponto de
tomada de deciso, ou teste condicional. A tomada de deciso pode conduzir
sempre a um resultado: verdadeiro ou falso.
Os smbolos utilizados nos fluxogramas tm por objetivo evidenciar origem, processo e destino de
uma informao de um sistema.
Um fluxograma fornece uma compreenso detalhada de um processo e procura apresentar o
processo passo a passo.
O primeiro exemplo mostra um problema simples de somar dois nmeros (A e B) e armazenar o
resultado em C.
Incio
Pega o primeiro
nmero (A)
Pega o segundo
nmero (B)
Soma A + B e
guarda em C
Fim
Pgina 96
Incio
Contagem = 0
Soma 1 contagem
Contagem = 10?
No
Sim
Fim
Pgina 97
OPERADORES
Sempre que precisamos relacionar ou modificar um ou mais elementos como variveis ou dados
de um programa, utilizamos operadores. Eles so elementos ou smbolos grficos utilizados ento para
relacionar ou modificar dados ou variveis
So cinco categorias de operadores:
Matemticos: utilizados para efetuar determinada operao matemtica em relao a um ou
mais dados. (Adio, subtrao e outras);
Relacionais: utilizados para relacionar dois elementos ou dados. (Maior, menor, igual);
Lgicos: utilizados para efetuar operaes lgicas booleanas entre dois ou mais elementos
ou dados. Este tipo de operao somente pode chegar a um dos resultados: verdadeiro (1) ou
falso (0), e so frequentemente utilizados na criao de testes condicionais com mltiplas
variveis. (E lgico, OU lgico, NO lgico);
Lgicos bit a bit: utilizados para realizar operaes lgicas bit a bit entre um ou mais
elementos ou dados.
Memria: so operadores utilizados para efetuar operaes em relao memria do
dispositivo. (Atribuio (=), & e *)
TIPO INTEIRO
O compilador MPLAB C18 suporta os tipos de dados inteiros definidos pelo padro ANSI. A faixa
dos padres inteiros est documentada na Tabela 9:
Pgina 98
Pgina 99
MODIFICADORES DE ARMAZENAMENTO
Os modificadores de armazenamento so elementos utilizados para controlar a forma como o
compilador ir lidar com o armazenamento da varivel.
MPLAB C18 suporta os modificadores de armazenamento ANSI (auto, extern, register, static e
overlay), alguns deles descritos a seguir:
AUTO
utilizado para definir o mbito ou escopo da varivel local ou funo/classe definida. No
necessrio escrever o modificador, pois ele usado como padro na linguagem C.
EXTERN
utilizado para definir varivel ou funes/classes externas ao programa. Isto muito utilizado na
criao de programas grandes e complexos, utilizando diversos mdulos separados e que so depois
ligados por meio de um programa especial chamado linker.
STATIC
As variveis ou funes/classes declaradas como static funcionam como globais no sentido que
no sero destrudas ao trmino da execuo. Static utilizado quando necessitamos manter uma varivel
ou funo/classe em uma posio permanente na memria. O parmetro static vlido apenas quando o
compilador est operando em modo Non-extended. O padro de classe de uma funo auto. Isso pode
ser modificado explicitamente com a palavra static antes da funo.
A linguagem C foi criada na dcada de 70 por Dennis Ritchie. O C derivado de outra linguagem,
o B, criado por Ken Thompson. O B, por sua vez, se originou da linguagem BCPL, inventada por Martin
Richards.
A linguagem de programao C utilizada para a criao dos mais variados programas, como por
exemplo, processadores de texto, planilhas eletrnicas, programas de comunicao, sistemas operacionais,
programas para a automao industrial, gerenciadores de bancos de dados, programas de projeto assistido
por computador, programas para a soluo de problemas de Engenharia, Fsica, Qumica, entre outros.
A capacidade de programar transcende o conhecimento de estruturas, funes e recursos de uma
linguagem de programao. necessrio que o programador adquira familiaridade com o compilador,
Pgina 100
experincia na identificao de "bugs" e desenvolva um bom raciocnio lgico. Portanto, importante que o
leitor escreva seus prprios cdigos (evitando cpias na ntegra de outros programas), compile e execute
todas as prticas apresentadas.
4.5.1 PRIMEIROS PASSOS
Para facilitar o estudo, iniciaremos com uma viso geral sobre cada elemento que compe o
cdigo de um programa C atravs de um exemplo simples.
De acordo com o que foi visto na seco trs, crie um projeto no MPLAB IDE. O arquivo main.c
deve possuir o contedo mostrado na Figura 4 2. Para isso, utilize o modelo do arquivo que esta no DVD do
curso, na aba Projetos, no tpico Arquivos modelos no link PIC18 main e linker.
comentrios
onde o desenvolvedor descreve o projeto com nome do arquivo, o microcontrolador para qual
o projeto est sendo desenvolvido, o compilador utilizado para transformar o cdigo escrito em
C em linguagem binria (linguagem de mquina) e um breve resumo das funcionalidades do
mesmo.
Comentrios podem ser iniciados em qualquer ponto de uma linha e so usados para
descrever o funcionamento ao final de cada cdigo, ou realizar qualquer observao que o
Pgina 101
Caso no haja nenhum erro no cdigo a janela de Output aparecer a mensagem BUILD SUCCEEDED
(ver Figura 4.3). Caso contrrio, verifique o erro e corrigia-o. Um programador no apenas deve saber
como programar, mas tambm identificar e corrigir os erros de um cdigo.
. A funo main ( ) tem um significado especial nos programas em C, pois a funo que inicialmente
executada (em ingls entry point) e utilizada para definir a funo principal, ou o corpo principal do
programa (ver Figura 4.4).
Pgina 102
c.
d.
e.
f.
g.
O caractere abertura de chave { utilizado para delimitar o incio de uma funo, e o caractere
de fechamento de chave } indica o final da fun o. As chaves delimitam o que chamamos de
bloco de programa, ou bloco de cdigo.
A primeira linha dentro do bloco de comandos uma declarao de duas variveis do tipo
inteiro.
As duas linhas seguintes so atribuies de valores as essas duas variveis criadas.
Note que ao final de cada linha de comando o ltimo caractere um ponto-e-vrgula (;),
elemento usado para delimitar o final de um comando.
Na linha seguinte, encontramos um while (maior < menor). Esse um comando de controle,
utilizado para repetio de um determinado bloco de instrues. Um while fica em loop
enquanto a condio for satisfeita (no exemplo enquanto a varivel maior tiver um valor menor
que a varivel menor).
Em seguinte, tm-se dois comandos: o primeiro para somar uma unidade varivel maior e o
outro para diminuir uma unidade a varivel menor.
7) Voc pode simular o funcionamento do programa como foi visto na seco trs, e verificar se est
funcionando corretamente.
8) Alm de observar a simulao passo-a-passo, atravs do MPLA SIM, possvel acompanhar os valores
das variveis
auto
break
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
Variavel
variavel1
_teste_2
Invlido
Varivel
1abc
Return
temperatura;
char
senha1, senha2;
float
tensao;
temperatura=25;
char
senha1= 'b', senha2 = 0x1F; // declara duas variveis (senha1, senha2) do tipo caractere
Outro aspecto importante local de declarao de uma varivel, pois determina a acessibilidade
dessa varivel s diversas partes de um programa.
Quanto acessibilidade, existem trs tipos bsicos de variveis:
Variveis Locais: so aquelas declaradas em um bloco (delimitado por {}), por exemplo: em
uma funo. So visveis e acessadas apenas no bloco em que esto declaradas;
Variveis Globais: so aquelas declaradas no incio do cdigo. Podem ser visualizadas e
acessadas em qualquer parte do programa.
Variveis Parmetro Formal: so aquelas passadas como parmetros de funes.
4.5.6 CONSTANTES
Constantes so valores, numricos ou no, que no podem ser alterados pelo programa durante
sua execuo.
A sintaxe para declarar uma constante :
const nome_da_constante = valor;
Por exemplo:
const COTADOR = 10
const PI = 3.1415
const LCD_LINHA1 = "PIC Minas" // declara uma constante LCD_LINHA1 com valor PIC Minas
De maneira geral, qualquer tipo de dado pode ser utilizado para definir uma constante.
CDIGOS DE BARRA INVERTIDA
A linguagem C utiliza vrios cdigos chamados de cdigos de barra invertida. Esses cdigos
permitem ao programador inserir alguns caracteres do ASCII que no podem ser inseridos diretamente em
uma constante string.
So diversos os motivos que impedem a insero de determinados caracteres, mas, como
exemplo, podemos citar o retorno de carro (que aquele inserido pela tecla ENTER) e o caractere de aspas
: O primeiro no pode ser inserido diretamente pelo teclado, pois o retorno de carro inserido no cdigofonte, provocando um efeito indesejado. O segundo, mesmo estando facilmente disponvel no teclado, no
pode ser inserido diretamente na string porque o compilador ir interpret-lo como sinal do trmino da
string.
Na Tabela 12 encontram-se os cdigos mais comumente usados:
Cdigo Significado
\b
Retrocesso ("back")
\f
\n
\t
\"
Aspas
\'
Apstrofo
\0
Nulo (0 em decimal)
\\
Barra invertida
\v
Tabulao vertical
\r
Base numrica
Decimal
Octal
Hexadecimal
Binrio
valor1;
valor1 = 50;
// decimal
valor1 = 0x32;
// hexadecimal
valor1 = 062;
// octal
valor1 = 0b110010;
// binrio
4.5.7 OPERADORES
A linguagem C possui uma srie de operadores, que podem ser classificados em: atribuio,
aritmticos, relacionais, lgicos, lgicos bit a bit, de memria e outros.
ATRIBUIO
Em C o operador de atribui o
Por exemplo:
x = 10;
y = x;
Observe que a varivel que receber o valor se posiciona a esquerda do sinal de atribuio,
enquanto o valor, ou a varivel que contm o valor, se posiciona direita do sinal de atribuio.
ARITMTICOS
So utilizados para indicar ao compilador a operao matemtica que dever ser efetuada entre
um ou mais dados. So eles (Tabela 14):
Operador
+
*
/
%
++
--
Ao
Adio
Subtrao ou menos unrio
Multiplicao
Diviso
Resto da diviso inteira
Incremento
Decremento
Pgina 106
RELACIONAIS
So utilizados em testes condicionais para determinar a relao existente entre variveis. Esses
operadores servem para construir expresses condicionais. So eles (Tabela 15):
Operador
Ao
>
Maior que
>=
Maior ou igual a
<
Menor que
<=
Menor ou igual a
==
Igual a
!=
Diferente
Ao
&&
AND (E)
||
OR (OU)
NOT (NO)
Ao
&
AND (E)
OR (OU)
>>
Deslocamento direita
<<
Deslocamento esquerda
c = c<<1;
c = c<<2;
c = c<<3;
c = c>>1`;
PONTEIROS
Ponteiros permitem ao programador acessar diretamente a memria do sistema. Por isso, so
considerados elementos de grande importncia na linguagem C.
Os operadores de ponteiros esto na Tabela 18:
Operador
Ao
Endereo do operando
Contedo do endereo apontado pelo operando
&
*
a.
O operador unrio * utilizado para retornar o contedo da posio de memria endereada pelo
operando que o segue. Vejamos o exemplo:
a = *endereco_a;
Este exemplo far
seja atribudo
com que o valor armazenado no local apontado pela vari vel endereco_a
vari vel a.
OUTROS OPERADORES
Alm de todos esses operadores citados anteriormente, existem outros no to conhecidos em C.
So eles (Tabela 19):
Operador
Ao
Separador de expresses
Separador de estruturas
->
(tipo)
Pgina 108
O operador tern rio ? utilizado para substituir uma expresso condicional baseada no comando
IF.
Sua sintaxe :
Varivel = Expresso1? Expresso2; Expresso3;
O que significa: avalie a expresso 1 se ela for verdadeira atribua varivel a expresso 2; caso
contrrio, atribua a expresso 3. Por exemplo:
int
x, y;
x = 5;
//
ASSOCIAO DE OPERADORES
linguagem C admite associar operadores e montar expresses abreviadas equivalentes a
expresso original. Na Tabela 20, podemos encontrar os tipos de abreviaes admitidas em C.
Expresso Original
x=x+k;
x=x-k;
x=x*k;
x=x/k;
x=x&k;
x=x|k;
x=x^k;
x=x>>k;
x=x<<k;
x=x&k;
Expresso Equivalente
x+=k;
x-=k;
x*=k;
x/=k;
x&=k;
x|=k;
x^=k;
x>>=k;
x<<=k;
x&=k;
Associatividade
esq-dir
dir-esq
esq-dir
esq-dir
esq-dir
esq-dir
esq-dir
esq-dir
esq-dir
esq-dir
esq-dir
esq-dir
dir-esq
dir-esq
esq-dir
Pgina 109
if (condies)
{
comandos;
}
As condies, sero avaliadas, se forem verdadeiras os comandos especificados sero
executados. Caso contrrio no executar os comandos. Estas condies podem ser quaisquer expresses
que possam ser avaliadas como verdadeiro ou falso.
O if pode ser complementado com comando else e sua sintaxe fica:
if(condies)
{
comandos_1;
}
else
{
comandos_2;
}
Caso as condies sejam verdadeiras, executaro os comandos_1, caso contrrio executaro os
comandos_2.
EXEMPLO 01
Pgina 110
COMANDO SWITCH
O comando switch usado para tomada de deciso atravs de comparao de uma varivel com
diversos valores.
Sintaxe do switch:
switch (varivel)
{
case constante_1:
comando_1;
break;
case constante_2:
comando_2;
break;
.
.
.
case constante_n:
comando_n;
break;
default
comando_default;
}
O comando switch aceita apenas valores constantes na condio case. Se a varivel e a constante
possuem o mesmo valor, ento os comandos dessa condio sero executados. Sempre aps a sequncia
de comandos da condio case necessrio usar o comando break. Se no for utilizado, todos os
comandos seguintes ao case especificado sero executados at que encontre uma clusula break ou o
final do bloco switch.
EXEMPLO 02
Pgina 111
COMANDO WHILE
O comando while (em portugus enquanto)
COMANDO FOR
O lao for utilizado para repetir um comando ou um bloco de comandos por diversas vezes. A
sintaxe do for :
for (inicializao ; condio ; incremento)
{
comando1;
comando2;
...
}
programa desvia para o fim do comando for. Se a condio for verdadeira ele executa o comando ou o
bloco de comandos dentro dele, faz o incremento e, novamente, testa a condio. Ou seja, o comando for
repete seus comandos at que a condio se torne falsa.
Pgina 112
Cada um dos trs elementos do comando for possui uma funo distinta conforme descrita
abaixo:
Inicializao: Esta seo conter uma expresso para inicializao da varivel de controle do
lao for.
Condio: Esta seo pode conter a condio a ser avaliada para decidir pela continuidade
ou no do lao de repetio. Enquanto a condio for avaliada como verdadeira, o lao
permanecer em execuo.
Incremento: Esta seo pode conter uma ou mais declaraes para incremento da varivel
de controle do lao. importante comentar que a varivel de controle do comando for pode
ser incrementada de qualquer valor, podendo, inclusive, ser decrementada.
for
EXEMPLO 05
Pgina 113
EXEMPLO 08
Pgina 114
Preceitos:
1- Espaos em branco:
O compilador ignora espaos em branco no seu cdigo, por isto voc pode us-los com
generosidade. Utilize o recuo para refletir a estrutura de blocos do programa e separe com quebra de linhas
partes diferentes do seu cdigo. Caso uma linha de cdigo seja muito grande quebre-a em duas ou mais
linhas. Se estiver chamando uma funo que recebe muitos parmetros ou que os parmetros so
mscaras de bits, definidos anteriormente, quebre-os em linhas e comente seu cdigo. A Figura 4.12 trs
um exemplo que faz uso das dicas mencionadas anteriormente.
Pgina 115
3- Nomes:
Use nomes significativos para funes, variveis, defines, constantes, etc., que reflitam a sua
funo. Exceo a regra: cont ou i, j, k para contadores.
Muitos programadores utilizam nomes em ingls para internacionalizar seus cdigos.
Independente da lngua utilizada existem dicas de como devem ser criados os nomes das variveis,
constantes, funes, etc., de modo a possibilitar a distino entre elas. A seguir so apresentadas algumas
dessas dicas para cada um desses tipos:
A- Constantes e #defines devem ser escritas usando caixa alta (letras maisculas). Caso a palavra seja
composta separe-as com _
Exemplo:
#define LED_VERDE
PORTCbits.RC2
B- Variveis: devem ser escritas usando caixa baixa (letras minsculas). Caso a palavra seja composta, inicie
a segunda palavra com a letra maiscula.
Exemplo:
int numeroVoltas;
C- Funes: Funes devem comear com letra maiscula e as demais devem ser minsculas. Caso o nome
seja composto, inicie a segunda palavra com letra maiscula;
Exemplo:
Em alguns casos interessante o uso de prefixos e sufixos nos nomes das funes. Estes
sugerem o comportamento de entrada ou sada da funo.
Pgina 116
4- Uso de #define.
Use #define em elementos que podero ser modificados posteriormente em seu programa, como,
por exemplo, valores de constantes e portas de entrada e sada (Ver Figura 4.14).
Funes simples, escritas em uma nica linha (inline), podem ser substitudas por defines. Neste
caso, o nome atribudo ao trecho de cdigo, por meio do define, pode ser escrito de forma a se parecer com
uma funo. Por exemplo:
5- Funes:
Sempre que um trecho de cdigo possuir uma funcionalidade especifica, que possa ser
aproveitada em outras partes do seu programa, esse trecho deve ser encapsulado em uma funo. Caso
voc tenha um conjunto de funes correlacionadas, crie uma biblioteca para agrup-las. Por exemplo, as
funes seno, cosseno, tangente, exponencial, logaritmo, esto todas agrupadas em uma biblioteca
chamada math. Deixe sempre seu cdigo organizado utilizando prottipos de funes.
6- Reinveno da Roda:
No reinvente a roda. Antes de comear a escrever uma soluo procure por ela na internet, em
bibliotecas do compilador, em outros projetos de sua empresa ou laboratrio. Gaste seu tempo
desenvolvendo solues novas que ainda no foram feitas.
Pgina 117
7- Ponteiros:
Ponteiros so ferramentas muito poderosas e por isto devem ser utilizados com muita ateno.
Para evitar acessos indesejados a memria de dados do programa, sempre que declarar um ponteiro
inicialize-o com zero.
Exemplo:
int *vectPoint = 0;
8- goto e break:
Apesar de existirem em linguagem C, o uso de goto e breaks deve ser evitado ao mximo em seu
programa.
9- calloc() / malloc()
Sempre verifique se o ponteiro retornado por estas funes diferente de zero. Se o ponteiro for
igual a zero, houve uma falha na alocao da memria e nenhuma operao deve ser feita com o uso deste
ponteiro.
Referncias:
4- Prticas e layouts PICMinas.
5- IBM - http://www.ibm.com/developerworks/aix/library/au-hook_duttaC.html
Pgina 118