Sie sind auf Seite 1von 120

Pgina 1

www.picminas.com.br
Copyright

- Todos os diretos reservados

Sumrio
Captulo 1 Introduo .................................................................................................................................................................. 4
1.1

SURGIMENTO DAS MQUINAS MODERNAS .................................................................................................................. 4

1.2

SURGIMENTO DOS PROCESSADORES E DOS COMPUTADORES PESSOAIS ....................................................................... 6

1.3

SISTEMAS MICROPROCESSADOS................................................................................................................................... 9

1.3.1

UNIDADE CENTRAL DE PROCESSAMENTO (CPU) ..................................................................................................... 10

1.3.2

MEMRIAS ........................................................................................................................................................... 11

1.3.3

REGISTRADORES.................................................................................................................................................... 13

1.3.4

REGISTRADORES DE FUNO ESPECIAL (SFR) ......................................................................................................... 14

1.3.5

PORTAS I/O (ENTRADA/SADA)............................................................................................................................... 14

1.3.6

BARRAMENTOS ..................................................................................................................................................... 15

1.3.7

INTERRUPES...................................................................................................................................................... 16

1.4

MICROCONTROLADORES............................................................................................................................................ 17

1.5

LINGUAGEM DE MQUINA......................................................................................................................................... 19

1.6

REPRESENTAO NUMRICA ..................................................................................................................................... 20

1.7

CONVERSES DE SISTEMAS NUMRICOS .................................................................................................................... 21

1.7.1

CONVERSO BINRIA PARA DECIMAL .................................................................................................................... 21

1.7.2

CONVERSO HEXADECIMAL PARA DECIMAL........................................................................................................... 22

1.7.3

CONVERSO HEXADECIMAL PARA BINRIA ............................................................................................................ 22

1.8

O BIT.......................................................................................................................................................................... 23

1.9

O BYTE ....................................................................................................................................................................... 24

1.10

PORTAS LGICAS ....................................................................................................................................................... 24

1.10.1

PORTA AND ...................................................................................................................................................... 25

1.10.2

PORTA OR......................................................................................................................................................... 25

1.10.3

PORTA NOT ...................................................................................................................................................... 26

1.10.4

PORTA XOR (OU-EXCLUSIVA) ............................................................................................................................. 26

Captulo 2 Arquitetura do PIC e Kit de Desenvolvimento ............................................................................................................. 28


2.1

PIC18F4550................................................................................................................................................................ 30

2.1.1

ESTRUTURA INTERNA ............................................................................................................................................ 37

2.1.2

ORGANIZAO DA MEMRIA ................................................................................................................................ 39

2.1.3

ARQUITETURA HARVARD ....................................................................................................................................... 40

2.1.4

MEMRIA DE PROGRAMA (FLASH) ........................................................................................................................ 41

2.1.5

MEMRIA RAM DE DADOS .................................................................................................................................... 42

2.1.6

REGISTRADORES DE FUNES ESPECIAIS NO PIC18F4550 ....................................................................................... 43

2.1.7

MEMRIA EEPROM DE DADOS .............................................................................................................................. 44

2.2

KIT DE DESENVOLVIMENTO DO PIC18F4550 ............................................................................................................... 44

2.2.1.

CIRCUITOS ATUADORES .................................................................................................................................... 45

2.2.2.

CHAVES/TECLAS................................................................................................................................................ 46

2.2.3.

CIRCUITOS SENSORES ....................................................................................................................................... 47

Pgina 2

www.picminas.com.br
Copyright

- Todos os diretos reservados

2.2.4.

DISPLAYS .......................................................................................................................................................... 48

2.2.5.

CIRCUITOS DE GRAVAO IN-CIRCUIT (ICSP) ..................................................................................................... 50

2.3

DETALHE DE CADA COMPONENTE NO KIT DE DESENVOLVIMENTO .............................................................................. 51

Captulo 3 Instalao dos Programas .......................................................................................................................................... 52


3.1

AMBIENTE DE DESENVOLVIMENTO MPLAB .............................................................................................................. 52

3.2

COMPILADOR C18 STUDENT EDITION ......................................................................................................................... 55

3.2.1.

RPIDO TOUR NOS DIRETRIOS ........................................................................................................................ 61

3.3

APLICAES DA MICROCHIP (Microchip Application Libraries) .................................................................................... 61

3.4

GRAVAO DE UM FIRMWARE NO PIC UTILIZANDO UM MODULO DE GRAVAO EXTERNO (ICD2 MICROCHIP) .......... 65

3.5

FIRMWARE BOOTLOADER .......................................................................................................................................... 70

3.6

CONEXO DO KIT DE DESENVOLVIMENTO NO COMPUTADOR..................................................................................... 72

3.7

GRAVAO DE UM FIRMWARE NO KIT PICMINAS UTILIZANDO O PROGRAMA PICDEM FS USB .................................... 75

Captulo 4 Programao de Microcontroladores ......................................................................................................................... 79


4.1

PRINCPIOS DE PROGRAMAO ................................................................................................................................. 79

4.1.1

ALGORITMOS ESTRUTURADOS............................................................................................................................... 80

4.1.2

FLUXOGRAMAS ..................................................................................................................................................... 81

4.1.3

VARIVEIS E DADOS .............................................................................................................................................. 82

4.1.4

OPERADORES ........................................................................................................................................................ 83

4.2

CARACTERSTICAS DO COMPILADOR C18 .................................................................................................................... 84

4.2.1

TIPOS DE DADOS E LIMITES.................................................................................................................................... 84

4.2.2

INCLUIR CAMINHO DE PROCURA DE ARQUIVOS ..................................................................................................... 86

4.2.3

PRAGMAS ............................................................................................................................................................. 86

4.2.4

ARQUIVOS DE REGISTRADORES ESPECFICOS DO MICROCONTROLADOR................................................................. 87

4.2.5

CONFIGURAO DE PALAVRAS .............................................................................................................................. 88

4.2.6

FERRAMENTAS DE LINGUAGEM ............................................................................................................................. 89

4.3

CRIANDO PROJETOS NO MPLAB ................................................................................................................................. 90

4.4

LINGUAGEM DE PROGRAMAO C............................................................................................................................. 97

4.4.1

PRIMEIROS PASSOS ............................................................................................................................................... 98

4.4.2

PALAVRAS RESERVADAS ...................................................................................................................................... 105

4.4.3

IDENTIFICADORES................................................................................................................................................ 105

4.4.4

COMANDOS E FUNES IMPORTANTES ............................................................................................................... 106

4.4.5

VARIVEIS E TIPOS DE DADOS.............................................................................................................................. 113

4.4.6

CONSTANTES....................................................................................................................................................... 114

4.4.7

OPERADORES ...................................................................................................................................................... 115

4.4.8

REDEFINIDO TIPOS DE DADOS.............................................................................................................................. 120

Pgina 3

www.picminas.com.br
Copyright

- Todos os diretos reservados

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.

1.1 SURGIMENTO DAS MQUINAS MODERNAS


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 e Fe ito antigamente criaria um conceito de mquina que muitos
sculos depois daria origem a sistemas extremamente complexos conhecidos como
MICROPROCESSADORES.

Figura 1.1 - Figura do baco.

Outros exemplos de mquinas utilizadas para a realizao de clculos matemticos foram: A


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 4

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 1.2 - A Calculadora de Pascal e a Mquina Diferencial de Babbage

Outro marco no desenvolvimento deste tipo de mquinas deu-se quando o homem passou a
manipular a tenso e a corrente eltrica. Neste momento, os dispositivos que antes eram mecnicos
passaram a ser eltricos, o que reduzia muito o seu tamanho, facilitando sua construo e seu
aperfeioamento. Esta evoluo tornou possvel o surgimento dos primeiros computadores, sistemas esses
inconcebveis com dispositivos mecnicos. Mesmo assim o tamanho destes computadores eram
gigantescos devido ao acmulo de atividades e tarefas que eles possuam se comparados aos dispositivos
mecnicos. O ENIAC foi o primeiro computador digital eletrnico valvulado. Foi criado em 1946, e tinha as
seguintes caractersticas: pesava 30 toneladas, media 5,5m de altura, 25m de comprimento e ocupava uma
rea de 180m2 de rea. Foi construdo sobre estruturas metlicas e contava com 70 mil resistores e
aproximadamente 18.000 vlvulas a vcuo ocupando a rea de um ginsio desportivo. Essa mquina no
tinha sistema operacional e o funcionamento era parecido com uma calculadora simples de hoje. Era
operado manualmente e efetuava os clculos a partir de teclas que faziam interao direta com o Hardware.
A Figura 1.3 trs um desenho do ENIAC sendo operado.

Figura 1.3 - Operao de um ENIAC.

Com o surgimento da microeletrnica foram desenvolvidos os TRANSISTORES que substituram


as vlvulas dos computadores antigos, que possuam at 10 cm de comprimento cada uma (ver Figura 1.4),
ao passo que os transistores atuais, presentes como principal elemento na concepo dos
microprocessadores, ocupam poucas unidades de micrometros quadrados (m2), o que possibilitou inserir
dentro de um CHIP de processador (Figura 1.5) funcionalidades que no caberia em centenas de prdios
em um computador valvulado.
Pgina 5

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 1.5 - Processador Pentium 4.


Figura 1.4 - Vlvula dos Computadores Antigos.

O mundo tecnolgico em que vivemos hoje, dominado por dispositivos e sistemas


microprocessados e microcontrolados, teve origem no desenvolvimento da tecnologia de circuitos
integrados (Microeletrnica Digital). Esta evoluo possibilitou incorporar centenas de milhares de
transistores (elemento bsico de qualquer sistema digital e que substituram as antigas vlvulas eltricas
2
dos primeiros computadores) em um nico CHIP com dimenses de alguns centmetros quadrados (cm ).
Essa foi a condio prvia para a fabricao dos MICROprocessadores (constitudos basicamente de
transistores com dimenses micromtricas), que possibilitou o surgimento dos primeiros computadores
pessoais (PC Personal Computer), onde alm do microprocessador, foram adicionados perifricos
externos, tais como, memria, linhas de entrada/sada e temporizadores. Com a contnua evoluo da
tecnologia dos circuitos integrados, deu-se origem a um sistema que em um nico CHIP embarcava tanto
os elementos bsicos necessrios para o funcionamento de um computador (microprocessador, memria e
linhas de entrada/sada), quanto outros dispositivos perifricos como, por exemplo, conversores A/D e D/A1,
interfaces de comunicao paralela e serial, sistemas de interrupo entre outros, dando origem a uma
nova era de sistemas microprocessados. Esse novo CHIP, que inicialmente era conhecido como
MICROcomputador, originou os MICROcontroladores da atualidade. Mas antes de nos aprofundarmos
neste assunto, vamos entender, por meio de fatos histricos, como surgiram os microprocessadores e os
computadores modernos.

1.2 SURGIMENTO DOS PROCESSADORES E DOS COMPUTADORES


PESSOAIS
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 idia fundamentalmente diferente do
pedido da BUSICOM. A sua idia 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 Circuito Eletrnico utilizado para converter sinais de tenso ou de corrente eltrica
(sinais analgicos) em nmeros binrios (sinais digitais). Conversor D/A Converte nmeros binrios em
sinais de tenso ou corrente eltrica.
Pgina 6

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 1.6 - Computador PDP8.

Depois de um tempo, embora os engenheiros japoneses tivessem tentando encontrar uma


soluo mais fcil, a idia de Marcian ganhou fora e o primeiro microprocessador nasceu. Esse
microprocessador foi batizado de 4004 (ver Figura 1.7) e era capaz de tratar apenas 4-bits em uma
velocidade de 6.000 operaes por segundo, ou 6kHz (Os processadores atuais possuem 64-bits e
trabalham com at 3,33 Bilhes de operaes por segundo 3.33GHz, ou seja, quase 1 milho de vezes
mais rpido).

Figura 1.7 - Primeiro Processador da Histria (4004).

Algum tempo depois, uma empresa chamada CTC solicitou Intel e Texas Instruments que
fabricassem um microprocessador de 8-bits para ser utilizado em seus terminais de computador. Devido aos
altos custos e sem saber o valor do que estava desenvolvendo, a CTC desistiu do projeto. No entanto, a
Intel e a Texas resolveram continuar custeando o projeto e, em abril de 1972, o primeiro processador de 8bits, chamado de 8008, surgiu no mercado. Ele possua uma memria de incrveis 16k-bits (que para poca
era algo inovador), um conjunto de 45 instrues diferentes para sua programao (eram operaes lgicas
como AND, OR e NOT, e aritmticas como ADD e SUB) e uma velocidade de at 300.000 instrues por
segundo (300 kHz). Este processador foi a base de todos os microprocessadores modernos de hoje e deu
origem, em abril de 1974, ao microprocessador 8080 que tambm era de 8-bits, mas possua 64kb de
memria, 75 instrues para programao e um preo inicial de US$ 360,00 o que possibilitou o surgimento
de computadores pessoais com valores acessveis. A conseqncia disso foi a inesperada popularizao da
idia e crescimento exponencial das vendas. Para se ter idia a prospeco mais otimista da Intel era da
venda de 3.000 microprocessadores no primeiro ano de lanamento, mas as vendas superaram as dezenas
de milhares, baixando ainda mais o valor desses processadores e, consequentemente, dos computadores.
Outra empresa americana, a Motorola, notou rapidamente o que estava acontecendo e lanou no
mercado um novo microprocessador de 8-bits, o 6800. O construtor chefe foi Chuck Peddle e alm do
microprocessador propriamente dito, a Motorola foi a primeira companhia a fabricar outros perifricos como
os 6820 e 6850, com outras funcionalidades que os microprocessadores no realizavam. Muitas outras
companhias perceberam a grande importncia dos microprocessadores e comearam a produzir seus
prprios projetos. Chuck Peddle deixou a Motorola para entrar para a MOS Technology e continuar
trabalhando intensivamente no desenvolvimento dos microprocessadores.
Pgina 7

www.picminas.com.br
Copyright

- Todos os diretos reservados

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 o 8080 e o 6800 a US$ 179 cada. Para responder a este competidor, tanto a Intel como 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 8bits com 56 instrues e uma capacidade de endereamento de 64kbytes de memria. Devido ao seu baixo
custo, o 6502 tornou-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 idia 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 havia mais grandes melhorias a introduzir 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 8

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 1.8 - Evoluo Histrica do Microprocessadores.

1.3 SISTEMAS MICROPROCESSADOS


Como visto, os microprocessadores so mquinas eltricas onde podemos armazenar instrues
lgicas, aritmticas e de tomada de deciso permitindo que o mesmo funcione de vrias formas diferentes
dependendo das instrues (programa) que foram armazenadas em sua memria. Em sistemas
microprocessados, o microprocessador geralmente conhecido como CPU (Central Processing Unit
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 9

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 1.9 - Elementos Internos de um Microprocessador Bsico.

1.3.1 UNIDADE CENTRAL DE PROCESSAMENTO (CPU)


A CPU (Central Processing Unit em ingls, ou Unidade Central de Processamento), tambm
conhecida como processador ou ainda microprocessador, que processa as instrues contidas no
programa. Na maioria das CPUs, essa tarefa dividida entre a unidade de controle (UC) que dirige o fluxo
do programa e uma ou mais unidades lgicas e aritmticas (ULA) que executam operaes de acordo
com as instrues recebidas pelo programa. (Figura 1.9)
A funo da CPU reconhecer um conjunto bsico de instrues utilizadas para escrever
programas que comandam o seu funcionamento, ou seja, que controlam toda a operao e funcionamento
do computador ou de um sistema microprocessado. Ela composta de vrias unidades menores, das quais
as mais importantes so: (Figura 1.10)
Decodificador de Instruo: o circuito que reconhece instrues de programa, e executa
outros circuitos com base nessas instrues. O tamanho do Conjunto de Instrues
(Instructions Set) refere-se a quantidade de instrues que esse circuito capaz de realizar
e diferente para cada famlia de microcontrolador.
Unidade Lgica e Aritmtica: Realiza todas as operaes matemticas (aritmticas) e
lgicas sobre os dados do programa.
Registradores: Um registrador ou clula de memria um circuito eletrnico capaz de
armazenar uma pequena quantidade de bytes (geralmente 1 byte), porm muito rpido. O
conjunto de registradores pode ao no estar contido na CPU e tem como funo o
armazenamento temporrio dos dados e as instrues que esto em processamento.

Figura 1.10 - CPU e suas unidades.

Pgina 10

www.picminas.com.br
Copyright

- Todos os diretos reservados

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 a forma como os dados so
armazenados, neste caso temos 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)

Figura 1.11 - Foto com diversos tipos de memrias RAM.

O nome dinmica referente tecnologia utilizada para armazenar programas e dados e no


forma de acess-los. De modo simplificado, ela funciona como uma bateria que deve ser recarregada
sempre que apresentar carga insuficiente para alimentar o equipamento.
Todas as vezes que a CPU (unidade de processamento central) acessar a memria, para escrita
ou para leitura, cada clula dessa memria atualizada. Se ela tem 1 (um) lgico armazenado, sua
bateria ser recarregada; se ela tem 0 (zero) lgico, a bateria ser descarregada. Este procedimento
chamado de refresco de memria, em ingls, refresh.
A memria esttica no necessita ser analisada ou recarregada a cada momento. Fabricada com
circuitos eletrnicos conhecidos como latch, guardam a informao por todo o tempo em que estiver a
receber alimentao.

Pgina 11

www.picminas.com.br
Copyright

- Todos os diretos reservados

Memrias No-Volteis: So aquelas que guardam todas as informaes mesmo quando no


estiverem a receber alimentao. Como exemplos, citam-se as memrias conhecidas por ROM e
FLASH, bem como os dispositivos de armazenamento em massa, disco rgido, CDs e disquetes. As
memrias somente para leitura, do tipo ROM (sigla de Read Only Memory), permitem o acesso
aleatrio e so conhecidas pelo fato de o usurio no poder alterar o seu contedo. Para gravar
uma memria deste tipo so necessrios equipamentos especficos. Dentre as memrias do tipo
ROM destacam-se as seguintes:
SIGLA
ROM
PROM

NOME

TECNOLOGIA

Read Only Memory (memria


somente de leitura).
Programable Read Only Memory
(memria programvel somente de
leitura).

Gravada na fbrica uma nica vez.


Gravada pelo usurio uma nica vez.

EPROM

Erasable Programable Read Only


Memory (memria programvel e
apagvel somente de leitura).

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).

EEPROM

Electrically Erasable Programable


Read Only Memory (memria
programvel e apagvel
eletronicamente somente de
leitura).

Pode ser gravada, apagada ou regravada


utilizando um equipamento que fornece as
voltagens adequadas em cada pino.

Figura 1.12 - Memria EPROM Os dados so apagados com raios ultravioleta.

O tipo de memria conhecido como FLASH o tipo mais moderno dentre os apresentados aqui,
mas uma variao do tipo EEPROM. Tornaram-se muito populares por dois motivos: a utilizao de
dispositivos de armazenamento removveis como os chamados Pen Drives, a aplicao em equipamentos
de som que reproduzem msica no formato MP3 e os cartes de memria das cmeras digitais (Figura
1.13). Os dados armazenados neste tipo de memria permanecem ali sem a necessidade de alimentao.
Sua gravao feita em geral atravs da porta USB.

Figura 1.13 - Tipos de dispositivos que utilizam memria FLASH para armazenamento de dados.

Pgina 12

www.picminas.com.br
Copyright

- Todos os diretos reservados

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 armazenada 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 novolteis, 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 13

www.picminas.com.br
Copyright

- Todos os diretos reservados

1.3.4 REGISTRADORES DE FUNO ESPECIAL (SFR)


Alm dos registradores que no possuem nenhuma funo especial ou pr-determinada, todo
microprocessador ou microcontrolador possui um conjunto de registradores cujas funes so prdeterminadas pelo fabricante. Seus bits so conectados (literalmente) a circuitos internos, tais como:
temporizadores (timers), conversores A/D e osciladores (Figura 1.15). Isso significa que eles esto
diretamente no comando de operaes de hardware, sem precisar da interveno da CPU, ou seja, para
modificar alguma caracterstica de hardware que est associada a um SFR, basta modificar os bits desse
registrador. No caso dos registradores de 8-bits, cada SFR funcionar como 8 chaves (liga/desliga) que
comandam alguns pequenos circuitos dentro do microcontrolador. Um exemplo disso seriam os circuitos
que determinam (controlam) se alguns pinos de um microcontrolador funcionaram como pinos de entrada
de sinal ou pinos de sada de sinal. No PIC18F4550 este circuito est associado a um SFR chamado TRIS.
Quando um dos bits do TRIS for ajustado para lgica 1 (esse ajuste feito pelo projetista por meio do
programa), a pino do PIC que estiver associado quele bit funcionar como Entrada (Input). J quando o bit
for ajustado para a lgica 0, o pino passar a funcionar como Sada (Output). Ou seja, o registrador TRIS
interfere diretamente no funcionamento do hardware do microcontrolador.

Figura 1.15 - Registradores com funes especiais.

Dentro os SFR, alm do registrador TRIS, podemos citar:


STATUS: utilizado para armazenamento de flags matemticos e de estado da CPU, alm
dos bits de seleo do banco de memria RAM.
INTCON: utilizado para controle de interrupes.
OPTON_REG: utilizado para configurar o funcionamento de alguns perifricos internos ao
PIC.
PORT: utilizado para a leitura ou escrita nos pinos do PIC (Seco 1.3.5).
TRIS: utilizado para configurar os pinos das portas como entrada ou sada (input/output).
Nos PICs, tanto os SFR quanto os GPR so muitas vezes referenciados pela letra f. Isso
decorre da nomenclatura utilizada pela Microchip: file registers.
importante tambm sabermos que os registradores f (SFR e GPR) so mapeados dentro da
memria RAM dos PICs. Desta forma, o acesso aos registradores feito pelo seu endereo de localizao
na memria.

1.3.5 PORTAS I/O (ENTRADA/SADA)


por meio destas portas que o processador interage com o meio exterior. onde esto
conectados os Perifricos dos sistemas microprocessados (figura 1.9). So exemplos de perifricos:
impressoras, mouses, sensores, teclados, displays de LCD, etc.
Os microcontroladores possuem um ou mais registradores de funes especiais chamados PORT
conectados aos seus pinos I/O (pinos de Entrada ou Sada). Esses pinos so chamados de I/O porque,
como vimos anteriormente, eles podem ser configurados tanto como entradas quanto como sadas,
Pgina 14

www.picminas.com.br
Copyright

- Todos os diretos reservados

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.).

Figura 1.16 - Portas do microcontrolador.

Uma das especificaes mais importantes dos pinos I/O a corrente mxima com que eles podem
operar. Para a maioria dos microcontroladores, a corrente fornecida por um pino suficiente para acender
um LED2 ou outro dispositivo similar de baixa corrente (10/20mA). No entanto, se um microcontrolador
possuir muitos pinos I/O, e todos eles estiverem ativos, a corrente mxima em cada pino ser menor. Isso
acontece porque alm de cada pino especificar a corrente mxima com a qual ele pode trabalhar, o
microcontrolador de modo geral tambm tem um limite de corrente de operao. Desta forma, se vrios
pinos forem acionados simultaneamente, esse limite no poder ser ultrapassado, fazendo com que o limite
de cada pino diminua. importantssimo verificar no datasheet do microcontrolador, que est sendo
utilizado, qual o valor mximo de corrente por pino I/O (operando isoladamente) e por conjunto de pinos.

1.3.6 BARRAMENTOS
Em sistemas microprocessados, o barramento um conjunto de linhas de comunicao que
permitem a interligao entre dispositivos, como a CPU, a memria e outros perifricos. Em um
computador, esses barramentos so as trilhas do circuito impresso da Placa Me Mother Board (Figura
1.17 - Placa Me.Figura 1.17).

Figura 1.17 - Placa Me.


2

LED Light Emitting Diode, o que significa Diodo Emissor de Luz. um componente eletrnico
muito utilizado como luz de sinalizao que acende com um valor de corrente eltrica bem baixa.
Pgina 15

www.picminas.com.br
Copyright

- Todos os diretos reservados

Os barramentos podem ser divididos em trs conjuntos:


Barramento de dados: onde trafegam os dados dos programas;
Barramento de endereos: onde trafegam os endereos;
Barramento de controle: sinais de controle que sincronizam as duas anteriores.
O desempenho do barramento medido pela sua largura de banda (quantidade de bits que
podem ser transmitidos ao mesmo tempo), geralmente potncias de 2 (8-bits, 16-bits, 32-bits, 64-bits, etc.).
E tambm pela velocidade da transmisso medida em bps (bits por segundo), por exemplo,10 bps, 160
Kbps, 100 Mbps, 1 Gbps etc.

1.3.7 INTERRUPES
Um conceito importante a ser abordado quando se fala de sistemas microprocessados so as
interrupes. So sinais emitidos por um ou mais dispositivos perifricos que tipicamente resultam em uma
troca de contexto, isso , o processador pra de atender a tarefa que estava tratando e atende ao
dispositivo que fez o pedido de interrupo (IRQ Interrupt Request) (SILBERSCHATZ, 2004).
Alguns processadores oferecem uma maneira de iniciar rotinas de software em resposta a eventos
eletrnicos assncronos. Esses eventos so sinalizados para o processador atravs de IRQs. Segundo
SILBERSCHATZ, 2004, o processamento da interrupo uma troca de contexto entre a rotina corrente e
uma rotina dedicada a tratar a interrupo. Essa ltima chamada rotina de servio de interrupo, ou
tratador de interrupo (interrupt handler). Os endereos dessas rotinas so chamados vetores de
interrupo e so armazenados, geralmente, em uma tabela na memria RAM, permitindo sua modificao
caso seja necessrio. A Figura 1.18 mostra, esquematicamente, uma interrupo sendo atendida.
(MARTINS, 2008)

Figura 1.18 - Atendimento de interrupo.

Segundo TANEMBAUM, 2007, Interrupes foram concebidas para evitar o desperdcio de tempo
computacional em loops de software (chamados polling loops) esperando eventos que sero disparados por
dispositivos de modo assncrono. Ao invs do processador ficar esperando o evento acontecer, ele torna-se
capaz de realizar outras tarefas enquanto os eventos esto pendentes. A interrupo avisa ao processador
quando o evento ocorreu, permitindo uma acomodao eficiente dos dispositivos mais lentos. (MARTINS,
2008)

Pgina 16

www.picminas.com.br
Copyright

- Todos os diretos reservados

1.4 MICROCONTROLADORES
Com o passar do tempo comearam a surgir dispositivos eletrnicos com funcionalidades
especficas, como as mquinas de lavar, os controles remotos, os celulares, os mini-games (vdeo games
de bolso), sistemas de controle de alguns processos industriais, entre outros. A utilizao de um
microprocessador nesses dispositivos seria como utilizar um canho para matar uma formiga no quesito
velocidade de processamento. Desta forma, surgiu a necessidade de um microprocessador com
funcionalidades especficas e com capacidade de processamento bem inferior aos microprocessadores
utilizados em computadores. Esses novos microprocessadores inicialmente ficaram conhecidos como
microcomputadores ou computadores dedicados. A evoluo dos microcomputadores, onde foram
incorporados vrios perifricos (funcionalidades de outros CHIPs) em um mesmo CHIP, deu origem aos
MICROCONTROLADORES. De modo geral, um microcontrolador possui o mesmo princpio de
funcionamento que um microprocessador, s que diferente dele, o microcontrolador no necessita de
nenhum dispositivo (CHIP) externo para funcionar. Na verdade, podemos pensar em um microcontrolador
como um CHIP que possui alm do microprocessador, diversos outros dispositivos necessrios para o
funcionamento de um sistema computadorizado. A Figura 1.19 mostra vrios CHIPs, com funcionalidades
diversas, sendo incorporados em um nico CHIP, formando assim o microcontrolador. Os primeiros
microcontroladores foram criados no final da dcada de 70 e atualmente seu uso amplamente difundido.
Estima-se que em um lar comum de um pas desenvolvido seja possvel encontrar at 24
microcontroladores em funcionamento nos diversos aparelhos eletroeletrnicos.

Figura 1.19 - Desenho esquemtico de um Microcontrolador.

Apesar de os microcontroladores possurem um desempenho bem inferior aos


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,
forno de microondas, dispositivos perifricos de computadores, pequenos sistemas de controle, brinquedos,
etc.
Pgina 17

www.picminas.com.br
Copyright

- Todos os diretos reservados

A Figura 1.20 mostra o diagrama de blocos da arquitetura interna de um microcontrolador padro.

Figura 1.20 - Diagrama de blocos geral de um microcontrolador.

Os microcontroladores dispem de um oscilador que gera os pulsos que sincronizam todas as


operaes internas. O oscilador pode ser do tipo RC, embora geralmente prefere-se usar um cristal de
quartzo (XTAL) devido sua grande estabilidade de frequncia. A velocidade de execuo da instrues do
programa est diretamente relacionada com a frequncia do oscilador do microcontrolador. (VALDS,
PALLAS, 2007)
Igual a um computador, a CPU o crebro do microcontrolador. Esta unidade traz as instrues
do programa, uma a uma, desde a memria onde esto armazenadas, as interpreta (decodifica) e faz com
que elas sejam executadas. Na CPU se incluem os circuitos da ULA (Unidade Lgica Aritmtica) para
realizar operaes aritmticas e lgicas elementares com os dados binrios. (VALDS, PALLAS, 2007)
A CPU de um microcontrolador dispe de diferentes registros, alguns de propsito geral e outros
de propsitos especficos. Entre estes ltimos esto os Registradores de Instrues, o Registrador Work, o
registrador STATUS, o contador de programa, o registrador de endereo de dados e a pilha (STACK).
O Registrador de Instrues armazena a instruo que est sendo executada pela CPU. O
Registrador de Instrues no visto pelo programador.
O Registrador Work o registrador associado s operaes aritmticas e lgicas que se podem
realizar na ULA. Em qualquer operao, um dos dados deve estar no registrador Work e o resultado obtido
armazenado nele.
O registrador STATUS agrupa os bits indicadores das caractersticas do resultado das operaes
aritmticas e lgicas realizadas na ULA. Entre estes indicadores est o sinal do resultado (positivo ou
negativo), se o resultado zero, se houve estouro de registradores, o tipo de paridade do resultado e
outros. (PEREIRA, 2008)
O Contador de Programa o registrador da CPU onde armazenam os endereamentos das
instrues. Ele responsvel pelo controle da sequncia de instrues, cada vez que a CPU busca uma
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
Pgina 18

www.picminas.com.br
Copyright

- Todos os diretos reservados

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 as instrues e as variveis do
programa. Em um microcontrolador sempre h dois tipos de memria: a memria RAM e a memria FLASH.
A RAM uma memria voltil de leitura e escrita, que perde a informao armazenada quando no h
alimentao de energia. A memria FLASH uma memria no voltil e utilizada para armazenar
permanentemente o programa que deve ser executado pelo microcontrolador e a memria RAM armazena
temporariamente os dados com os quais a CPU do microcontrolador est trabalhando (executando). 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 muito superior a quantidade de
memria RAM. Isso obedece a duas razes: a primeira que a grande maioria das aplicaes requerem
programa que usam poucos dados, ento basta uma memria RAM em que se possa armazenar algumas
dezenas de dados.
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, timers, etc.), quanto portas analgicas
associadas aos conversores A/D e D/A. O Watchdog Timer um recurso disponvel em muitos
microcontroladores, ele dispara um reset ao sistema se o programa principal apresentar alguma falha.
Um requisito geral que um microcontrolador pode ser utilizado em um nmero grande de
aplicaes e que tenha muitos recursos de entrada e sada. Esse requisito est relacionado com o nmero
de terminais (pinos) do circuito integrado (CHIP).

1.5 LINGUAGEM DE MQUINA


Como visto, os microprocessadores so mquinas eltricas onde podemos armazenas instrues
(programas) permitindo que o mesmo funcione de vrias formas diferentes dependendo do que for
armazenado em sua memria. Mas que instrues so essas? Como um microprocessador capaz de
entender o que o homem escreve? Para respondermos estas perguntas, primeiro devemos conhecer a
lngua falada pelos sistemas microprocessados, conhecida como linguagem binria ou cdigo binrio.
O cdigo binrio composto de dois algarismos apenas o 0 e o 1. Na prtica, dentro de um
processador (mquina eltrica), 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 vlvula aberta equivalia a lgica 0 e
vlvula fechada a lgica 1.
Apesar de possuir apenas dois algarismos, possvel representarmos qualquer nmero, letra e
comando com as palavras binrias (palavras constitudas de 0s e 1s), tendo como limitante apenas o
nmero de bits, pois quanto maior for o nmero de bits que a palavra binria possuir, maior ser o nmero
de combinaes binrias diferentes. Por exemplo:
- Com 2-bits ns s podemos fazer 4 comandos diferentes: 00, 01, 10 e 11;
- J com 3-bits possvel fazer at 8 comandos diferentes: 000, 001, 010, 011, 100, 101, 110 e
111.
Desta forma, para uma palavra de n-bits teremos 2n combinaes diferentes que o sistema
microprocessado poder utilizar para representar nmeros e/ou comandos.

Pgina 19

www.picminas.com.br
Copyright

- Todos os diretos reservados

1.6 REPRESENTAO NUMRICA


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.

Figura 1.21 - Representao de um nmero na base-10.

O que aconteceria se existissem apenas dois algarismos (0 e 1) para representarmos todos os


nmeros? Isso seria possvel? Claro que sim! A nica coisa que iria mudar seria a representao desses
nmeros, ou seja, a representao numrica, que nesse caso s poderia utilizar dois algarismos diferentes,
o 0 e o 1. Fazendo uma analogia ao sistema decimal (Base 10) que possui 10 algarismos diferentes (0,
1, 2,..., 9), quando se usa apenas dois algarismos passamos a trabalhar com o Sistema Binrio de
Nmeros, ou Base-2. Para descobrirmos como so representados os nmeros na Base-2, basta utilizarmos
a mesma tcnica adotada na Figura 1.21, Veja o exemplo da Erro! Fonte de referncia no encontrada..

Figura 1.22 - Transformao de um nmero na base-2 para base-10.

Pgina 20

www.picminas.com.br
Copyright

- Todos os diretos reservados

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 com dois algarismo, permitindo que os
sistema 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)

Figura 1.23 - Comparao de um nmero na base-16 e na base-2.

Observe na Figura 1.23 que um mesmo nmero com 8 algarismos no sistema binrio ter apenas
2 algarismos no sistema hexadecimal. Agora imagine um cdigo de 1.000 linhas escrito utilizando o sistema
binrio. Ele ficaria muito mais simples e compacto se fosse escrito em hexadecimal. Desta forma,
convencionou-se que todo cdigo de mquina seria escrito em hexadecimal para facilitar o entendimento.

1.7 CONVERSES DE SISTEMAS NUMRICOS


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 srie 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 a soma dos valores decimais dos dgitos binrios, veja o exemplo mostrado na
Figura 1.24:
Pgina 21

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 1.24 - Converso de um nmero na base-2 para base-10.

importante notarmos que para nmeros decimais de 0 a 3, so necessrios apenas dois dgitos
binrios para sua representao. Para valores superiores, dgitos extras devem ser acrescentados. Assim,
para nmeros de 0 a 7 so necessrios 3 dgitos, 0 a 15 so necessrios 4 dgitos, 0 a 31 5 dgitos, etc.
Desta forma, para sabermos qual o maior nmero decimal que podemos representar com um nmero
binrio de n dgitos, basta aplicarmos a seguinte frmula: 2n 1, veja os exemplos:
Com 2 dgitos => 22 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);
Com 3 dgitos => 23 1 = 7;
4

Com 4 dgitos => 2 1 = 15;


5

Com 5 dgitos => 2 1 = 31.


Assim, usando 4 dgitos binrios possvel representar nmeros decimais de 0 a 15, incluindo
estes dois dgitos, o que equivale a 16 valores diferentes no total.
O microcontrolador PIC18F4550, foco de nosso curso, trabalha com palavras binrias de 16
dgitos, desta forma, possvel representar nmeros decimais de 0 a 65.535 ou 65.536 valores diferentes
no total.

1.7.2 CONVERSO HEXADECIMAL PARA DECIMAL


Para proceder converso de um nmero hexadecimal para decimal, cada dgito hexadecimal
deve ser multiplicado pelo nmero 16 elevado ao valor da posio do dgito. (Figura 1.25)

Figura 1.25 - Converso de Hexadecimal para decimal.

1.7.3 CONVERSO HEXADECIMAL PARA BINRIA


Esta a converso mais simples que existe, no necessrio efetuar qualquer clculo. Os dgitos
hexadecimais so simplesmente substitudos pelos quatro dgitos binrios adequados. O valor mximo que
um dgito hexadecimal (dgito F) pode representar o nmero decimal 15. Desta forma, so necessrios
quatro dgitos binrios para representar um dgito hexadecimal qualquer. (Figura 1.26)

Figura 1.26 - Converso de binrio para hexadecimal.

Pgina 22

www.picminas.com.br
Copyright

- Todos os diretos reservados

A Tabela 1 contm os valores dos nmeros 0-255 em trs diferentes sistemas de numerao.

Tabela 1 - Representao de nmeros nas trs bases.

O sistema de numerao hexadecimal, juntamente com os sistemas binrio e decimal, so


considerados os mais importantes para o desenvolvimento do mundo computadorizado que vivemos. fcil
fazer converso de qualquer nmero hexadecimal para binrio e tambm fcil de lembrar. No entanto,
essas converses podem causar confuso. Por exemplo, o que significa a afirmao: "Existem 110 produtos
na linha de montagem"? Vai depender se estamos falando de um nmero binrio, decimal ou hexadecimal,
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
Teoricamente falando, um bit a unidade bsica de informao em sistemas microprocessados
(computacionais). Na prtica, um bit um dgito de uma palavra binria. A exemplo do sistema decimal de
numerao, onde um dgito em um nmero no tem o mesmo valor (por exemplo, os dgitos no nmero 333
so os mesmos, mas possuem valores diferentes, onde o primeiro 3 representa trs unidades o segundo
dgito 3 representa trinta unidades e o dgito 3 mais a esquerda do nmero representa trezentas unidades),
a significncia de cada bit depende da posio em que ele se encontra no nmero binrio. A diferena entre
os nmeros decimais e os nmeros binrios que nos primeiros a cada vez que um dgito deslocado para
a esquerda ele multiplicado por 10 (Base-10), enquanto que nos binrios ele ser multiplicado por 2
(Base-2). Desta forma, em um nmero binrio 111, o primeiro 1 (sempre da direita para a esquerda) tem o
valor de 1, o segundo 1 tem o valor de 1x21 = 2 e o terceiro 1 tem o valor de 1x22 = 4, enquanto que para
1
o nmero decimal 111, o primeiro 1 tem o valor de 1, o segundo 1 tem o valor de 1x10 = 10 e o terceiro 1
tem o valor de 1x102 = 100. Desta forma, ficou convencionado que o bit mais a esquerda de uma palavra
binria seria o Bit Mais Significativo (Most Significant Bit MSB) e o bit mais a direita o Bit Menos
Significativo (Least Significant Bit LSB).
Pgina 23

www.picminas.com.br
Copyright

- Todos os diretos reservados

No fique confuso se voc encontrar algum bit com valor 4, 16 ou 64. Isso significa que o valor do
bit est representado no sistema decimal. Seria correto dizer, por exemplo, que, "o valor do sexto bit ou bit 6
do nmero binrio 1000000 equivalente ao nmero decimal 64", pois o sexto bit (da direita pra esquerda)
est na posio 6 (levando em conta que o primeiro bit est na posio zero), desta forma ele dever ser
6
multiplicado por 2 seis vezes (2x2x2x2x2x2 ou 2 = 64), (Figura 1.27). Neste caso, como todos os outros
dgitos so iguais a 0, o valor do nmero binrio completo ser igual ao valor do bit 6 = 26 = 64.

Figura 1.27 - Representao de um nmero na base-2.

1.9 O BYTE
Um byte ou palavra de programa consiste em 8-bits agrupados. Todas as operaes matemticas
podem ser realizadas com eles da mesma forma que so feitas com os nmeros decimais. Tal como
acontece com qualquer outro dgito de um nmero qualquer, os dgitos de um byte no possuem o mesmo
valor. Como visto, o bit de maior valor o bit mais a esquerda (MSB). Portanto, o bit de menor valor o bit
mais a direita (LSB). Como em um byte temos 8 bits, possvel realizar at 256 combinaes diferentes, ou
seja, um byte pode representar at 256 (28 = 256) nmeros binrios diferentes, sendo 255 o maior nmero
decimal que pode ser representado.
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)

Figura 1.28 - Representao de nibbles.

1.10 PORTAS LGICAS


So circuitos eletrnicos existentes dentro dos microprocessadores e so responsveis por
realizar as operaes lgicas, aritmticas e de tomada de deciso.
Alguma vez voc j se perguntou o que existe dentro de um microprocessador ou um CHIP
digital? Como que esses CHIPs conseguem realizar operaes lgicas, aritmticas e de tomada de
deciso? Voc sabia que por trs dessa aparncia to complicada existem apenas alguns elementos
diferentes chamados "circuitos lgicos" ou "portas lgicas"?
O funcionamento destes elementos foi baseado nos princpios estabelecidos pelo matemtico
britnico George Boole em meados do sculo 19, antes mesmo da primeira lmpada ser inventada. Em
suma, a idia principal foi a de expressar funes lgicas por meio de funes algbricas. Esse pensamento
foi logo transformado em um produto prtico, que muito mais tarde evoluiu para o que hoje conhecemos
como circuitos lgicos E (AND), OU (OR) e NO (NOT).
Pgina 24

www.picminas.com.br
Copyright

- Todos os diretos reservados

O princpio de funcionamento destes elementos ficou conhecido como lgebra Booleana. Uma
vez que algumas instrues de programas utilizadas por microprocessadores e microcontroladores fazem
uso das funcionalidades destas portas lgicas, importante estudarmos o principio de funcionamento de
cada uma delas.

1.10.1 PORTA AND


Uma porta lgica "AND" tem duas ou mais entradas e apenas uma sada. Vamos supor que a
porta utilizada neste caso tenha apenas duas entradas, A e B. O princpio de funcionamento desta porta diz
que s aparecer a lgica um (1) na sada da porta quanto todas as portas de entrada forem tambm iguais
a um (1), ou seja, somente quando A e B forem iguais a 1 a sada ser igual a 1. A Figura 1.29 mostra o
smbolo representativo da porta lgica AND e a tabela de dependncias mtuas entra as entradas e a
sada, Tabela Verdade.

Figura 1.29 - Smbolo grfico e Tabela verdade da porta AND.

Quando usado em um programa, a operao lgica AND executada por uma instruo de
programa, o que ser discutido mais adiante no captulo que trata da programao do microcontrolador em
linguagem C. Por enquanto, basta lembrar que a lgica AND, em um programa, ser utilizada para
relacionar os bits de dois registros ou variveis diferentes. Veja o exemplo da Figura 1.30, onde realizada
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.

Figura 1.30 - Operao lgica AND.

1.10.2 PORTA OR
Da mesma forma que o caso anterior, as portas OR tambm podem ter duas ou mais entradas e
uma sada. A lgica um (1) aparecer na porta de sada se qualquer uma das entradas (A ou B) estiver em
lgica um (1). Somente se todas as entradas estiverem em lgica zero (0), a sada ser modificada para
lgica zero (0). A Figura 1.31 mostra o smbolo representativo da porta lgica OR e sua Tabela Verdade.

Figura 1.31 - Smbolo grfico e Tabela verdade da porta OR.

Pgina 25

www.picminas.com.br
Copyright

- Todos os diretos reservados

Em instrues de programa a operao lgica OR utilizada para relacionar variveis ou


registradores bit a bit. Veja o exemplo da Figura 1.32.

Figura 1.32 - Operao lgica OR.

1.10.3 PORTA NOT


Esta porta lgica tem apenas uma porta de entrada e uma de sada. Ela funciona de uma maneira
extremamente simples. Quando aplicada lgica zero (0) na entrada, a lgica um (1) aparecer na sada e
vice-versa. Isto significa que esta porta inverte o sinal aplicado a ela. s vezes chamada de porta
inversora. (Figura 1.33)

Figura 1.33 - Smbolo grfico e Tabela verdade da porta NOT.

Se um programa realiza uma operao lgica NOT em um byte, o resultado ser um byte com
todos os bits invertidos. (Figura 1.34)

Figura 1.34 - Operao lgica NOT.

1.10.4 PORTA XOR (OU-EXCLUSIVA)


A porta XOR um pouco mais complicada em comparao com outras portas. Ela representa a
combinao de todos as outras portas descritas anteriormente. Ela tambm pode ter duas ou mais entradas
e somente uma sada. A lgica um (1) aparece na sada apenas quando uma das entradas est em lgica
um (1) e as outras em lgica zero (0). A Figura 1.35 mostra o smbolo representativo da porta lgica XOR e
sua Tabela Verdade.

Figura 1.35 - Smbolo grfico e Tabela verdade da porta XOR.

Em um programa, esta operao geralmente utilizada para comparar duas variveis, se o


resultado da operao for 0, significa que as duas variveis so iguais. Observe que na Figura 1.36 os bits
Pgina 26

www.picminas.com.br
Copyright

- Todos os diretos reservados

do resultado s so iguais a 0 quando os bits equivalentes das variveis A e B so iguais, independente se


so 1 ou 0.

Figura 1.36 - Operao lgica XOR.

Neste captulo, falamos sobre:


O surgimento das mquinas;
Sistemas microprocessados e microcontrolados;
Linguagem de mquina, representao numrica;
Portas lgicas.

Pgina 27

www.picminas.com.br
Copyright

- Todos os diretos reservados

Captulo 2 Arquitetura do PIC e Kit de Desenvolvimento


Microcontroladores (Simbologia C) podem ser definidos como um pequeno componente
eletrnico, dotado de uma inteligncia programvel, 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 (sete) 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 alimentado, o programa interno ser executado. Quanto
inteligncia do componente, podemos associ-la Unidade Lgica e Aritmtica (ULA), pois
nessa unidade que todas as operaes matemticas e lgicas so executadas. Quanto mais
poderosa a ULA do componente, maior sua capacidade de processar informaes.
Na nossa definio, 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, timers, contadores, comunicao serial e paralela, PWMs, conversores analgicosdigitais, etc. Esta uma das caractersticas fundamentais que diferencia os
microcontroladores dos microprocessadores, pois os ltimos, apesar de possurem uma ULA
muito mais poderosa, no possuem todos esses recursos em uma nica pastilha de silcio ou
CHIP.
Atualmente, muitos equipamentos de nosso uso dirio, tais como: eletrodomsticos, videocassete,
alarmes, celulares, DVDs e 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 Controller) so uma famlia de
microcontroladores fabricados pela Microchip Technology, que processam dados de 8 bits e de 16 bits, mais
recentemente 32 bits, com 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, na GI introduziu no mercado uma verso aprimorada do PIC, com
memria de programa apagvel e diversos aprimoramentos, sob a sigla PIC 16C50 (WIKIPDIA.ORG).
O PIC representa uma famlia de microcontroladores projetados na arquitetura Harvard, usando
conjunto de instrues reduzido (RISC).
Os microcontroladores podem ser projetados segundo duas arquiteturas:
Von-Neumann: apenas um barramento interno (geralmente 8 bits), pelo qual trafegam
instrues e dados (Figura 2.1);

Pgina 28

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 2.1 - Arquitetura Von-Neumann.

Harvard: dois barramentos, sendo exclusivo para trafegar dados e outro para instrues, no
caso de microcontroladores PIC, o barramento de dados sempre de 8 bits e o de instrues
pode ser de 12, 14 e 16 bits;

Figura 2.2 - Arquitetura Harvard.

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 surgiu a tecnologia
RISC (Reduced Instruction Set Computer Computador com conjunto de instrues reduzido). Ao contrrio
da tecnologia CISC (Complex Instruction Set Computer Computador com conjunto de instrues
complexo). (SOUZA, 2005)
Os PICs da Microchip so os microcontroladores mais vendidos, principalmente pelas vantagens,
tais como: grande variedade de famlias que permitem adaptar o C s necessidades de cada aplicao,
ferramentas comuns para desenvolvimento, grande variedade de funcionalidades embutidas, preos
competitivos e bom suporte (datasheet, livros, notas de aplicaes, seminrios e muita informao
disponvel na internet).
Os Cs PIC tm famlias com ncleos de processamento de 12 bits, 14 bits e 16 bits e trabalham
em velocidades de at 48MHz, usando ciclo de instruo mnimo de 4 perodos de clock, o que permite uma
velocidade de no mximo 12 MIPS. Possibilita o reconhecimento de interrupes tanto externas como de
perifricos internos. Funcionam com tenses de alimentao de 2 a 6V e os modelos possuem
encapsulamento de 6 a 100 pinos em diversos formatos (SOT23, DIP, SOIC, TQFP, etc.).
(WIKIPDIA.ORG)
Os PICs podem ser programados em linguagem mnemnica (assembly) ou usando-se
compiladores de linguagem de alto nvel (Pascal, C, Basic) que geram um cdigo em formato hexadecimal
(Intel Hex format ou linguagem de mquina) que podem ser gravados na memria de programa desses
microcontroladores. Para tal procedimento, utiliza-se um hardware especial (gravador externo de PIC)

Pgina 29

www.picminas.com.br
Copyright

- Todos os diretos reservados

acoplado a um PC. PIC's com memria FLASH so altamente flexveis na fase de desenvolvimento, pois
permitem uma rpida alterao do cdigo de programa. (WIKIPDIA.ORG)
Abaixo temos as primeiras funcionalidades internas dos PICs. Algumas propriedades podem variar
com o modelo do PIC utilizado: (WIKIPDIA.ORG)

Conversores Analgico-Digitais de 8 a 12 bits;


Contadores e timers de 8 e 16 bits;
Comparadores Analgicos;
USARTs (Universal Synchronous Asynchronous Receiver Transmitter, significando
Transmissor/Receptor Universal Sncrono e Assncrono);
Controladores de comunicao I2C, SPI, USB;
Controladores PWM;
Controladores de LCD;
Controladores de motores;
Gerador de energia de alta potncia;
Perifricos para LIN, CAN;
Controladores Ethernet;
Perifricos IRDA;
Codificadores para criptografia Keeloq;
Watchdog timer;
Detectores de falha na alimentao;
Portas digitais com capacidade de 25mA (fornecer ou drenar) para acionar circuitos externos;
Osciladores internos.

2.1 PIC18F4550
O PIC18F4550 ser o microcontrolador usado em nosso curso. A escolha deste C se deve a
algumas de suas vantagens, tais como facilidade de encontrar no comrcio, custo acessvel, facilidade de
gravao e caractersticas. A coluna 5 da Tabela 2 mostra algumas das caractersticas do PIC18F4550:

Memria FLASH para armazenamento de programa: 32 KBytes;


Memria SRAM para armazenamento de dados: 2Kbytes;
Memria EEROM de dados: 256 bytes;
Portas configurveis como entradas ou sadas digitais: 35;
Portas configurveis como canais de entradas analgicas: 13
Mdulo CCP (Capture/Compare/PWM)
Porta paralela de 8-bits (SPP Streaming Parallel Port).
Temporizadores de 8 e 16-bit: 4;
Watchdog timer;
Freqncia de operao de at 48MHz;
Mltiplas fontes de interrupo (20);
Dois comparadores;
Perifricos avanados de comunicao: Porta de comunicao serial, Porta de comunicao
USB 2.0;
Arquitetura Harvard, tecnologia RISC com um conjunto de 75 instrues;
Pilha de 31 nveis.
Ver datasheet do PIC18F4550 na pgina 3.

Pgina 30

www.picminas.com.br
Copyright

- Todos os diretos reservados

Tabela 2 - Funcionalidades do PIC18F4550 (fonte datasheet PIC18F4550).

Na Figura 2.3 possvel visualizar a pinagem do microcontrolador PIC18F4550 com as portas de


entrada e sada (RA, RB, RC, RD e RE), que so configuradas na programao, os canais de entradas
analgicas (AN), pinos de alimentao (VDD e VSS), entradas de oscilador externo (OSC), porta de
comunicao serial (RX e TX) e porta de comunicao USB (D+ e D). possvel ver tambm que vrios
pinos acumulam mais de uma funo. (Datasheet PIC18F4550)

Pgina 31

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 2.3- Pinagem do microcontrolador PIC18F4550 (Fonte: datasheet PIC18F4550).

O PIC18F4550, como j foi dito, possui 35 portas de I/O, separados 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 or output), e como
j foi dito, alguns deles acumulam vrias funes.
Podemos ver mais detalhes sobre cada pino na Tabela 3 (dividida em partes), que segue abaixo
(Ver datasheet do PIC18F4550 da pgina 14 a 23):

Pgina 32

www.picminas.com.br
Copyright

- Todos os diretos reservados

Pgina 33

www.picminas.com.br
Copyright

- Todos os diretos reservados

Pgina 34

www.picminas.com.br
Copyright

- Todos os diretos reservados

Pgina 35

www.picminas.com.br
Copyright

- Todos os diretos reservados

Pgina 36

www.picminas.com.br
Copyright

- Todos os diretos reservados

Tabela 3 - Pinos do PIC18F4550 (Fonte: datasheet do PIC18F4550).

2.1.1 ESTRUTURA INTERNA


No diagrama da figura 2.2, podem ser visualizadas diversas partes que compem o
microcontrolador PIC 18F4550. Observe a ULA (Unidade Lgica Aritmtica) ligada ao registrador W (Workregister). No canto superior esquerdo, abaixo da tabela de ponteiros, temos a memria de programa (32
Kbytes), e saindo desse bloco um barramento de instrues com 16 bits. No lado superior direito possvel
ver a memria de dados (2 Kbytes), que possui um barramento de dados de 8 bits, conforme explicado na
definio da arquitetura Harvard.
Do lado direito podemos visualizar as portas com todos os seus pinos de entrada/sada (I/O). Na
parte inferior, os perifricos, tais como a EEPROM (memria de dados no voltil), os temporizadores
(Timer0, Timer1, Timer2, Timer3), o comparador interno, o mdulo CCP (Capture, Compare e PWM), porta
serial (EUSART), porta USB, conversor A/D de 10 bits.
Um pouco mais no centro, temos os osciladores internos, o regulador de tenso USB, Power-up
Timer e Watchdog Timer. Na parte superior central, temos o contador de linha de programa (Program
Counter) e a pilha (Stack) de 31 nveis.
Mais informaes esto disponveis no datasheet do microcontrolador PIC18F4550, disponvel no
site na rea do aluno.

Pgina 37

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 2.4 - Estrutura interna do microcontrolador PIC18F4550 (Fonte: datasheet PIC18F4550).

Como vimos, a Figura 1.9 mostra, por meio de diagrama de blocos, as principais partes de um
sistema microprocessado padro. Na figura 2.3 possvel visualizar como esto distribudas cada uma
dessas partes na arquitetura interna do PIC18F4550.

Pgina 38

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 2. 5 - Arquitetura do PIC18F4550 destacando as partes de um sistema microprocessado.

2.1.2 ORGANIZAO DA MEMRIA


Segue abaixo detalhes da organizao da memria do PIC18F4550:
Memria de programa: memria interna flash de 32.768 bytes (32 Kbytes).
Armazena instrues, constantes e dados;
Pode ser escrita/lida de acordo com o programador externo (Off-board), In-circuit ou
durante a execuo do programa atravs de ponteiros.
Memria RAM de dados: memria SRAM interna de 2048 bytes (2 Kbytes) e nela esto includos
os registradores de funo especial (SFR).
Armazena dados de forma temporria (Memria voltil) durante a execuo do
programa;
Pode ser escrita/lida em tempo de execuo do programa atravs de diversas
instrues.
Memria EEPROM de dados: memria no voltil de 256 bytes.
Armazena dados que devem ser conservados na ausncia de tenso de alimentao;

Pgina 39

www.picminas.com.br
Copyright

- Todos os diretos reservados

Pode ser escrita/lida em tempo de execuo do programa atravs de registradores,


observe uqe para serem lidos ou escritos os dados devem primeiro passar pela
memria SRAM.
Pilha: Bloco de 31 palavras de 21 bits.
Armazena a direo da instruo que deve ser executada depois de uma interrupo
ou sub-rotina;
Memria de configurao: memria que contm bits de configurao (12 bytes de memria
flash) e os registradores de identificao (2 bytes de memria de apenas leitura).
A memria de configurao se trata de um bloco de memria situado a partir da posio 300000H
de memria de programa (muito alm do espao de memria do programa para o usurio).
Nesta memria de configurao incluem:
Bits de configurao: contidos em 12 bytes de memria flash permitindo a configurao de
algumas opes do C como:
Opes de oscilador;
Opes de reset;
Opes de watchdog;
Opes para depurao e programao do circuito;
Opes da proteo contra escrita da memria do programa e de dados da memria
EEPROM.
Estes bits so configurados geralmente durante a programao do C, mas podem ser lidos e
modificados durante a execuo do programa.
Registradores de identificao: trata-se de registradores situados nos endereos 3FFFFEH e
3FFFFFH que contm informaes do modelo e verso do dispositivo. Os registradores so
apenas de leitura e no podem ser alterados pelo usurio.

2.1.3 ARQUITETURA HARVARD


O PIC18F4550 dispe de barramentos diferentes para o acesso a memria de programa e a
memria de dados (arquitetura Harvard). O barramento da memria de programa tem 21 linhas de
endereamento e 16/8 linhas de dados (16 linhas para instrues e 8 linhas para dados). O barramento da
memria de dados tem 12 linhas de endereamento e 8 linhas para dados.
Isto permite acessar simultaneamente a memria de programa e a memria de dados. Significa
que ele pode executar uma instruo (o que geralmente exige a acesso a dados de memria), enquanto
busca a prxima instruo da memria de programa para ser executada em seguida (processo conhecido
como pipeline) (Figura 2.6).

Figura 2.6 - Processo Pipeline.

Portanto, a execuo completa de 1 instruo (Leitura da instruo + execuo) se faz em um


ciclo de instruo (4 TOSC1). EXCEO: as instrues que modificam o contedo do PC (Program Counter)
requerem 2 ciclos de instrues, algumas conhecidas como instrues de salto. Ex: Chamadas de funo.

Pgina 40

www.picminas.com.br
Copyright

- Todos os diretos reservados

2.1.4 MEMRIA DE PROGRAMA (FLASH)


O C PIC18F4550 dispe de uma memria de programa de 32.768 bytes (0000H-7FFFH). As
instrues ocupam 2 bytes (exceto de instrues em assembly: CALL, MOVFF, GOTO e LSFR que ocupam
4). Assim, a memria de programa pode armazenar at 16.384 instrues.
A operao de leitura da memria na posio acima de 7FFFh resulta com 0 (equivalente
instruo NOP).
Podemos ainda citar endereos especiais na memria de programa. O endereo do vetor reset
0000H, o do vetor de interrupes de alta prioridade 0008H e o do vetor de interrupes de baixa
prioridade 0018H. (Figura 2.7)

Figura 2.7 - Detalhes da memria FLASH e da Pilha.

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 41

www.picminas.com.br
Copyright

- Todos os diretos reservados

2.1.5 MEMRIA RAM DE DADOS


A memria de dados utilizada para guardar todas as variveis e registradores utilizados pelo
programa. Essa memria armazena dados de 8 bits e voltil, ou seja, quando o PIC desligado, ela
automaticamente perdida. Ela dividida em 16 bancos de memria, dos quais apenas 8 so utilizados pelo
PIC18F4550.
O PIC18F4550 tem 2048 bytes de memria RAM (Voltil) divididos em 8 bancos de 256 bytes.
Dos quais, 160 bytes so reservados aos registradores de funes especiais (SFR) localizado na parte mais
alta do banco 15 da memria (endereo F60h at FFFh). Uma informao importante a ser destacada a
diferena de um barramento de endereo do PIC poder enderear uma determinada quantidade de
memria (esse valor est associado ao tamanho do barramento de endereo) e ter o que enderear
(tamanho real da memria de dados). Por exemplo: no PIC18F4550 possvel enderear at 4 Kbytes, pois
12
o barramento de endereos tem 12 bits, 2 = 4048 bytes = 4 Kbytes, porm s temos 2 Kbytes de memria
SRAM fsica disponvel no hardware.
A memria de dados contm os registradores especiais de funo (SFRs) e os registradores de
propsito geral (GPRs). Os SFRs j foram citados na seo 1.3.4, os GPRs so usados para
armazenamento temporrio de dados e resultados de operaes do programa do usurio. Qualquer leitura
em um local no implementado lido como 0 (zero). Quando o modo USB habilitado, os banco 4, 5, 6 e 7
so mapeados para bufferizao da porta USB. Quando o modo USB desabilitado, os GPRs nesse banco
podem so usados como qualquer outro GPR na espao da memria de dados. (Figura 2.8)
Grandes reas da memria de dados requerem um esquema de endereamento eficiente para
fazer o rpido acesso para qualquer dos endereos possveis. Idealmente, isso significa que todos os
endereos possveis no precisam ser fornecidos para cada operao de leitura ou escrita. Por isso que no
PIC18F4550 existe o esquema de Bancos de Memria, conforme citado acima. O acesso a um byte da
memria SRAM (memria de dados do PIC) feito pelo Registrador de Seleo do Banco (BSR). Esse SFR
ocupa os 4 mais significativos bits da localizao do endereo, sendo que a instruo ocupa o 8 menos
significativos bits (4-bit + 8-bit = 12-bit de endereamento).
Existe tambm uma forma de acesso rpido para as 96 posies da parte inferior do banco e os
160 bytes mais altos do banco 15, os SFRs. (Figura 2.8)

Pgina 42

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 2.8 - Mapa da memria de dados.

O endereo FFFh equivale a 4095 bytes (capacidade mxima de endereamento com 12-bit).

2.1.6 REGISTRADORES DE FUNES ESPECIAIS NO PIC18F4550


Os registradores de funes especiais so usados pela CPU e pelos mdulos perifricos para
controle de operaes desejadas do dispositivo, servem para guardar a configurao e o estado atual da
mquina. Os SFRs (o PIC 18F4550 possui cerca de 140 SFRs) so os registradores atravs dos quais
monitoramos/controlamos o funcionamento da CPU e das unidades funcionais do C.
O conjunto dos SRFs classifica-se em:
SFRs associados a funcionalidades do C:
o CPU: WREG, STATUS, BSR, etc...
o Interrupes: INTCON, PIE1 PIR1 IPR1, etc
o Reset: RCON.
SFRs relativos a operaes das funcionalidades dos perifricos:
o Timers: T0CON, TMR1H, TMR1L, T1CON, etc
o Conversor A/D: ADRESH, ADRESL, ADCON0, ADCON1, etc...
o EUSART: TXREG, TXSTA, RCSTA, etc...
o CCP: CCPR1H, CCPR1L, CCP1CON, etc...
o MSSP: SSPSTAT, SSPDATA, SSPCFG, etc...
o Portas de I/O: TRISA, PORTA, TRISB, PORTB, etc...
Pgina 43

www.picminas.com.br
Copyright

- Todos os diretos reservados

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)

Figura 2.9 - Registrador Status.

Ele possui 8 bits, sendo 5 importantes e descritos abaixo:


N: esse bit indica quando um resultado negativo. Bit usado para operaes com sinal;
o N=0: resultado da ltima operao foi positivo;
o N=1: resultado da ltima operao foi negativo;
OV: bit de overflow. Bit utilizado para operaes com sinal. Indica se houve overflow do 7 bit:
o OV=0: no houve overflow na operao aritmtica;
o OV=1: houve overflow na operao aritmtica;
Z: bit de zero. Indica se o resultado de uma operao foi zero.
o Z=0: o resultado de uma operao aritmtica ou lgica foi diferente de 0;
o Z=1: o resultado de uma operao aritmtica ou lgica foi igual de 0;
DC: bit de transporte de bit entre o nibbles. Se houve transporte de bits do 4 para o 5 bit.
o DC=0: no houve transporte do 4 para o 5 bit;
o DC=1: houve transporte do 4 para o 5 bit;
C: bit de transporte ou estouro. Se a operao ultrapassou os 8 bits de dados.
o C=0: no houve transporte ou estouro;
o C=1: houve transporte ou estouro;
Legenda:
L = Bit de Leitura

E = Bit de Escrita

1 = Bit setado (nvel lgico 5V)

U = Bit no implementado, lido como 0

0 = Bit zerado (nvel lgico 0V)

x = Valor do bit desconhecido


Para informaes dos outros registradores, consulte o datasheet do PIC18F4550 disponvel no
site na rea do Aluno.

2.1.7 MEMRIA EEPROM DE DADOS


A EEPROM uma memria no-volatil separada das memrias de dados RAM e de programa.
Que usada para armazenar dados do programa. No PIC18F4550, a memria EEPROM de dados possui
256 bytes. Apenas quatro registradores so usados para leitura e escrita de dados na EEPROM. So eles:
EECON1, EECON2, EEDATA, EEADR.
Esta memria permite at 1.000.000 de ciclos de leitura e escrita. Pode-se ler/escrever de forma
individual cada uma das 256 posies de memria.

2.2 KIT DE DESENVOLVIMENTO DO PIC18F4550


O KIT de desenvolvimento baseado no PIC18F4550, que fabricado pela Axoon MED, pode ser
dividido em quatro partes: circuitos atuadores, chaves/teclas, circuitos sensores e displays.

Pgina 44

www.picminas.com.br
Copyright

- Todos os diretos reservados

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.

Figura 2.10 - Ligao dos leds no PIC.

Figura 2.11 - Ligao do Rel no PIC.

Pgina 45

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 2.12 - Ligao do Buzzer (Sirene) no PIC.

2.2.2. CHAVES/TECLAS
As chaves e teclas so: quatro chaves tteis (push button) e uma chave dip switch de quatro vias.
A Figura 2.13 e Figura 2.14 mostram as ligaes de cada uma dessas chaves no PIC18F4550.

Figura 2.13 - Ligao da Chave Push Button (Chaves Tteis) no PIC.

Pgina 46

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 2.14 - Ligao da Chave Dip switch no PIC.

2.2.3. CIRCUITOS SENSORES


O circuito sensor composto por um LDR, um sensor de temperatura e um potencimetro. A
Figura 2.15, Figura 2.16 e Figura 2.17 mostram as ligaes de cada um desses sensores no PIC18F4550.
O LDR (Light Dependent Resistor) um componente que tem a resistncia mudada com a
intensidade da luz que incide sobre ele. A sua resistncia varia com o aumento da intensidade de luz que
incide sobre o dispositivo.

Figura 2.15 - Ligao do LDR no PIC.

Pgina 47

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 2.16 - Ligao do sensor de temperatura no PIC.

O potencimetro funciona como um circuito divisor de tenso, a tenso eltrica na sada S do


potencimetro varia de acordo com a posio do parafuso do mesmo. (Figura 2.11b)

Figura 2.17 - Ligao do potencimetro no PIC.

2.2.4. DISPLAYS
A ltima parte, os displays de apresentao de informao so: um display duplo de 7 (sete)
segmentos (anodo comum) e um display de LCD. As Figura 2.18 e Figura 2.19 mostram as ligaes de
cada um desses displays no PIC18F4550.

Pgina 48

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 2.18 - Ligao do display duplo de 7 segmentos no PIC.

Observao: o display de 7 (sete) segmentos do tipo Anodo Comum, isso


quer dizer que seus LEDs (a1, b1, c1, d1 ...) acendero quando as portas conectadas a
eles (RB0, RB1, RB2, ...) estiverem em lgica binria 0 (zero) ou 0 (zero) Volts.

Figura 2.19 - Ligao do display de LCD no PIC.

Pgina 49

www.picminas.com.br
Copyright

- Todos os diretos reservados

Abaixo segue a tabela 4 com as informaes teis do LCD:

Nome
no LCD
VSS
VDD
VO
RS
R/W

Pino do
LCD
1
2
3
4
5

Pino do
PIC18F4550
GND
5V
P21
GND

E
D0
D1
D2
D3
D4
D5
D6
D7

6
7
8
9
10
11
12
13
14

P22
P34
P25
P33
P26

Nome do Pino
no PIC18F4550

No conectado
RD2

RD3
No conectado
No conectado
No conectado
No conectado
RD4
RD5
RD6
RD7

Descrio
Pino de Terra do LCD
Pino de Alimentao
Pino de ajuste do contraste ligado ao potencimetro.
Pino de Seleo de envio de Comandos ou Dados.
Pino de Seleo Leitura ou Escrita de dados.
No KIT PICMINAS est habilitada apenas escrita.
Pino de habilitao de recepo de sinal do LCD
Pino para envio de Dados (No utilizado no KIT)
Pino para envio de Dados (No utilizado no KIT)
Pino para envio de Dados (No utilizado no KIT)
Pino para envio de Dados (No utilizado no KIT)
Pino para envio de Dados
Pino para envio de Dados
Pino para envio de Dados
Pino para envio de Dados

Tabela 4: Informaes de ligao do LCD.

2.2.5. CIRCUITOS DE GRAVAO IN-CIRCUIT (ICSP)


O KIT PICMINAS possui um conector padro usado pela empresa MICROCHIP para gravao incircuit ICSP (In-Circuito Serial Programming), ou seja, o kit poder ser utilizado com gravadores comerciais
que seguem esse padro (ICD2, PICKIT2 e outros), figura 2.20.

Figura 2.20 Conector padro MICROCHIP ICSP.

Pgina 50

www.picminas.com.br
Copyright

- Todos os diretos reservados

RECOMENDAES PARA USO DO CONECTOR ICSP:


- Desconectar qualquer perifrico ligado nos pinos RB6 e RB7, como por exemplo: o display duplo
de 7 segmentos e o LCD.
- Usar a alimentao da placa do KIT PICMINAS pela USB ou por uma fonte externa. No utilize a
alimentao do mdulo de gravao.

2.3 DETALHE DE CADA COMPONENTE NO KIT DE DESENVOLVIMENTO


A Figura 2.21 abaixo detalha os componentes principais do kit de desenvolvimento da PICMINAS.

Figura 2.21 - Componentes principais do kit de desenvolvimento.

Neste captulo, falamos sobre:


A arquitetura do microcontrolador PIC18F4550;
Detalhes sobre o kit de desenvolvimento da PICMINAS.

Pgina 51

www.picminas.com.br
Copyright

- Todos os diretos reservados

Captulo 3 Instalao dos Programas


Antes de familiarizamos com os softwares de programao de microcontroladores PIC, devemos
agora aprender a utilidade e como fazer a instalao correta de cada um.
Para o desenvolvimento de programas em linguagem C nos microcontroladores PIC, precisaremos
de alguns programas especficos, o compilador C Microchip C18, o ambiente de desenvolvimento MPLAB
ambos fornecidos pela Microchip e necessrios para a programao do firmware, o software MCHPFSUSB
para gravao do firmware via USB, sem a necessidade de um gravador externo. Isso foi possvel aps a
gravao de uma rotina de inicializao (Bootloader) capaz de atualizar as informaes da memria do PIC,
o CDC_RS232_Emulation, o HID_Setup e por ltimo USB_Bootloader_Setup. Todos esses programas
distribudos gratuitamente.
Abaixo segue as instrues para instalao dos softwares. importante seguir a ordem de
instalao abaixo, para garantir o bom funcionamento de todos os programas.

3.1 AMBIENTE DE DESENVOLVIMENTO MPLAB


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 mquina (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, sendo uma ferramenta poderosa e um dos principais responsveis pela
popularizao do PIC.
O Programa fonte, ou simplesmente fonte do programa uma seqncia em texto, escrita numa
linguagem de programao que ser convertida em cdigos de mquina para ser gravado no PIC. O
Compilador o programa que converte o cdigo fonte em cdigos de mquina. O Simulador o programa
que simula o funcionamento do C (CPU e perifricos), conforme o programa fonte que est sendo
desenvolvido.
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 e o C18 Student Edition. Todos os compiladores utilizam a linguagem
C como interface com os usurios, para gerar os programas desejados para suas aplicaes, porm cada
compilador possui suas particularidades na forma de configurar os registradores e acessar as portas dos
microcontroladores, assim como bibliotecas comuns a linguagem C e especficas de cada compilador, alm
de no trabalharem com todos os modelos de PIC em comum.
O MPLAB trabalha com projetos, que so constitudos por arquivos gerados pelo usurio (source
files - tipo .c) e arquivos de bibliotecas (header files - tipo .h) que agrupam funes previamente feitas
pelos prprios produtores dos softwares, pela Microchip e que so de origem dos compiladores, como no
nosso exemplo, da linguagem C.
No nosso curso usaremos a verso 8.14 do MPLAB, para instalao do programa siga o
procedimento abaixo:

Procedimento
1) Descompacte o arquivo MP814 (No site da Microchip existe apenas verso mais recente).
2) D dois cliques no arquivo MP814_Install.exe, para instalar o programa.
3) Na primeira janela que aparece, MPLAB Tools 8.14 Installation, clique em Next. (Figura 3.1)

Pgina 52

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 3.1: Janela MPLAB Tools 8.14 Installation.

4) Na segunda janela, MPLAB IDE License Agreement, selecione a opo I accept the terms of the
license agreement, indicando que voc est de acordo com os termos da licena do software. Clique
em Next.
5) Na terceira janela, Setup Type, selecione a opo Complete e clique em Next. (Figura 3.2)

Figura 3.2: Janela Setup Type.

Pgina 53

www.picminas.com.br
Copyright

- Todos os diretos reservados

6) A seguir voc dever escolher o caminho de destino para instalao do programa. Como padro o
destino C:\Arquivos de programas\Microchip. Clique no boto Browse ... e na janela Choose
Folder, selecione o caminho C:\Microchip. (Figura 3.3)
Obs.: Esse procedimento evita que o caminho dos projetos criados pelo usurio exceda o mximo de
caracteres permitidos (62 caracteres).

Figura 3.3: Janela de escolha da localizao do destino.

7) Na janela a seguir, Application Maestro License, selecione a opo I accept the terms of the license
agreement e clique em Next.
8) Na janela, MPLAB C32 License, selecione a opo I accept the terms of the license agreement e
clique em Next.
9) Na ltima janela, Start Copying Files, clique em Next e aguarde a instalao dos componentes.
10) Aps finalizar a instalao, deixe selecionada a opo Yes, I want to restart my computer now. Clique
em Finish e reinicie seu computador. (Figura 3.4)

Pgina 54

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 3.4: Janela de instalao completa.

3.2 COMPILADOR C18 STUDENT EDITION


A maneira de comandar um computador atravs de um programa, sendo a linguagem de
mquina a nica linguagem entendida por ele. Assim preciso traduzir os programas, que esto em uma
linguagem de alto nvel (mais prxima da linguagem humana), para linguagem de mquina (Figura 3.5), isso
feito por um tradutor chamado compilador.

Figura 3.5: Funo do compilador.

Conforme j foi dito, nesse curso usaremos o compilador C18 Student Edition. Ele permite que o
programador escreva o cdigo na linguagem C e o compilador C18 traduz esse cdigo em C para
linguagem de mquina que o C PIC entendem.
A verso do compilador C18 Student Edition fornecida pela Microchip contm arquivos fonte
(source files - tipo .c), arquivos de bibliotecas (header files tipo .h), documentao, exemplos, arquivos
de link (Linkers files tipo .lkr) e outros. uma verso para estudantes e aps 60 dias ela expira sua
licena. Aps esse perodo o usurio poder usar o compilador, porm ele no mais ir otimizar os cdigos,
o que significa que os cdigos traduzidos iro ocupar mais espao na memria do C.

Pgina 55

www.picminas.com.br
Copyright

- Todos os diretos reservados

Um projeto criado no MPLAB, gerenciado por informaes gravadas num arquivo de extenso
.mcp (Projeto do MPLAB). A compilao do projeto gera importantes arquivos, conforme mostra a figura 3.6.

Figura 3.6: Processo de compilao do cdigo.

O programador escreve o cdigo em C no MPLAB e inclue as bibliotecas que precisam ser


usadas. O MPLAB precisa do compilador para converter a linguagem de programao, tambm conhecida
como linguagem de alto nvel (neste caso linguagem C) desenvolvida por um programador (no caso voc)
para linguagem de mquina tambm conhecida como linguagem de baixo nvel. O compilador precisa de
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 HEX (.HEX), que contm o
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 na rea do aluno
no site do curso.
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 56

www.picminas.com.br
Copyright

- Todos os diretos reservados

Para instalao do compilador MPLAB C18 COMPILER siga o procedimento abaixo:

Procedimento
1) D dois cliques no arquivo MPLAB-C18-Student-Edition-doc-v3_02.exe, para instalar o compilador.
2) Na primeira janela que aparece, Welcome, contm o nmero da verso do MPLAB C18 que o
programa de setup est instalando, clique em Next. (Figura 3.7)

Figura 3.7: Janela de Boas Vindas.

3) Na janela seguinte, License Agreement, selecione a opo I Accept, indicando que voc est de
acordo com os termos da licena do software. Clique em Next. (Figura 3.8)

Figura 3.8: Janela de Licena.

Pgina 57

www.picminas.com.br
Copyright

- Todos os diretos reservados

4) Na janela seguinte, Read Me File, clique no boto Next.


5) Na janela, Select Installation Directory, voc pode escolher o diretrio onde ser instalado o MPLAB
C18. Deixe o diretrio padro e clique no boto Next. (Figura 3.9)

Figura 3.9: Janela de Seleo do diretrio destino.

6) Na janela seguinte, Select Components, voc pode escolher os componentes a serem instalados.
Selecione TODAS as opes existentes e clique em Next. (Figura 3.10)

Figura 3.10: Janela de Seleo do diretrio destino.

Segue a descrio detalhada dos componentes disponveis para seleo na figura 3.10 (MPLAB
C18 Getting Started, 2008):
Pgina 58

www.picminas.com.br
Copyright

- Todos os diretos reservados

Componente

Descrio

Program files

Esses so os arquivos executveis para o compilador e o linker. Usurios devem instalar


este componente se estiver atualizando e que no desejam usar os arquivos
executveis a partir da verso instalada anteriormente.

Assembler files

Neles incluem a verso do comand-line MPASM assembler (mpasm.exe), o cabealho


assembly para os dispositivos suportados pelo MPLAB C18 (p18xxxx.inc) e dos arquivos
que contm o cabealho assembly usados pelas bibliotecas.

Linker script files

Esses arquivos so usados pelo MPLINK linker. Existe um arquivo para cada
microcontrolador suportado no compilador C18. Cada arquivo fornece a configurao
padro da memria para o microcontrolador e direciona o linker na alocao do cdigo e
dos dados na memria do microcontrolador.
Estes linker scripts so diferentes dos linker scripts fornecidos pelo MPLAB IDE, estes
so especificamente designados para serem usados com o MPLAB C18. Assim o
MPLINK linker exige esses linker scripts. Os usurios devem instalar esses
componentes a menos que planeje criar seu prprio linker script.

Standard headers

Esses so arquivos de cabealhos (.h) para a biblioteca padro do C e bibliotecas


especficos do microcontrolador.Se o usurio optar por instalar as bibliotecas padro,
estas tambm sero instaladas.

Standard libraries

Este componente contm a biblioteca padro do C e outras bibliotecas especficas de


cada microcontrolador. Ver o MPLAB C18 C Compiler Libraries (DS51297) e MPLAB
C18 C Compiler Users Guide (DS51288) (disponveis na rea do aluno no site) para
obter mais informaes sobre as bibliotecas.
Como a maioria dos cdigos-fonte utilizam as bibliotecas padro C e assim
recomendado que os usurios instalem esse componente.

Documentation

Esse a documentao eletrnica sobre o compilador MPLAB C18.

Examples

Esses arquivos so aplicaes exemplos para os usurios comearem a familiarizar com


os recursos do compilador MPLAB C18.

Library source code

Esse o cdigo-fonte para a biblioteca padro do C e biblioteca do especfico


microcontrolador. Os usurios devem instalar este componente se planejam reconstruir
as bibliotecas.

Preprocessor source code

Esse o cdigo-fonte do pr-processador.

7) Na prxima janela de dilogo, Configuration Options, o usurio pode selecionar um conjunto de


opes para uma configurao particular do MPLAB C18. Selecione novamente todas as opes
existentes e clique no boto Next. (Figura 3.11)

Pgina 59

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 3.11: Janela Opes de Configurao.

Segue abaixo a descrio detalhada das configuraes disponveis na figura 3.10 (MPLAB C18
Getting Started, 2008):

Configurao
Add MPLAB C18 to PATH
environment variable

Descrio
Esse adiciona o caminho do executvel MPLAB C18 (mcc18.exe) e o executvel
MPLINK linker (mplink.exe) varivel ambiente PATH.
Fazer isso permite que os usurios lancem no prompt de comando a partir de qualquer
diretrio.

Add MPASM to PATH


environment variable

Esse adiciona o caminho do executvel MPASM (mpasm.exe) para a varivel ambiente


PATH. Fazendo isso permite que os usurios lancem a verso recm-instalada do
MPASM assembler no prompt de comando a partir de qualquer diretrio.

Add header file path to


MCC_INCLUDE
environment variable

Isso adiciona o caminho do diretrio do arquivo cabealho MPLAB C18 para a varivel
ambiente MCC_INCLUDE. Se a varivel no existir, ela criada. MCC_INCLUDE uma
lista de diretrios delimitada por ponto-e-vrgula onde o MPLAB C18 ir procurar pelo
arquivo cabealho, se no puder encontrar o arquivo no diretrio especificado na lista a
opo I na linha de comando.
Selecionando esta opo de configurao significa que os usurios devero usar a
opo I na linha de comando quando incluir um arquivo de cabealho padro.

Modify PATH and


MCC_INCLUDE variables
for all users

Esta opo aparece apenas se o usurio estiver conectado como administrador em um


computador com Windows NT ou Windows 2000. Selecionando esta configurao as
alteraes citadas anteriormente iro afetar a todos os usurios. Caso contrrio, as
alteraes afetariam apenas o usurio atual.

Update MPLAB IDE to


use this MPLAB C18

Esta opo aparece apenas se o MPLAB IDE estiver instalado no seu sistema.
Selecionada, esta opo configura o MPLAB IDE para usar o MPLAB C18 recminstalado. Isto inclui usar o diretrio da biblioteca MPLAB C18 como caminho padro de
bibliotecas para projetos MPLAB C18 no MPLAB IDE.

Update MPLAB IDE to


use this MPLINK linker

Esta opo aparece apenas se o MPLAB IDE est instalado em seu sistema.
Selecionada, esta opo configura o MPLAB IDE para usar o MPLINK linker recminstalado.

Pgina 60

www.picminas.com.br
Copyright

- Todos os diretos reservados

8) Na janela Star Installation, clique no boto Next e aguarde a instalao dos componentes do
compilador.
9) Ao finalizar a instalao dos componentes, clique em Finish.

3.2.1. RPIDO TOUR NOS DIRETRIOS


O diretrio de instalao MPLAB C18 contm o arquivo leia-me para o compilador (readme.c18) e
o arquivo para o linker (readme.lkr). E ainda, inmeros subdiretrios esto tambm presentes. Na tabela 5,
temos a descrio detalhada desses subdiretrios:
Diretrio

Descrio

bin

Contm os arquivos executveis para o compilador e o linker. Eles so descritos mais


detalhadamente no captulo 4, seo 4.2 Caractersticas do compilador.

cpp

Contm o cdigo fonte para o pr-processador MPLAB C18.

doc

Contm a documentao eletrnica do compilador MPLAB C18. Esses documentos devem


ser consultados quando houver dvidas relativas ao compilador MPLAB C18.

example

Contm aplicaes exemplos para auxiliar o usurio a comear a usar o MPLAB C18.

Contm o arquivos cabealho (header) para as bibliotecas padro C e bibliotecas especficas


do microcontrolador suportados pelo compilador C18. So utilizados em C para definir
variveis, tipos, smbolos e funes teis ao programa.

lib

Contm as bibliotecas padro do C (clib.lib ou clib_e,lib), bibliotecas especficas do


microcontrolador (p18xxxx.lib or p18xxxx_e.lib, onde xxxx o nmero especfico do
dispositivo) e os mdulos de inicializao (c018.o, c018_e.o, c018i.o, c018i_e.o, c018iz.o,
c018iz_e.o).
Contm os arquivos linker script para os C suportados no C18.

lkr
mpasm

scr

Contm a verso da linha de comando para o assembler MPASM, os arquivos de cabealho


assembly para os dispositivos suportados pelo MPLAB C18 (p18xxxx.inc) e os arquivos
cabealhos assembly usados pelas bibliotecas.
Contm o cdigo fonte, em formato C e arquivos assembly, para a biblioteca padro C,
bibliotecas especficas do processador e mdulos de inicializao.
Tabela 5: Descrio dos sub-diretrios do MCC18.

3.3 APLICAES DA MICROCHIP (Microchip Application Libraries)


O Microchip Application Libraries um software livre, desenvolvido pela Microchip para dar
suporte a comunicao USB de microcontroladores de 8-bit, 16-bit e 32-bit. A famlia 8-bit PIC18 suporta o
modo de comunicao USB e todos os produtos dessa famlia operam com velicidade Full-speed (FS-USB).
Esse software possui o firmware para o microcontrolador (PIC18F4550), bem como um driver para
o PC, permitindo que o computador trate o microcontrolador como um dispositivo USB. Inclue tambm
vrios projetos exemplos, solues desenvolvidas pela Microchip, para facilitar o desenvolvimento de
prticas de comunicao USB e o microcontrolador PIC, podendo essas ter diversas categoraias: HID,
CDC, MSB e genricas (Fugura 3.12).

Pgina 61

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 3.12 Categorias de perifricos USB.

O MCHPFSUSB um pacote de distribuio contendo uma variedade de firmwares


demonstrativos de USB relacionado para as famlias PIC18 e PIC24, juntamente com os controladores USB
para o PC e os drivers dos microcontroladores.
Nesses demostrativos incluem: CDC demo, Printer demo, Scanner de cdigo de barras demo,
emulador serial CDC, dispositivo de armazenamento em massa (Mass Storage) e HID, driver genrico
demo, leitor de carto SD e muito mais.
Para instalao do aplicativo Microchip Application Libraries siga o procedimento abaixo:

Procedimento
1) D dois cliques no arquivo Microchip Application Libraries v2009-07-24.EXE.
Na primeira janela que aparece, Welcome, contm as aplicaes que sero instaldas no seu
computador, clique em Next. (Figura 3.13)

Figura 3.13 Janela de Boas Vindas.

2) A janela seguinte License Agreement, clique na opo I Accept, indicando que voc est de acordo
com os termos da licena do software. (Figura 3.14)

Pgina 62

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 3.14: Janela de Licena.

3) Na janela Chosse Destination Location, deixe o diretrio padro (C:\Microchip Solutions) e clique no
boto Next. (Figura 3.15)

Figura 3.15: Janela de Escolha do Diretrio.

Pgina 63

www.picminas.com.br
Copyright

- Todos os diretos reservados

4) A janela Backup Replaced Files, deixe as marcaes padres e clique em Next. (Figura 3.16)

Figura 3.16: Janela de Backup Replaced Files.

5) Na janela seguinte, Star Installation, clique no boto Next e ir comear a instalao. (Figura 3.17)

Figura 3.17: Janela de Start Installation.

6) Clique na boto Finish.

Pgina 64

www.picminas.com.br
Copyright

- Todos os diretos reservados

3.4 GRAVAO DE UM FIRMWARE NO PIC UTILIZANDO UM MODULO


DE GRAVAO EXTERNO (ICD2 MICROCHIP)
Para podermos gravar em um microcontrolador, vamos precisar de um mdulo de gravao. No
nosso caso usaremos o mdulo de gravao MICROCHIP ICD2BR da labtools (disponvel em
http://www.labtools.com.br). (Figura 3.18)

Figura 3.18: Mdulo de gravao labtools.

Aps instalar, todos os programas, inclusive o MPLAB, conecte o mdulo de gravao no


computador. E siga as seguintes instrues:

Procedimento
1) Aparecer uma janela de instalao do driver para o reconhecimento do gravador, selecione a opo
No, no agora e clique no boto Avanar (Figura 3.19).

Figura 3.19: Janela de reconhecimento do dispositivo.

Pgina 65

www.picminas.com.br
Copyright

- Todos os diretos reservados

2) Na janela seguinte, deixe marcada a opo Instalar o software automaticamente (recomendvel) e


clique no boto Avanar (Figura 3.20).

Figura 3.20: Janela de instalao do driver.

3) Feito isso, espere a instalao do driver e na janela que ir aparecer, clique em Concluir. (Figura 3.21)

Figura 3.21: Janela de concluso.

Pgina 66

www.picminas.com.br
Copyright

- Todos os diretos reservados

Observao: Caso voc conectar o mdulo de gravao em outra porta de comunicao USB,
ter que fazer o procedimento de instalao do driver novamente. S necessrio fazer o procedimento
uma vez por porta.

Como exemplo de gravao de um firmware no microcontrolador, usaremos o bootloader


(exemplo mostrado na seo 3.3). Para a gravao do firmware, siga o procedimento abaixo:

Procedimento
1) Abra o projeto do bootloader (MCHPUSB.mcp) na pasta C:\MCHPFSUSB\fw\Boot (Diretrio padro de
instalao).
2) Sem alterar nada no cdigo, v no menu Programmer -> Select Programmer -> 2 MPLAB ICD2.
(Figura 3.22)

Figura 3.22: Seleo do mdulo de gravao.

3) Caso o Mplab no reconhea o mdulo de gravao, exibindo uma mensagem de aviso (Auto-connect
not enabled - Not connecting (Try enabling auto-connect on the ICD2 settings pages.). Siga os
passos abaixo, caso contrrio v para o item 4.
Clique no menu Programmer -> MPLAB ICD2 Setup Wizard. (Figura 3.23)

Figura 3.23: Seleo da opo Setup Wizard.

Pgina 67

www.picminas.com.br
Copyright

- Todos os diretos reservados

Na janela de Welcome, clique no boto Avanar. Na janela seguinte, Comunications, selecione


a porta de comunicao USB e clique em Avanar. (Figura 3.24)

Figura 3.24: Seleo da Porta de Comunicao.

Na janela seguinte, Power, deve escolhe a opo de alimentao do dispositivo, selecione a


opo Power target form the MPLAB ICD 2. Clique em Avanar. (Figura 3.25)

Figura 3.25: Seleo da alimentao do dispositivo.

Pgina 68

www.picminas.com.br
Copyright

- Todos os diretos reservados

Na janela seguinte, Connection, marque a opo MPLAB IDE automatically connects to the
MPLAB ICD2, e clique em Avanar. (Figura 3.26)

Figura 3.26: Janela de Conexo.

Na janela seguinte, Download, deixe marcada a opo MPLAB ICD2 automatically downloads
the required operating system, e clique em Avanar. (Figura 3.27)

Figura 3.27: Janela Download.

Pgina 69

www.picminas.com.br
Copyright

- Todos os diretos reservados

Na janela final clique em Concluir. Repita o passo 2 e verifique se o mdulo de gravao foi
reconhecido, caso ainda no seja, entre em contato com o fabricante do mdulo.
4) Se tudo correr bem, voc poder ver uma srie de cones habilitados na barra de ferramentas. (Figura
3.28)

Figura 3.28: cones habilitados.

A tabela 6 descreva cada um desses cones:


Program target device
Verify target device
memory
Release from Reset

Read target device


Erase target device

Reads device EEPROM


Verify target device
is erased

Hold in Reset

Reset and Connect to


ICD

Tabela 6: descrio dos cones de gravao.

5) Para gravar o firmware desejado, clique no boto Erase target device, em seguida clique em Program
target device. importante apagar o contedo do dispositivo primeiro para depois gravar o novo
firmware.
6) O MPLAB exibir uma mensagem de Programao feita com sucesso. (Figura 3.29)

Figura 3.29: Mensagem de que a programao foi realizada com sucesso.

3.5 FIRMWARE BOOTLOADER


Antes de explicarmos o conceito de Bootloader devemos primeiro entender a diferena entre um
firmware e um software. Firmware um programa que fica gravado dentro de um microcontrolador (na
memria no-voltil: ROM, EEPROM e FLASH), responsvel pelas instrues de funcionamento,
reconhecimento e operao de um determinado equipamento eletrnico (mquina de lavar, microondas,
celular, vdeo-game, cmera fotogrfica e outros), um programa para um hardware especfico, j um
software um programa desenvolvido para rodar em um computador, que no est vinculado a um nico
hardware especfico.
Por exemplo: o pacote Office um software ou um firmware? Seguindo o raciocnio supracitado se
o pacote Office fosse um firmware, deveriam existir inmeras verses do mesmo, uma para cada tipo e
variao de computador existente no mercado. Desta forma, fica fcil concluir que o Office, assim como o
prprio Sistema Operacional Windows, exemplo de software.

Pgina 70

www.picminas.com.br
Copyright

- Todos os diretos reservados

Outro exemplo seria um programa para controlar as funes de um forno de microondas. Este
seria um software ou firmware? Para respondermos a esta pergunta vamos nos fazer a seguinte pergunta:
seria possvel gravar o programa responsvel pelo funcionamento de um forno de microondas da marca LG
em outro forno de microondas da marca Consul? Provavelmente no, pois esses programas so
desenvolvidos para a montagem especfica de cada modelo de microondas, pensando em seus dispositivos
eletrnicos como, por exemplo, tipo de teclado e quantidade de botes no mesmo, nmero de
funcionalidades, tipo de display (LCD, 7 segmentos e outros), 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 microondas da marca LG foi
desenvolvido especificamente para aquele eletrodomstico, no sendo possvel grav-lo nem em outros
modelos de microondas da marca LG nem to pouco de outras marcas. Isso nos permite afirmar que este
programa trata-se de um firmware e no de um software.
Firmware

Software

Desenvolvido especificamente para um


determinado dispositivo eletrnico
(Microcontrolador + circuito especfico com
os componentes ligados ao C).

Desenvolvido para rodar em qualquer


computador com o mesmo sistema
operacional (Windows, Linux, OS e outros)
independente da configurao do hardware.

Depende da estrutura externa ligada ao C,


uma vez mudada a estrutura deve mudar o
firmware. Por exemplo: um programa
desenvolvido para executar numa TV
Toshiba no funciona numa TV LG.
Exemplos de equipamentos que usam
firmware: microondas, DVD player, TV,
controle remoto, celular, vdeo-game,
relgio digital e etc.

No depende de todos os dispositivos


(placa de vdeo, som, modem) ligados no
computador. Funciona apenas com a
configurao mnima.
Exemplos de equipamentos que usam
software: computadores pessoais, celulares
modernos com sistema operacional
embarcado (Windows Mobile, OS, Linux).

Outro conceito importante que devemos abordar antes de falarmos do Bootloader so os tipos de
gravao que um microcontrolador pode ter, ou seja, as formas possveis nas quais podemos armazenar
(carregar) o programa desenvolvido para um determinado microcontrolador dentro de sua memria novoltil (geralmente uma memria FLASH). Este programa ir controlar todas as funcionalidades do
microcontrolador para uma determinada tarefa. Iremos cham-lo de Firmware de Aplicao. O modo mais
comum de gravar o Firmware de Aplicao chamado de gravao offboard, que como o prprio nome
diz, necessrio que o microcontrolador seja retirado da sua plataforma de aplicao (placa de circuito
impresso que liga os perifricos do microcontrolador aos dispositivos externos que ele ir controlar, por
exemplo: botes, rels, LEDs, display, etc.) e colocado em outro dispositivo, chamado Gravadora, para
que o Firmware de Aplicao seja gravado em sua memria interna no-voltil, como visto no item 3.4. O
outro mtodo e conhecido como gravao in-circuit, onde o microcontrolador gravado no seu prprio
circuito, ou seja, na sua prpria plataforma de aplicao. Neste caso razovel falarmos que o prprio
microcontrolador ir se programar. Isso possvel porque em uma pequena parte de sua memria interna
no-voltil (FLASH) foi gravado previamente outro firmware que ir coordenar a transferncia do Firmware
de Aplicao do computador para a memria interna no-voltil do microcontrolador. Esse firmware
chamado de Bootloader, expresso em ingls que significa Rotina de Partida.
Desta forma, podemos que o Firmware Bootloader (previamente gravado em uma pequena parte
da memria no-voltil do microcontrolador pelo mtodo off-board) o programa que inicia a gravao (o
carregamento) de Firmwares de Aplicao no microcontrolador pelo mtodo in-circuit. No caso do
PIC18F4550 isso feito atravs da porta USB que comunica com o computador por meio do programa
PDFSUSB fornecido gratuitamente pela empresa Microchip. Maiores detalhes sobre este procedimento so
vistos na seo 3.7. A maior vantagem de sistemas que possuem essa funcionalidade que s
necessria a gravao pelo mtodo off-board apenas uma nica vez, para a gravao do BootLoader. Isso
porque, para o carregamento de novos firmwares de aplicao, ou para atualizao de firmwares j

Pgina 71

www.picminas.com.br
Copyright

- Todos os diretos reservados

existentes, utilizado o mtodo in-circuit, sem haver a necessidade de retirar o microcontrolador de sua
plataforma de aplicao.
O Bootloader est usando a memria do endereo 0x000h at o endereo 0x800h. Este o nico
programa que deve ser gravado na memria interna do PIC, por meio de um circuito de gravao externo
(uma gravadora PIC).
Uma vez que o Bootloader est armazenado nos endereos supracitados da memria interna,
no-voltil do PIC, ele passa a comunicar com o PC via USB, por onde ser possvel inserir outros cdigos
(aplicaes, exemplos) por meio da porta de comunicao USB.
O firmware Bootloader um programa que vai gerenciar o boot do microcontrolador. Ele o
primeiro programa dentro da memria do seu microcontrolador. Ele est alocado no endereo 0x000 at o
endereo 0x800. E assim define duas formas de inicializao do kit de desenvolvimento:
1: apertando o boto Reset.
2: apertando o boto Boot, segurando-o e apertando o boto de Reset.
A primeira forma de inicializao faz com que o microcontrolador execute tudo aquilo que est
gravado a partir da linha 0x800. E a segunda faz com que o microcontrolador execute a partir da linha
0x000.

3.6 CONEXO DO KIT DE DESENVOLVIMENTO NO COMPUTADOR


Aps a gravao do Bootloader, transfira o microcontrolador para o kit de desenvolvimento. Agora
ele est pronto para ser reconhecido como um dispositivo USB e possibilita a gravao do PIC18F4550
atravs dele, sem precisar do um mdulo de gravao externo. (Caro aluno: o seu kit de desenvolvimento j
vem gravado o Bootloader no microcontrolador).
Observao: voc s vai precisar do mdulo de gravao externo, caso perca o Bootloader
gravado no microcontrolador, mas isso s acontece por alguma falha cometida pelo usurio.
Para usar o kit de desenvolvimento siga o procedimento abaixo:

Procedimento
1) Conecte o kit de desenvolvimento em uma das portas de comunicao USB do seu computador;
2) Faa o processo de inicializao do kit, clique e segure o boto de BOOT, clique no boto de RESET (
importante seguir a ordem dos botes). Esse processo importante para identificar o modo de reset
que o microcontrolador ir executar, ou seja, a partir de qual rea da memria o microcontrolador ir
executar (ou da 0x000 ou 0x800)
3) Uma janela de instalao do driver ir abrir, selecione a opo No, no agora e clique no boto
Avanar. (Figura 3.30)

Pgina 72

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 3.30: Janela de instalao de driver.

4) Na janela seguinte, marque a opo Instalar de uma lista ou local especfico (avanado). Clique em
Avanar. (Figura 3.31)

Figura 3.31: Especificar um local.

5) Na janela seguinte, selecione a opo incluir este local na pesquisa e digite o diretrio C:\Microchip
Solutions\USB Tools\MCHPUSB Custom Driver\MCHPUSB Driver\Release, ou se preferir clique no
boto Procurar e v at o diretrio que possui o driver (C:\Microchip Solutions\USB Tools\MCHPUSB
Custom Driver\MCHPUSB Driver\Release). Clique em Avanar. (Figura 3.32)
Pgina 73

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 3.32: Escolha do local de pesquisa.

6) Na instalao do driver do PIC18F4550, abrir uma janela de Instalao de hardware. Clique em


continuar assim mesmo. (Figura 3.33)

Figura 3.33: Janela Instalao de Hardware.

7) Espere a instalao do driver e na ltima janela, clique no boto Concluir. (Figura 3.34)

Pgina 74

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 3.34: Janela de concluso.

8) Esse procedimento faz com que o kit seja reconhecido como uma porta de comunicao. (Mais detalhes
sero dados mais pra frente)
Observao: Caso voc conectar o kit de desenvolvimento em outra porta de comunicao USB,
ter que fazer o procedimento de instalao do driver novamente. S necessrio fazer o procedimento
uma vez por porta.

3.7 GRAVAO DE UM FIRMWARE NO KIT PICMINAS UTILIZANDO O


PROGRAMA PICDEM FS USB
Como seu kit de desenvolvimento um mdulo de gravao para o PIC18F4550, vamos aprender
a gravar no mdulo de gravao, para isso siga os seguintes passos:

Procedimento
1) Abra o programa PDFSUSB. Execute o processo de inicializao do kit de desenvolvimento (clique no
boto de BOOT segure e em seguida clique no boto de RESET). Na janela que ir se abrir possvel
selecionar o dispositivo que deseja fazer a gravao. (Figura 3.35)

Pgina 75

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 3.35: Janela do programa PICDEM FS USB, usando para gravao do firmware no Microcontrolador.

2) Aps a seleo do dispositivo vamos carregar o cdigo a ser gravado. Usaremos um projeto exemplo
da Microchip disponvel no endereo C:\Microchip Solutions\USB Precompiled Demos\Picdem
fsusb\MCHPUSB Bootloadable. Clique no boto Load HEX File. V no diretrio C:\Microchip
Solutions\USB Precompiled Demos\Picdem fsusb\MCHPUSB Bootloadable (Figura 3.36a). Selecione o
arquivo hexadecimal disponvel nesse diretrio (no exemplo USB Device - HID - Mouse - C18 - PICDEM
FSUSB - MCHPUSB Bootload.hex) (Figura 3.36b). Clique em abrir.

Figura 3.36a: Janela de seleo do diretrio.

Pgina 76

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 3.36b: Janela de seleo do arquivo hexadecimal.

3) O arquivo gravador na memria do microcontrolador um arquivo hexadecimal.


4) Antes de gravar o programa de bom costume apagar a memria do C. E aps isso, gravar o novo
cdigo no PIC. Os botes de apagar e gravar esto mostradas na figura 3.37.

Figura 3.37: Botes de Apagar e Programar o microcontrolador.

5) O interessante nesse processo que ao apagar a memria do C, o software faz isso a partir do
endereo de memria 0x800 (final do programa Bootloader) e o processo de gravao tambm, o
Pgina 77

www.picminas.com.br
Copyright

- Todos os diretos reservados

software grava a partir do endereo 0x800. Assim o firmware Bootloader permanece gravado na
memria do microcontrolador sem dados.
6) Aps gravar aparecer a mensagem de programao completada (Figura 3.38).

Figura 3.38: Mensagem de gravao completa.

7) Aps isso, voc pode executar o programa apertando o boto Execute do software, ou o boto de
RESET do kit de desenvolvimento.
8) Para esse exemplo especifico aparecer uma janela de instalao de driver (Mouse). E o cursor do
mouse comear a rodar.
9) Para parar de rodar desconecte o kit do computador ou ento faa o procedimento de inicializao do
kit de desenvolvimento.

Neste captulo, falamos sobre:


Os softwares necessrios para o desenvolvimento de firmware na
linguagem C;
Procedimentos de instalao dos mesmos;
Procedimentos de gravao no PIC e no KIT de desenvolvimento.

Pgina 78

www.picminas.com.br
Copyright

- Todos os diretos reservados

Captulo 4 Programao de Microcontroladores


At aqui foram mostradas praticamente todas as teorias e conceitos necessrios para que voc
tenha um bom rendimento durante o aprendizado da programao. Agora daremos informaes teis para
que voc seja capaz de criar e projetar seus prprios programas.
O desenvolvimento de programas para microcontroladores e microprocessadores pode se
transformar em uma tarefa rdua e desgastante medida que a complexidade da aplicao desenvolvida
aumenta. (PEREIRA, 2008)
Os primeiros dispositivos programveis eram programados com cdigos chamados cdigos de
mquina, essa programao extremamente complexa e requer muito tempo para o desenvolvimento da
aplicao. A linguagem consiste em dgitos binrios (zeros e uns) inseridos por meio de um dispositivo de
entrada de dados (teclado, leitora de cartes, fitas perfuradas ou discos magnticos) para ento serem
executados pela mquina. (PEREIRA, 2008)
Para facilitar a programao dos microcontroladores foi criada a linguagem Assembly, uma
linguagem de baixo nvel, que substituiu uma seqncia de zeros e uns, por comandos pr-definidos de
acordo com o processador utilizado, o que facilitou um pouco a programao destes dispositivos, pois a
representao em Assembly da instruo muito mais simples do que em linguagem de mquina. Porm
no resolveu totalmente os problemas dos programadores. O Assembly possui baixa portabilidade, pois
programas feitos para um determinado processador tem que ser totalmente traduzidos para serem
utilizados em outro modelo. Este obstculo dificultava a confeco de sistemas operacionais, que possuam
uma estrutura muito complexa e exigiam grande conhecimento do programador sobre o hardware.
Com a criao da linguagem C, os sistemas operacionais passaram a ter uma linguagem que alia
a eficincia de uma linguagem de baixo nvel com a praticidade de uma linguagem de alto nvel, que facilita
o desenvolvimento da lgica de programao. Isto fez com que a linguagem C fosse considerada uma
linguagem de alto nvel muito poderosa, eficiente e muito utilizada at hoje. Por este motivo ela foi escolhida
para escrever sistemas operacionais como o UNIX, o Windows e o Linux. (PEREIRA, 2008)
Sua alta eficincia de compilao dos programas para a linguagem de mquina a transforma em
uma das linguagens mais utilizadas hoje para desenvolvimento de firmwares para microcontroladores. Esta
eficincia devido a sua proximidade com a linguagem Assembly, reduzindo o tamanho dos programas e,
conseqentemente, seu tempo de processamento. Devido a pouca memria de programa e de dados nos
microcontroladores estas so caractersticas muito importantes desta linguagem.
A escolha da linguagem de programao C natural, pois a maioria dos microcontroladores
disponveis no mercado contam com compiladores de linguagem C. E ainda o C permite a construo de
programas e aplicaes muito mais complexas do que as criadas em linguagem Assembly. Assim com a
utilizao de uma linguagem de alto nvel como C, o programador vai preocupar-se mais com a
programao da aplicao, do que com as tarefas como o controle e a localizao das variveis, operaes
matemticas e lgicas, verificao com bancos de memria e outras. (PEREIRA, 2008)

4.1 PRINCPIOS DE PROGRAMAO


A elaborao de um determinado programa, feito diretamente em um computador, pode se tornar
uma tarefa difcil, devido complexidade inerente aos problemas requerendo uma maior capacidade de
concentrao. A diviso de um programa em partes menores (modularizao) torna a tarefa do
programador mais fcil.
Necessitamos, ento, separar o processo de programao em duas etapas: na primeira, devemos
nos concentrar em elaborar um algoritmo e, na segunda, em implementar este algoritmo em linguagem de
programao. Devemos distinguir ainda dois aspectos relevantes e complementares na elaborao de
algoritmos: um esttico que geralmente consiste em um texto contendo comandos/instrues que sero
Pgina 79

www.picminas.com.br
Copyright

- Todos os diretos reservados

executados numa ordem prescrita; outro dinmico, no que se refere aos efeitos provocados pela sua
execuo (resultado final).
Para elaborar um bom algoritmo necessrio relembrar alguns conceitos bsicos de
programao, tais como linguagem estruturada, fluxogramas, variveis, dados e operadores.
A programao pode ser colocada como a traduo do pensamento lgico necessrio para a
execuo e cumprimento de uma tarefa especfica, organizadas em uma sequncia de comandos
interpretadas e executadas por uma mquina. Ento o programa est ligado ao ordenamento lgico do
raciocnio humano. (PEREIRA, 2008)
A construo de um programa um processo de levantamento e soluo de problemas, seguindo
um conjunto de procedimentos genricos, listados abaixo: (PEREIRA, 2008)
1) Exposio do problema: descrever detalhadamente o problema a ser resolvido;
2) Anlise da soluo: elaborar soluo (es) que podem resolver o problema em questo;
3) Codificao da soluo: descrio sequencial passo a passo da soluo que melhor resolve
o problema. (Montagem do algoritmo)
4) Traduo do cdigo: traduo do algoritmo em comandos que sero corretamente
interpretados pela linguagem de programao utilizada.
5) Depurao (em ingls DEBUG): o processo de verificao e teste do programa de forma a
localizar e solucionar todas as eventuais falhas e erros de codificao que tenham acontecido em
quaisquer fases anteriores.
Para facilitar a execuo das tarefas listadas e achar uma soluo ideal so usados diagramas e
fluxogramas, que permitem uma melhor visualizao do problema.

4.1.1 ALGORITMOS ESTRUTURADOS


Existem tcnicas que permitem sistematizar e ajudar o desenvolvimento de algoritmos para a
resoluo de grandes e complexos problemas nos computadores. Essas tcnicas so de desenvolvimento
estruturado de algoritmos. (FARRER, BECKER, FARIA, MATOS, SANTOS E MAIA, 1998)
A Programao Estruturada uma metodologia de construo de algoritmo (programas) para
proporcionar:
Maior facilidade de escrita (elaborao);
Maior facilidade de leitura (compreenso);
Permitir o aproveitamento de partes dos programas (dinamismo);
Facilitar a manuteno e modificao dos programas (alterao).
A arte de programar consiste na arte de organizar e dominar a complexidade.
A idia bsica da Programao Estruturada permitir, ao programador, reduo da complexidade
dos problemas propostos em trs nveis:
1) Desenvolvimento Top-Down: antes de escrever um programa, necessrio um processo de
raciocnio que leve a uma anlise do problema, passando por um algoritmo em termos gerais
at um algoritmo mais detalhado. As diferentes fases desse processo de concepo de
programa so fixadas por escrito. Cada nova fase obtida por refinamento da fase anterior,
at chegar a um nvel de detalhe que permita implementar o algoritmo, diretamente na
mquina, em linguagem de programao.
2) Modularizao: a soluo do problema, durante o processo descrito acima, vai sendo dividida
em solues de subproblemas, permitindo a diviso do programa em forma natural, com
subfunes claramente definidas, podendo ser implementadas separadamente por diversos
programadores.
Pgina 80

www.picminas.com.br
Copyright

- Todos os diretos reservados

3) Estrutura de Controle: programar cada mdulo com as estruturas bsicas de controle:


seqncia simples, condicional e comando repetitivo, que correspondem seqncia natural
de execuo, evitando o uso de desvios.
A tcnica do desenvolvimento estruturado de algoritmos, por si s, no atinge automaticamente os
objetivos visados. Ela apenas preconiza uma maneira sistemtica que ajuda a atingir estes objetivos.
necessrio ainda, por parte de quem a emprega esforo e disciplina na busca incessante da simplicidade e
da clareza. (FARRER, BECKER, FARIA, MATOS, SANTOS E MAIA, 1998)
Clareza e simplicidade de um algoritmo so atributos inestimveis quando se faz a sua
manuteno (melhoria, correo e aperfeioamento de algum algoritmo) e sua modificao (para atender a
novas aplicaes). O desenvolvimento estruturado dos algoritmos, aliado busca da clareza e da
simplicidade, facilita a sua manuteno e sua modificao. (FARRER, BECKER, FARIA, MATOS, SANTOS
E MAIA, 1998)
Tambm deve ser observado o fato de que s se torna um programador quem escreve programas.
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.1.2 FLUXOGRAMAS
Fluxogramas so ferramentas de representao grfica que auxiliam a tarefa de codificao de um
programa, s vezes a soluo de um problema fica bem mais clara com a criao de fluxograma do mesmo.
Basicamente, 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 a realidade de uma
determinada tarefa.
Dados: normalmente este smbolo utilizado para descrever um processo de
uma determinada tarefa.
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. Em um dos casos o fluxo do
programa desviado e no outro, normalmente, o programa seguir na sua
sequncia normal.

Os smbolos utilizados nos fluxogramas tm por objetivo evidenciar origem, processo e destino da
informao componente de um sistema. possvel utilizar smbolos diferentes dos convencionais, desde
que no ofeream dificuldade de compreenso para o leitor e desde que sejam definidos previamente.
Um fluxograma fornece uma compreenso detalhada de um processo e procura apresentar o
processo passo a passo, ao por ao.
O primeiro exemplo mostra um problema simples de somar dois nmeros (A e B) e armazenar o
resultado em C. (PEREIRA, 2008)

Pgina 81

www.picminas.com.br
Copyright

- Todos os diretos reservados

Incio

Pega o primeiro
nmero (A)

Pega o segundo
nmero (B)

Soma A + B e
guarda em C

Fim

Outro exemplo, um programa para contar de 0 at 10. (PEREIRA, 2008)


Incio

Contagem = 0

Soma 1 contagem

Contagem = 10?

No

Sim

Fim

4.1.3 VARIVEIS E DADOS


Varivel uma representao simblica para elementos pertencentes a um determinado conjunto.
As variveis so armazenadas na memria da mquina e podem assumir qualquer valor dentre o conjunto

Pgina 82

www.picminas.com.br
Copyright

- Todos os diretos reservados

de valores possveis. Varivel ento pode ser entendida como um identificador que representa ou identifica
um dado qualquer. (PEREIRA, 2008)
Para criao de variveis existem algumas regras que devem ser seguidas:

Usar nomes escritos apenas com letras e dgitos numricos;


Usar nomes escritos com letras maisculas;
Usar nomes comeando sempre por letras;
Utilizar nomes no muito extensos.

Exemplos: sintaticamente so identificadores


Vlidos A, VAR1, IPCR95, PI
Invlidos 2PIR, 478, 3x5, NOTA 1, DIA/MS
Sempre que necessitamos armazenar algum tipo de dado, seja ele proveniente do mundo exterior
(uma tecla pressionada, uma tenso lida externamente) como do prprio programa (o resultado de uma
equao, por exemplo) ser utilizada uma varivel. (PEREIRA, 2008)
As variveis ficam localizadas em um espao na memria RAM do dispositivo. Durante o processo
de execuo de um programa uma varivel poder assumir diversos valores deferentes, mas nunca dois ou
mais valores ao mesmo tempo. A classificao de uma varivel depende do contedo que elas armazenam:
numricas, caractere, alfanumricos e lgicas. Usamos variveis numricas para armazenar dados
numricos, que podem ser: inteiros e reais ou ponto flutuante. (PEREIRA, 2008)
A quantidade de memria utilizada para armazenar uma varivel depende do seu tipo: variveis
inteiras so normalmente encontradas com tamanhos de 8, 16 ou 32 bits. Uma varivel inteira de 8 bits
pode armazenar um valor entre 0 e 255, uma varivel inteira de 16 bits pode armazenar um valor entre 0 e
65535 e uma varivel inteira de 32 bits pode armazenar um valor entre 0 e 4 294 967 295. Observe que os
nmeros representados anteriormente so somente positivos, no caso de representao de nmeros com
sinal, a magnitude de representao reduz-se metade daquela sem sinal. (PEREIRA, 2008)
Variveis do tipo real ou ponto flutuante so normalmente encontradas em tamanho de 16, 32, 64
ou 80 bits. importante saber que num sistema de 8 bits, uma varivel de 16 bits vai ocupar duas posies
de memria. As variveis do tipo caractere podem ser agrupadas em conjuntos de variveis para formar
frases ou textos. As variveis do tipo alfanumrico so utilizadas para armazenar tanto caracteres como
valores numricos, mas nunca os dois simultaneamente. Finalmente, temos as variveis do tipo lgico,
capazes de armazenar um estado lgico: verdadeiro ou falso. (PEREIRA, 2008)

4.1.4 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. (PEREIRA, 2008)
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 *)
Pgina 83

www.picminas.com.br
Copyright

- Todos os diretos reservados

4.2 CARACTERSTICAS DO COMPILADOR C18


Como j foi dito, o compilador MPLAB C18 livre apenas por 60 dias e uma melhoria do
compilador ANSI C para microcontroladores PIC18 PICmicro. O compilador deriva do padro ANSI apenas
onde o padro tem conflitos com o suporte eficiente de microcontroladores PICmicro.
O compilador MPLAB C18 tem as seguintes caractersticas:
- Compatvel com ANSI 89;
- Integrao com o MPLAB IDE para ser fcil de usar gerenciando o projeto e o cdigo no nvel de
depurao;
- Gerao de mdulo de realocao de objetos aumentando a reutilizao do cdigo;
- Compatibilidade com mdulos de objetos gerados pelo MPASM assembler, permitindo a total liberdade em
misturar programas em assembly e C em um nico projeto;
- Acesso transparente de leitura/escrita para memria externa;
- Forte suporte para assembly, quando um controle total absolutamente necessrio;
- Eficiente gerador de cdigo com otimizao em multi-nvel;
- Extenso suporte as bibliotecas, incluindo PWM, SPI, I2C, UART, USART, manipulao de string e
bibliotecas matemticas.

- Total controle no nvel usurio sobre os dados e alocao de usurio.

4.2.1 TIPOS DE DADOS E LIMITES


TIPO INTEIRO
O compilador MPLAB C18 suporta os tipos de inteiros definidos pelo padro ANSI. A faixa dos
padres inteiros esto documentadas na tabela 5:

Tabela 5: Tipos de dados inteiros e seus limites.

TIPO PONTO-FLUTUANTE
O tipo ponto-flutuante de 32 bits nativo para o MPLAB C18 usado ou o tipo de dados Double ou
o Float. A faixa do ponto-flutuante est documentada na tabela 6:

Pgina 84

www.picminas.com.br
Copyright

- Todos os diretos reservados

Tabela 6: Tipos de dados ponto-flutuante e seus limites.

MODIFICADORES DE TIPO
A linguagem C admite comandos especiais para modificar os tipos bsicos, de forma a obtermos
outros tipos de dados. Esses modificadores so: signed, unsigned, shot e long. (PEREIRA, 2008)
O modificador signed pode ser utilizado para modificar um tipo base de dados de forma que ele
possa representar tanto nmeros positivos como nmeros negativos. (PEREIRA, 2008)
O modificador unsigned define um tipo sem sinal. (PEREIRA, 2008)
O modificador short utilizado para definir uma varivel com tamanho menor que o tipo
modificado, ou seja, uma verso reduzida do tipo especificado. Assim, se especificarmos uma varivel como
sendo do tipo short int, ela ser uma verso reduzida do tipo int. (PEREIRA, 2008)
Finalmente, o modificador long, utilizado para ampliar a magnitude de representao do tipo
especificado. Um tipo de dados long int, por exemplo, ter um tamanho de 32 bits, ou seja, ocupar mais
espao na memria RAM do PIC. (PEREIRA, 2008)

TIPO DE ARMAZENAMENTO DE DADOS ENDIANNESS


Endianness refere-se ordenao de bytes em um valor multi-byte. MPLAB C18 armazena os
dados em formato little-endian, bytes em menor endereos tm menor significado (o valor armazenado
Extremidade menor primeiro (em ingls little-end-first), conforme mostra a figura abaixo:

Figura 4.1: Ordenao Little-Endian.

MODIFICADORES DE ARMAZENAMENTO
Os modificadores de armazenamento so elementos especiais utilizados para controlar a forma
como o compilador ir lidar com o armazenamento da varivel. (PEREIRA, 2008)

Pgina 85

www.picminas.com.br
Copyright

- Todos os diretos reservados

MPLAB C18 suporta os modificadores de armazenamento ANSI (auto, extern, register, static e
overlay), alm desse tipos de classes/funes ele tambm tem outros dois tipos:
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. (PEREIRA, 2008)
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. (PEREIRA, 2008)
REGISTER
utilizado para instruir ao compilador que tente armazenar a varivel diretamente em um
registrador da CPU. (PEREIRA, 2008)
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. (PEREIRA, 2008) O padro de classe de uma funo
auto. Isso pode ser modificado explicitamente com a palavra static antes da funo.
OVERLAY (Superposio)
O compilador MPLAB C18 introduziu um armazenamento de classe do overlay. O Tipo overlay
aplicado somente quando o compilador est operando no modo Non-extended (ver arquivo
MPLAB_C18_Users_Guide_51288c.pdf seo 1.2.5 Selecting the Mode). O overlay deve ser aplicado
em variveis locais (mas no em parmetros formais, definio de funes ou variveis globais). O overlay
ir atribuir os smbolos associados uma funo especfica, uma seo esttica de overlay. Mais informaes
esto no arquivo MPLAB_C18_Users_Guide_51288c.pdf, disponvel na rea do Aluno.

4.2.2 INCLUIR CAMINHO DE PROCURA DE ARQUIVOS


ARQUIVOS DE SISTEMAS HEADER
Arquivos fontes (Source files) includos no cdigo com #include <filename> so procurados no
caminho especificado no ambiente de variveis MCC_INCLUDE.
ARQUIVOS DE USURIO HEADER
Arquivos fontes (Source files) includos no cdigo com #include filename so procurados no
caminho especificado pelo usurio, onde est contido o arquivo.

4.2.3 PRAGMAS
Cada aplicao em C suporta algumas caractersticas nicas para a sua mquina ou sistema
operacional. Alguns programas, por exemplo, necessitam de exercer um controle preciso sobre reas da
memria onde os dados so colocados ou ento controlar a maneira como certas funes recebem
parmetros. A diretiva #pragma uma maneira para cada compilador oferecer para a mquina ou o sistema
operacional especfico recursos compatveis com a linguagem C para fazer esse controle.
Atravs da diretiva #pragma, o programa pode definir diretivas que podem ser passadas ao
compilador. Se o compilador no identificar o nome da diretiva, ele simplesmente ignora #pragma sem
qualquer aviso ou mensagem de ERRO. Pragmas podem ser usados em declaraes condicionais, para

Pgina 86

www.picminas.com.br
Copyright

- Todos os diretos reservados

fornecer novas funcionalidades pr-processadas ou prestar informaes definidas na programao para o


compilador.
#pragma nome_da_diretiva
A seo declarada pragma altera a seo corrente em que o MPLAB C18 vai atribuir as
informaes dos tipos associados.
Uma seo uma parte da aplicao localizada em um endereo especfico da memria. Estas
sees podem conter cdigo ou dados. Uma seo pode ser localizada em qualquer program ou data
memory. Existem dois tipos de sees para cada tipo de memria:
program memory
- code contm instrues executveis;
- romdata contm variveis e constantes da memria de dados.
data memory
- udata contm variveis do usurio estaticamente atribudas e no-inicializadas;
- idata contm variveis do usurio estaticamente atribudas e inicializadas.
Sintaxe:

Uma seo diretiva pragma sem nome redefine a alocao dos dados do tipo associado para uma
seo padro do mdulo corrente. Por exemplo:

4.2.4 ARQUIVOS DE REGISTRADORES ESPECFICOS DO MICROCONTROLADOR


O arquivo de registradores especficos do microcontrolador um arquivo assembly que contm
definies para todos os registradores de funo especial em um dado dispositivo. Esse arquivo, quando
compilado, tornar um arquivo objeto que precisar ser linkado na aplicao (por exemplo p18F4550.asm
compilado para p18F4550.o). Este arquivo objeto est contido no p18xxxx.lib (por exemplo p18F4550.o est
contido no p18F4550.lib)
O cdigo fonte para o arquivo de registradores especficos encontrado em ambos os diretrios
c:\mcc18\src\traditional\proc e c:\mcc18\src\extended\proc. O cdigo objeto compilado
encontrado no diretrio c:\mcc18\lib, sendo c:\mcc18 o diretrio onde o compilador est instalado.

Pgina 87

www.picminas.com.br
Copyright

- Todos os diretos reservados

Por exemplo, PORTA est definido no arquivo de registrador especficos do microcontrolador


PIC18F4550 como:
SFR_UNBANKED0
UDATA_ACS H'F62'
PORTA
PORTAbits
RES 1 ; 0xF80
A primeira linha especifica o banco de registradores onde PORTA est localizado e o endereo de
inicializao para aquele banco. PORTA tem dois rtulos (Labels), PORTAbits and PORTA, ambos referemse para o mesmo local (nesse caso 0xF80).

4.2.5 CONFIGURAO DE PALAVRAS


O linker script padro para cada parte contm uma seo nomeada CONFIG. Por exemplo, o
arquivo rm18f4550.lkr, disponvel no site para download na rea do Aluno, contm as seguintes sentenas:
CODEPAGE

SECTION

NAME=config

START=0x300000

NAME=CONFIG

ROM=config

END=0x30000D

PROTECTED

A diretiva #pragma romdata CONFIG usada para definir a seo atual romdata para a seo
nomeado CONFIG. A configurao do dispositivo pode ser especificado usando a macro _CONFIG_DECL e
o #define localizado no arquivo cabealho especfico do porcessador. O exemplo abaixo mostra um
configurao especfica explicada na tabela 7:
#include <p18f4550.h>
#pragma romdata CONFIG
_CONFIG_DECL (_CP_ON_1L,
_OSCS_ON_1H & _OSC_LP_1H,
_PWRT_ON_2L & _BOR_OFF_2L & _BORV_42_2L,
_WDT_OFF_2H & _WDTPS_1_2H,
_CCP2MUX_OFF_3H,
_CONFIG4L_DEFAULT);
#pragma romdata
void main (void)
{
...
}

Tabela 7: Exemplo de configurao.

Pgina 88

www.picminas.com.br
Copyright

- Todos os diretos reservados

4.2.6 FERRAMENTAS DE LINGUAGEM


Os diretrios bin e mpasm do compilador MPLAB C18 instalado no diretrio contm os arquivos
executveis que incluem o MPLAB C18, assembler MPASM e o linker MPLINK. Segue abaixo, na tabela 5,
uma breve descrio dos programas:
Executvel

Descrio

mcc18.exe

Esse o prprio compilador. Ele pega o arquivo C de entrada (por exemplo:


file.c) e chama o modo executvel do compilador Extended ou Non-extended.

mcc18-extended.exe

Esse modo executvel Extended do compilador. Ele chamado elo


compilador quando compila no modo Extended. Ele chama o pr-processo
cpp18.exe para pr-processar arquivo C e, em seguida, compila o arquivo prprocessado de sada e gera o arquivo COFF para ser passado para o linker.

mcc18-traditional.exe

Esse modo executvel Non-extended do compilador. Ele chamado elo


compilador quando compila no modo Non-extended. Ele chama o pr-processo
cpp18.exe para pr-processar arquivo C e, em seguida, compila o arquivo prprocessado de sada e gera o arquivo COFF para ser passado para o linker.

cpp18.exe

Esse o pr-processador C.

mplink.exe

Esse o programa driver para o linker. Ele pega a entrada do linker script,
arquivos objetos e arquivos de bibliotecas e passa-os para o _mplink.exe. Ele
ento leva o arquivo de sada COFF pelo _mplink.exe e passa-o para
mp2cod.exe e mp2hex.exe.

_mplink.exe

Esse o linker. Ele pega o linker script de entrada (por exemplo pic18f4550.lkr),
o arquivo objeto (.o) e os arquivos bilbiotecas e o output executvel COFF (por
exemplo file.out ou file.cof). Esse arquivo COFF o resultado no atribudo dos
endereos de dados e o cdigo para a entrada de arquivos objeto e arquivos de
referncia a arquivos objetos e bibliotecas. _mplink.exe tambm
opcionalmente produz o arquivo map (Por exemplo file.map) que contm
informaes detalhadas da alocao do cdigo e dados.

mp2cod.exe

Esse o conversor de arquivo COFF para COD. O arquivo COD um arquivo


no formato de depurao simblico, o qual usado pelo MPLAB IDE.
mp2cod.exe pega arquivos COFF de entrada produzidos pelo _mplink.exe e
arquivos COD de sada que mostram a correspondncia entre o cdigo fonte
original e o cdigo de mquina.

mp2hex.exe

Esse o conversor de arquivo COFF para arquivo hex. O arquivo hex o


arquivo com o formato legvel pelo programador PICmicro, tais como o
PICSTART Plus ou o PRO MATE II. mp2hex.exe pega o arquivo COFF de
entrada produzido pelo _mplink.exe e o arquivo de sada hex.

mplib.exe

Essa a bibliotecria. Ela permite a criao e gerenciamento do arquivo de


bibliotecas (por exemplo file.lib) que funciona como um arquivo para arquivos
objetos. Arquivos bibliotecas so usados para organizar os arquivos objetos
dentro de um cdigo reutilizvel.

mpasm.exe

Esse o comand-line assembler. Ele pega o cdigo fonte de entrada em


assembly (por exemplo file.asm) e o arquivo COFF de sada ou o arquivos hex
e arquivos COD. Ele tambm cria o arquivo de listagem (por exemplo file.lst) e
o arquivo de erro (por exemplo file.err), o qual contm os erros ou avisos
emitidos durante o processo de compilao.

Pgina 89

www.picminas.com.br
Copyright

- Todos os diretos reservados

A figura 4.2, mostra o fluxo de execuo da ferramenta de linguagem:

Figura 4.2: Fluxo de execuo da ferramenta de linguagem.

4.3 CRIANDO PROJETOS NO MPLAB


Como j foi dito, o MPLAB um ambiente de desenvolvimento fornecido pela MICROCHIP, que
tem a funo de um gerenciador, para desenvolvimento de aplicaes com a famlia de microcontroladores
PIC e controle de sinais digitais. Ele chamado de Ambiente Integrado de Desenvolvimento (em ingls
Integrated Development Environment), ou IDE, porque oferece um nico ambiente integrado para
desenvolver o cdigo para microcontroladores.
O Projeto no MPLAB um conjunto de arquivos e informaes que diz ao ambiente integrado qual
o PIC que estamos usando, qual a linguagem de programao usada, qual o layout das janelas etc. Enfim o
projeto o nosso trabalho de uma forma global. E para ele guardar todas essas informaes basta salvar e
Pgina 90

www.picminas.com.br
Copyright

- Todos os diretos reservados

fechar s o projeto, sem se preocupar em fechar todas as janelas abertas no ambiente integrado.
importante lembrar que o MPLAB se integra ao ambiente Windows, permitindo cpia de arquivos, de textos
de um aplicativo para outro de uma forma bem simplificada.
Ao executar o MPLAB, dever visualizar uma janela como a da figura abaixo:

Figura 4.3: Janela do MPLAB.

A barra de ttulo ir conter o nome do projeto aberto. A janela Workspace ir mostrar a estrutura
dos arquivos associados ao nosso projeto. A janela Output vai ser a janela informativa sobre os resultados
de buscas de variveis e resultado de compilao.
O prximo passo criar um projeto usando o PROJECT WIZARD. Um projeto o caminho onde
os arquivos so organizados para serem compilados e montados. Para criar o primeiro projeto clique no
menu Project e em seguida selecione a opo Project Wizard.
A partir da janela Welcome, que ir aparecer, clique em Avanar para avanar (Figura 4.4):

Pgina 91

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 4.4: Janela Welcome.

Na janela seguinte, Step One, permite a seleo do dispositivo (No nosso curso usaremos o
PIC18F4550) (Figura 4.5). Aps ter certeza que escolheu o dispositivo certo, clique em Avanar:

Figura 4.5: Janela Step One, seleo do dispositivo.

Na prxima janela, Step Two, devemos escolher a linguagem (compiladores) que ser usada(os)
no projeto. Na opo Active Toolsuite, selecione Microchip C18 Toolsuite (voc estar escolhendo o
compilador C18 que permite programar em C). Em Toolsuite Contents, esto os arquivos usados pelo
Pgina 92

www.picminas.com.br
Copyright

- Todos os diretos reservados

compilador. Em Location, encontra-se a localizao desses arquivos. Aps escolher a linguagem de


programao C18, clique no boto Avanar (Figura 4.6):

Figura 4.6: Janela Step Two, seleo do compilador.

Na janela Step Three permite escolher o diretrio a ser salvo e o nome do projeto. Ao escolher o
diretrio tome cuidado para no escolher um caminho muito longo, no mximo 62 caracteres, caso o
caminho seja acima desse limite vai dar erro de compilao do projeto. Clique em Browser e escolha o
diretrio do projeto. Depois de escolher o diretrio d um nome ao projeto. Aps isso, clique em Avanar.
(Figura 4.7)

Figura 4.7: Janela Step Three, diretrio do projeto.

Pgina 93

www.picminas.com.br
Copyright

- Todos os diretos reservados

A janela Step Four permite adicionar arquivos ao seu projeto. Caso haja um arquivo para ser
adicionado selecione o arquivo e clique em ADD, para remover algum arquivo adicionado selecione-o e
clique em REMOVE. (Figura 4.8)

Figura 4.8: Janela Step Four, adicionando arquivo existente ao projeto.

Ao adicionar um arquivo existente, voc ter algumas opes de modos de adio de arquivos.
Esse modos afetam se o projeto vai referenciar o arquivo pelo caminho relativo ou absoluto, o qual impacta
diretamente na portabilidade do projeto e no comportamento do Save Project As.
Caminhos relativos tipicamente melhoram a portabilidade do projeto, quando o caminho absoluto
tende a fazer o projeto menos porttil. Save Project As usa caminhos relativos para os arquivos a serem
copiados, quando o projeto salvo em um novo diretrio. Save Project As usa caminhos absolutos,
apenas para ajustar o caminho do arquivo, quando o projeto salvo em um novo diretrio.
O significado de cada opo est descrita abaixo:
[A] Auto Permite o MPLAB IDE adivinhar se o caminho do arquivo pode ser relativo ou
absoluto baseando na localizao do arquivo. Se o diretrio do projeto contm o arquivo, a
referncia um caminho relativo. Caso contrrio, a referncia um caminho absoluto.
[U] User Referencia um arquivo com caminho relativo. Esta a maneira preferida para
adicionar arquivos criados especificamente para esse projeto.
[S] System Referencia um arquivo com caminho absoluto. Existem casos quando esse
modo muito til, mas esses caminhos muitas vezes exigem correo quando o projeto
mudado de um sistema para outro.
[C] Copy Copia o arquivo para o diretrio do projeto e adiciona um caminho relativo para o
arquivo copiado. Opcionalmente, editar o nome para renomear a copia local do arquivo. Este
modo fornece uma maneira conveniente de adicionar arquivos linkers scripts e modelos de
cdigo fonte no projeto, sem introduzir o caminho absoluto.
Aps adicionar os arquivos necessrios, clique em AVANAR. Caso no tenha ainda nenhum
arquivo para ser adicionado, clique em AVANAR.
Na janela seguinte Summary contm o resumo do projeto criado, estando tudo em ordem, clique
em CONCLUIR. (Figura 4.9)
Pgina 94

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 4.9: Janela Resumo do projeto criado.

Aps criado o projeto, clique no menu View e selecione a


opo Project e em seguida selecione a opo abaixo Output, para
visualizar as janelas de projeto (Workspace) e a de sada (Output).
Caso voc tenha adicionado algum arquivo ele estar na
janela de projeto (Workspace), mas voc pode adicionar depois de
criado o projeto. Voc pode adicionar arquivos fontes (Source files),
arquivos cabealho (Header files), arquivos objetos (Object files),
arquivo biblioteca (Library files), arquivos linker (Linker scripts) e outros
arquivos (Other files) teis para o projeto (Figura 4.10).
aconselhvel que o arquivo, que deseja adicionar, esteja no
diretrio do projeto. Para adicion-lo voc deve seguir o procedimento
descrito abaixo:

Procedimento
1) Selecione o tipo de arquivo que voc deseja adicionar (Source,
Header files, Object files, Library files, Linker scripts ou Other files);
2) Clique com o boto direito na opo selecionada Add Files... (Figura 4.11)

Pgina 95

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 4.11: Adicionando arquivos.

3) Na janela Add Files to Project, adicione o arquivo desejado, no caso estamos adicionando o arquivo
main.c. (Figura 4.12)

Figura 4.12: Adicionando arquivos.

4) Ao fazer isso clique no menu Project e selecione a opo Save Project.


5) Aps isso, adicione todos os outros arquivos que sero necessrios para o projeto.
6) Para abrir um arquivo adicionado, d dois cliques no arquivo e uma janela abrir com o contedo do
arquivo. (Figura 4.13)

Pgina 96

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 4.13: Janela do arquivo main.c.

7) Nessa janela, com o contedo do arquivo, voc pode editar conforme for necessrio para o seu projeto.

4.4 LINGUAGEM DE PROGRAMAO C


O objetivo desta seo aprender os conceitos da linguagem de programao C, tornando-se til
para o desenvolvimento e entendimento do programas desenvolvidos durante o curso de sistemas
microcontrolados.
Apesar de ser bom, no pr-requisito do curso um conhecimento anterior de linguagens de
programao. importante uma familiaridade com computadores. O que importante que voc tenha
vontade de aprender, dedicao ao curso.
A linguagem C nasceu na dcada de 70. Seu inventor, Dennis Ritchie, implementou-o pela
primeira vez usando um DEC PDP-11 rodando o sistema operacional UNIX. O C derivado de outra
linguagem: o B, criado por Ken Thompson. O B, por sua vez, veio da linguagem BCPL, inventada por Martin
Richards.
A linguagem C uma linguagem de programao genrica que utilizada para a criao de
programas diversos como processadores de texto, planilhas eletrnicas, sistemas operacionais, programas
de comunicao, programas para a automao industrial, gerenciadores de bancos de dados, programas de
projeto assistido por computador, programas para a soluo de problemas da Engenharia, Fsica, Qumica e
outras Cincias e outros.
Sugerimos que o aluno realmente use o mximo possvel das prticas aqui apresentadas. Quando
utilizamos o compilador aprendemos a lidar com mensagens de aviso, mensagens de erro, bugs, etc.
Apenas ler as prticas no basta. O conhecimento de uma linguagem de programao transcende o
conhecimento de estruturas e funes. O C exige, alm do domnio da linguagem em si, uma familiaridade
com o compilador e experincia em achar "bugs" nos programas. importante ento que o leitor digite,
compile e execute todas as prticas apresentadas.
Pgina 97

www.picminas.com.br
Copyright

- Todos os diretos reservados

4.4.1 PRIMEIROS PASSOS


Agora que o aluno j possui o conhecimento sobre o funcionamento do compilador e do ambiente
de desenvolvimento MPLAB, estamos passando para o estudo dos fundamentos da linguagem C.
Antes de iniciar devemos destacar uma caracterstica importante da linguagem C: o C Case
Sensitive, isto , faz diferena entre letras maisculas e minsculas. Por exemplo: uma varivel com o
nome de soma pode ser declarada de diferentes maneiras: SOMA, Soma, SoMa ou sOmA, cada uma
dessas maneiras declararia um varivel diferente. Da mesma maneira, os comandos do C if e for devem
ser escritos com letras minsculas, caso seja escritos com letras maisculas o compilador poder interpretlos como variveis.
Para facilitar o estudo da linguagem C, comearemos com um exemplo simples. Para isso siga o
procedimento listado abaixo:

Procedimento
1) Conforme aprendido anteriormente, crie um novo projeto chamado exemplo01 no MPLAB IDE e no
adicione arquivo algum.
2) Crie um arquivo em branco:
Voc pode fazer isso de duas maneiras:
Clicando no menu File e escolhendo a opo New (Ctrl+N);
Ou na barra de ferramentas clicando no boto .
Salve o arquivo, nomeando-o como desejar (principal.c, teste.c, main.c etc), porm a extenso
deve ser .c, como padro da boa programao vamos nome-lo de main.c. Clicando no menu File e
escolhendo a opo Save As, possvel salv-lo.
O arquivo criado e salvo ainda no faz parte do nosso projeto, pois ele no est adicionado na
janela do projeto (Workspace). Adicione o arquivo na seo Source Files, conforme ensinado anteriormente.
3) Feito o segundo passo, hora de montar o cdigo que conter dentro do arquivo main.c criado
anteriormente. De acordo com a figura 4.14 abaixo, monte seu cdigo (para auxiliar faa o download do
arquivo exemplos em C disponvel no site na rea do Aluno e use o arquivo main.c dentro da pasta
Exemplo01).

Pgina 98

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 4.14: Contedo do arquivo main.c.

4) Para ter certeza de que o cdigo est funcionando compile-o.


Voc pode compilar o cdigo por duas maneiras:
Clicando no menu Project e escolhendo a opo Build All (Ctrl+11);
Ou na barra de ferramentas clicando no boto
.
5) O contedo do arquivo criado divido em algumas sees descritas abaixo:
A primeira seo contm o CABEALHO do arquivo: Composto apenas por 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 e linguagem binria (linguagem de mquina) e um breve resumo das funcionalidades do
mesmo.
Os comentrios podem ser:
Uma linha apenas, quando usamos duas barras //, podem ser iniciados em qualquer
ponto de uma linha e so muito usados para descrever o funcionamento ao final de
cada cdigo;
Ou de mltiplas linhas, quando usamos /* (para iniciar o comentrio) e */ (para
finalizar o comentrio).
A segunda seo contm os INCLUDES: sero includos todos os arquivos de header (.h)
necessrios para o funcionamento do projeto. No nosso exemplo inclumos o arquivo
p18cxxx.h (disponvel no endereo C:\MCC18\h). Esse arquivo contm os includes de todos
os cabealhos dos microcontroladores PIC da famlia 18, inclusive o PIC18F4550.h
(microcontrolador usado no curso).
O cdigo #include <p18cxxx.h> uma diretiva do compilador. Neste caso ele est
determinando ao compilador que anexe ao programa o arquivo especificado: p18cxxx.h.
Pgina 99

www.picminas.com.br
Copyright

- Todos os diretos reservados

Ao alterar o processador utilizado no programa, pode ser necessrio tambm, alterar a famlia
do processador na opo disponvel clicando no menu Configure e escolhendo a opo
Select Device. (Figura 4.15)

Figura 4.15: Seleo do dispositivo.

A terceira seo contm as VARIVEIS GLOBAIS: so declaradas as variveis globais


utilizadas pela(s) funo(es) do sistema.
A quarta seo contm as FUNES: onde so escritos a funo main( ) e outras funes
que sero chamadas pela main( ).
Uma funo, em C, um conjunto de instrues que pode ser executado a partir de qualquer
ponto do programa. (PEREIRA, 2008)
Repare que antes de qualquer funo declarada existe um cabealho com nome,
entrada, sada e descrio da funo.
6) Caso no haja nenhum erro no cdigo a janela de Output aparecer a mensagem BUILD SUCCEEDED
(Figura 4.16). 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.
Pgina 100

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 4.16: Mensagem de compilao bem sucedida.

7) Agora vamos detalhar a funo main( ), a figura 4.17 mostra detalhes da funo main( ):

Figura 4.17: Detalhamento da funo main ( ).

8) Dentro da funo main ( ) que faremos nosso primeiro exemplo. Faa um cdigo em C conforme a
figura 4.18:

Figura 4.18: Cdigo do primeiro exemplo.

a. A primeira linha do cdigo chamada de comentrio. Os comentrios so descries inseridas


no cdigo-fonte com o intuito de documentar e elucidar o funcionamento do programa. Um bom
programador sempre faz comentrios em seus cdigos, isso facilita a compreenso de outras
pessoas que vo ler o programa.
b. A segunda linha do cdigo j foi detalhada anteriormente.
c. A prxima linha temos void main(void). A declarao main ( ) especifica o nome de uma
funo. 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.
O sinal de abertura de chave { utilizado para delimitar o incio da funo e o sinal de
fechamento de chave } indica o final da funo. (PEREIRA, 2008)
Na realidade, as chaves delimitam o que chamamos de bloco de programa, ou bloco de cdigo.
(PEREIRA, 2008)
d. Podemos dizer que um programa em C constitudo por um ou mais dos seguinte elementos:
i. Operadores;
Pgina 101

www.picminas.com.br
Copyright

- Todos os diretos reservados

ii. Variveis;
iii. Comando de Controle;
iv. Funes:
e. A primeira linha dentro do bloco de comandos uma declarao de duas variveis do tipo
inteiro.
f. As duas linhas seguintes so atribuies de valores as essas duas variveis criadas.
g. 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. (PEREIRA, 2008)
h. 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 (na exemplo enquanto a varivel maior tiver um valor menor
que a varivel menor). O bloco de comandos do while tambm encontra-se entre chaves.
i. Em seguinte, vem dois comandos: o primeiro para somar uma unidade varivel maior e o
outro para diminuir uma unidade a varivel menor.
9) Voc pode acompanhar a simulao do programa criado e verificar se realmente est funcionando
corretamente. Para isso clique no menu Debugger e escolha a opo Select Tool, provavelmente vai
estar selecionada a opo None, selecione a opo 3 MPLAB SIM (esse o simulador integrado ao
MPLAB). (Figura 4.19)

Figura 4.19: Selecionando o simulador MPLAB.

10) Ao selecionar o simulador ir aparecer uma srie de cones adicionais na barra de ferramentas do
MPLAB (Figura 4.20).

Figura 4.20: Botes do simulador MPLAB.

A tabela 8 mostra mais detalhadamente cada um dos botes, com suas respectivas teclas de
atalho:

Tabela 8: Funo de cada boto.

Pgina 102

www.picminas.com.br
Copyright

- Todos os diretos reservados

11) Aparecer uma aba MPLAB SIM na janela Output. (Figura 4.21)

Figura 4.21: Aba do MPLAB SIM na janela Output.

12) A barra de status indicar que o MPLAB est no modo de Simulao. (Figura 4.22)

Figura 4.22: Barra de Status indicando MPLAB SIM.

13) Alm de observar a simulao passo-a-passo, atravs do MPLA SIM, possvel acompanhar o 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 (Figura 4.23). A janela que ir
abrir possvel visualizar o contedo das variveis ou dos SFRs. (Figura 4.24)

Figura 4.23: Opo Watch.

Pgina 103

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 4.24: Janela Watch.

No combo de seleo de variveis, selecione a varivel maior, clique no boto Add Symbol, depois
selecione a varivel menor, clique no boto Add Symbol e acompanhe os valores de cada uma quando
clicar. O valor por padro estar em base hexadecimal, para alterar a base clique com o boto direito sobre
a varivel e selecione Properties..., na janela que ir se abrir selecione no campo Format a opo Decimal
(Figura 4.25). Clique em OK.

Figura 4.25: Alterando para exibio em decimal.

14) Aps feito isso, voc poder acompanhar os valores das variveis criadas no seu primeiro exemplo em
linguagem C. (Figura 4.26)

Pgina 104

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 4.26: Acompanhando os valores das variveis.

15) Por ltimo, possvel colocar pontos de parada no cdigo, basta clicar com o boto direito no ponto que
deseje adicionar uma parada e selecionar a opo Set Breakpoint, para remover s clicar com o
boto direito na linha que contm o ponto de parada e selecionar a opo Remove Set Breakpoint.

4.4.2 PALAVRAS RESERVADAS


Toda linguagem de programao possui um conjunto de palavras ou comandos para os quais j
existe interpretao interna prvia, so chamadas de palavras reservadas e no podem ser usadas a no
ser em seu propsito original.
Apresentamos a seguir, na tabela 9, as palavras reservadas do ANSI C:
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

Tabela 9: Palavras reservadas em C.

4.4.3 IDENTIFICADORES
Identificadores so nomes dados pelo programador a variveis, funes e outros elementos da
linguagem C. Identificadores podem ter nmeros, letras e o nico outro caractere que pode ser utilizado o
sublinhado _ (No use nenhum tipo de acento). Alm disso, um identificador pode somente ser iniciado
por um letra ou sublinhado, nunca por um nmero. (PEREIRA, 2008)
Dicas quanto aos nomes de identificadores (variveis):
uma prtica tradicional do C, usar letras minsculas para nomes de variveis e maisculas
para nomes de constantes. Isto facilita na hora da leitura do cdigo;
Quando se escreve cdigo usando nomes de variveis em portugus, evita-se possveis
conflitos com nomes de rotinas encontrados nas diversas bibliotecas, que so em sua maioria
absoluta, palavras em ingls.
A tabela 10 mostra alguns exemplos de identificadores vlidos e invlidos:
variavel

Vlido

variavel1

Vlido

1abc

Invlido

varivel

Invlido

_teste_2

Vlido

return

Invlido

Tabela 10: Exemplos de variveis vlidas e invlidas (PEREIRA, 2008).

Pgina 105

www.picminas.com.br
Copyright

- Todos os diretos reservados

4.4.4 COMANDOS E FUNES IMPORTANTES


Agora vamos ver um conjunto de comandos e funes fundamentais para a linguagem C, pois
estes sero muito utilizados em diversos programas na linguagem C.

COMANDO IF
O comando if (em portugus se) utilizado em teste condicionais, sua sintaxe simples:
if (condio) comando;
A expresso, na condio, ser avaliada, isso significa que se a condio for verdadeira, ento ir
executar o comando especificado. Caso contrrio no executar o comando. Esta condio pode ser
qualquer expresso que possa ser avaliada como verdadeira ou falsa, ou seja, uma proposio booleana.
(PEREIRA, 2008)
O if pode ser complementado com comando else e sua sintaxe fica dessa maneira:
if(condio)comando_1;
else comando_2;
Caso a condio seja verdadeira, executar a comando_1, caso contrrio executar a
comando_2.

No caso de dentro do if ou do else existir um bloco de comandos, a sintaxe deve ser dessa
maneira:
if(condio)
{
comando_1;
comando_2;
}
else
{
comando_3;
comando_4;
}

EXEMPLO 02
1) Para exercitar vamos criar um novo projeto no MPLAB com o nome de exemplo02.
2) Clique no menu View e selecione as opes Project e Output.
3) Crie o arquivo main.c e adicione-o ao projeto (Cuidado para no adicionar o arquivo do exemplo
anterior, pois o MPLAB guarda o ltimo caminho usado para essa ao).
4) Crie o cabealho, include e os outros conforme ensinado anteriormente.
5) Crie a funo void main ( ).
6) Dentro da funo void main ( ), digite o cdigo abaixo (Figura 4.27):

Pgina 106

www.picminas.com.br
Copyright

- Todos os diretos reservados

Figura 4.27: Cdigo para o exemplo02.

7) V ao menu Debugger Select Tool 3 MPLAB SIM.


8) Depois v ao menu View Watch. Adicione as variveis val1 e val2 e faa o acompanhamento delas
usando a funo Run Animate do simulador MPLAB SIM.

COMANDO SWITCH
O comando switch usado para tomada deciso, quando a comparao de uma varivel feita
com diversos valores, o que se for feito com if torna o cdigo bem confuso e pouco eficiente.
Abaixo segue a 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 switch aceita apenas valores constantes especificados na clusula case. No caso se a varivel
e a constante possuem o mesmo valor, ento os comandos da clusula case sero executados. Sempre
aps a sequncia de comandos da clusula case necessrio usar a clusula break. Se no usarmos esta
clusula, todos os comandos seguintes ao case especificado sero executados at que encontre uma
clusula break ou o final do bloco switch. (PEREIRA, 2008)

EXEMPLO 03
1) Para exercitar vamos criar um novo projeto no MPLAB com o nome de exemplo03.
Pgina 107

www.picminas.com.br
Copyright

- Todos os diretos reservados

2) Clique no menu View e selecione as opes Project e Output.


3) Crie o arquivo main.c e adicione-o ao projeto (Cuidado para no adicionar o arquivo do exemplo
anterior, pois o MPLAB guarda o ltimo caminho usado para essa ao).
4) Crie o cabealho, include e os outros conforme ensinado anteriormente.
5) Crie a funo void main ( ).
6) Dentro da funo void main ( ), digite o cdigo abaixo (Figura 4.28):

Figura 4.28: Cdigo para o exemplo03.

7) V ao menu Debugger Select Tool 3 MPLAB SIM.


8) Depois v ao menu View Watch. Adicione as variveis variavel e numero e faa o
acompanhamento delas usando a funo Run Animate do simulador MPLAB SIM.

COMANDO WHILE
Com j foi visto no primeiro exemplo, o comando while (em portugus enquanto), usado para
especificar uma estrutura ou lao de repetio, em que um ou mais comandos so repetidamente
executados enquanto a condio de validao for verdadeira. (PEREIRA, 2008) Sua sintaxe simples:
while(condio) comando;
Cada vez que o comando dentro do while executado a condio testada novamente, e o loop
executado at o momento em que a condio se torna falsa. Essa condio pode ser qualquer expresso
que possa assumir o valor verdadeiro ou falso (expresso booleana). possvel fazer um loop infinito, para
tanto basta colocar uma expresso eternamente verdadeira na condio.
Quando o bloco de comandos do while possui mais de um comando necessrio o uso de
chaves e a sintaxe fica dessa maneira:
while(condio)
{
Comando1;
Comando2;
}
Pgina 108

www.picminas.com.br
Copyright

- Todos os diretos reservados

EXEMPLO 04
1) Para exercitar vamos criar um novo projeto no MPLAB com o nome de exemplo04.
2) Clique no menu View e selecione as opes Project e Output.
3) Crie o arquivo main.c e adicione-o ao projeto (Cuidado para no adicionar o arquivo do exemplo
anterior, pois o MPLAB guarda o ltimo caminho usado para essa ao).
4) Crie o cabealho, include e os outros conforme ensinado anteriormente.
5) Crie a funo void main ( ).
6) Dentro da funo void main ( ), digite o cdigo abaixo (Figura 4.29):

Figura 4.29: Cdigo para o exemplo04.

7) V ao menu Debugger Select Tool 3 MPLAB SIM.


8) Depois v ao menu View Watch. Adicione as variveis val1 e val2 e faa o acompanhamento delas
usando a funo Run Animate do simulador MPLAB SIM.

Clusula Break no Comando while


possvel utilizar a clusula break dentro de um lao while. Nesse caso, o break far com que o
lao seja encerrado prematuramente, independente de a condio de repetio ser avaliada. (PEREIRA,
2008)

Clusula Continue no Comando while


Outra clusula adicional que pode ser utilizada dentro de um lao while a continue. A sua
finalidade forar o trmino do ciclo atual do lao, fazendo com que ocorra um novo ciclo. (PEREIRA, 2008)

COMANDO FOR
O lao for uma estrutura de repetio das mais comuns. O for usado para repetir um comando
ou um bloco de comandos por diversas vezes. A sintaxe do for :
for (inicializao ; condio ; incremento) comando;
Quando o bloco de comandos do for possui mais de um comando necessrio o uso de chaves e
a sintaxe fica dessa maneira:
for (inicializao ; condio ; incremento)
{
comando1;
comando2;
...
}
Pgina 109

www.picminas.com.br
Copyright

- Todos os diretos reservados

Podemos ver, ento, que o for executa a inicializao incondicionalmente e testa a condio. Se a
condio for falsa ele no faz mais nada. Se a condio for verdadeira ele executa o comando ou o bloco de
comandos dentro dele, faz o incremento e volta a testar a condio. Ele fica repetindo estas operaes at
que a condio seja falsa. Um ponto importante que podemos omitir qualquer um dos elementos do for,
isto , se no quisermos uma inicializao poderemos omiti-la.
Cada uma das trs sees do comando for possui uma funo distinta conforme descrita abaixo:
Inicializao: esta seo conter uma expresso vlida utilizada normalmente 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 for
permanecer em execuo.
Incremento: esta seo pode conter uma ou mais declaraes para incremento da varivel de
controle do lao.

EXEMPLO 05
1) Para exercitar vamos criar um novo projeto no MPLAB com o nome de exemplo05.
2) Clique no menu View e selecione as opes Project e Output.
3) Crie o arquivo main.c e adicione-o ao projeto (Cuidado para no adicionar o arquivo do exemplo
anterior, pois o MPLAB guarda o ltimo caminho usado para essa ao).
4) Crie o cabealho, include e os outros conforme ensinado anteriormente.
5) Crie a funo void main ( ).
6) Dentro da funo void main ( ), digite o cdigo abaixo (Figura 4.30):

Figura 4.30: Cdigo para o exemplo05.

7) V ao menu Debugger Select Tool 3 MPLAB SIM.


8) Depois v ao menu View Watch. Adicione as variveis i, fatorial e numero e faa o acompanhamento
delas usando a funo Run Animate do simulador MPLAB SIM.

Outras formas do comando for:


A terceira seo de um for no necessita ser um incremento, pode ser um decremento. Assim a
sintaxe ficar conforme mostrado abaixo:
for (inicializao ; condio ; decremento)
{
comando1;
comando2;
}

EXEMPLO 06
1) Para exercitar vamos criar um novo projeto no MPLAB com o nome de exemplo06.
2) Clique no menu View e selecione as opes Project e Output.

Pgina 110

www.picminas.com.br
Copyright

- Todos os diretos reservados

3) Crie o arquivo main.c e adicione-o ao projeto (Cuidado para no adicionar o arquivo do exemplo
anterior, pois o MPLAB guarda o ltimo caminho usado para essa ao).
4) Crie o cabealho, include e os outros conforme ensinado anteriormente.
5) Crie a funo void main ( ).
6) Dentro da funo void main ( ), digite o cdigo abaixo (Figura 4.31):

Figura 4.31: Cdigo para o exemplo06.

7) V ao menu Debugger Select Tool 3 MPLAB SIM.


8) Depois v ao menu View Watch. Adicione as variveis i, fatorial e numero e faa o acompanhamento
delas usando a funo Run Animate do simulador MPLAB SIM.

Outras formas do comando for:


As sees de um for podem ter mais de uma varivel para o controle de funcionamento, estas
devem ser separados por vrgula. Assim a sintaxe ficar conforme mostrado abaixo:
for (inicializao1 , inicializao1; condio1 , condio2 ; incremento
ou decremento)
{
comando1;
comando2;
}

EXEMPLO 07
1) Para exercitar vamos criar um novo projeto no MPLAB com o nome de exemplo07.
2) Clique no menu View e selecione as opes Project e Output.
3) Crie o arquivo main.c e adicione-o ao projeto (Cuidado para no adicionar o arquivo do exemplo
anterior, pois o MPLAB guarda o ltimo caminho usado para essa ao).
4) Crie o cabealho, include e os outros conforme ensinado anteriormente.
5) Crie a funo void main ( ).
6) Dentro da funo void main ( ), digite o cdigo abaixo (Figura 4.32):

Figura 4.32: Cdigo para o exemplo07.

Pgina 111

www.picminas.com.br
Copyright

- Todos os diretos reservados

7) V ao menu Debugger Select Tool 3 MPLAB SIM.


8) Depois v ao menu View Watch. Adicione as variveis x e y e faa o acompanhamento delas
usando a funo Run Animate do simulador MPLAB SIM.

Clusula Break no Comando for


possvel utilizar a clusula break dentro de um lao for. Nesse caso, o break far com que o
lao seja encerrado prematuramente, independente de a condio de repetio ser avaliada. (PEREIRA,
2008)

Clusula Continue no Comando for


Outra clusula adicional que pode ser utilizada dentro de um lao for a continue. A sua
finalidade forar o trmino do ciclo atual do lao, fazendo com que ocorra um novo ciclo. (PEREIRA, 2008)

COMANDO DO-WHILE
A ltima estrutura de repetio disponvel na linguagem C o comando do (em portugus faa).
O comando do utilizado juntamente com o comando while para criar uma estrutura de repetio com
funcionamento ligeiramente diferente do while e for tradicionais. (PEREIRA, 2008)
De fato, a diferena entre a estrutura while tradicional e a estrutura do-while que a ltima
realiza a avaliao da condio de teste no final de cada ciclo. O do-while garante que o bloco de
comandos ser executado pelo menos uma vez. (PEREIRA, 2008)
. Sua sintaxe descrita abaixo:
do
{
comandos;
} while (condio);

EXEMPLO 08
1) Para exercitar vamos criar um novo projeto no MPLAB com o nome de exemplo08.
2) Clique no menu View e selecione as opes Project e Output.
3) Crie o arquivo main.c e adicione-o ao projeto (Cuidado para no adicionar o arquivo do exemplo
anterior, pois o MPLAB guarda o ltimo caminho usado para essa ao).
4) Crie o cabealho, include e os outros conforme ensinado anteriormente.
5) Crie a funo void main ( ).
6) Dentro da funo void main ( ), digite o cdigo abaixo (Figura 4.33):

Figura 4.33: Cdigo para o exemplo08.

Pgina 112

www.picminas.com.br
Copyright

- Todos os diretos reservados

7) V ao menu Debugger Select Tool 3 MPLAB SIM.


8) Depois v ao menu View Watch. Adicione as variveis val1 e val2 e faa o acompanhamento delas
usando a funo Run Animate do simulador MPLAB SIM.

COMANDO GOTO
Vamos mencionar o goto (em portugus v para) apenas para que voc saiba que ele existe,
pois em linguagem de alto nvel, no muito recomendvel o seu uso (ele muito usado em linguagem de
baixo nvel como o Assembly, Basic). O goto o ltimo comando de controle de fluxo. Ele pertence a uma
classe parte: a dos comandos de salto incondicional. O goto realiza um salto para um local especificado.
Este local determinado por um rtulo. Um rtulo, na linguagem C, uma marca no programa. Voc d o
nome que quiser a esta marca. Sua sintaxe : (PEREIRA, 2008)
nome_do_rtulo:
....
goto nome_do_rtulo;
....

EXEMPLO 09
1) Para exercitar vamos criar um novo projeto no MPLAB com o nome de exemplo09.
2) Clique no menu View e selecione as opes Project e Output.
3) Crie o arquivo main.c e adicione-o ao projeto (Cuidado para no adicionar o arquivo do exemplo
anterior, pois o MPLAB guarda o ltimo caminho usado para essa ao).
4) Crie o cabealho, include e os outros conforme ensinado anteriormente.
5) Crie a funo void main ( ).
6) Dentro da funo void main ( ), digite o cdigo abaixo (Figura 4.34):

Figura 4.34: Cdigo para o exemplo09.

7) V ao menu Debugger Select Tool 3 MPLAB SIM.


8) Depois v ao menu View Watch. Adicione a varivel conta e faa o acompanhamento delas usando
a funo Run Animate do simulador MPLAB SIM.

4.4.5 VARIVEIS E TIPOS DE DADOS


O compilador C18 disponibiliza ao programador uma gama de tipos de dados. Os tipos de dados
so identificados pelas palavras reservadas da linguagem: char, int, double, float e void (ver seo 4.2.1).
Antes de usar qualquer varivel necessrio antes declar-la, isso nada mais do que informar
ao compilador que uma varivel com o nome fulano do tipo ciclano. Sempre que for nomear uma
varivel de praxe colocar um nome que tenha sentido ao que ela faz ou ao que ela armazena, por
exemplo, uma varivel que far um contagem seria bom colocar um nome como: cont ou contador, uma
varivel que armazenar um valor como: val1, val2, valor, numero.
A sintaxe de uma varivel :
Pgina 113

www.picminas.com.br
Copyright

- Todos os diretos reservados

Tipo da varivel lista_de_variveis;


Por exemplo:
int

numero;

// declara uma varivel (numero) do tipo inteiro

char

ch, letra;

// declara duas variveis (ch, letra) do tipo caractere

float

pi;

// declara uma varivel (pi) do tipo float

Podemos tambm declarar e inicializ-la com um contedo, por exemplo:


int

numero=10;

// declara uma varivel (numero) do tipo inteiro com o valor 10

char

ch= 'b', letra= 'F';

// declara duas variveis (ch, letra) do tipo caractere

Outro aspecto importante da declarao de variveis o local onde elas so declaradas. A


importncia do local onde a varivel foi declarada relaciona-se diretamente acessibilidade ou no de
outras partes do programa a essa varivel. (PEREIRA, 2008) Existem trs tipos bsicos de variveis:
Variveis Locais: so aquelas declaradas em uma parte do algoritmo, por exemplo, uma
funo. So visveis e acessadas apenas na parte em que esto declaradas;
Variveis Globais: so aquelas declaradas no incio do algoritmo e podem ser visualizadas e
acessadas em qualquer parte do programa.

4.4.6 CONSTANTES
Constantes so valores (numricos ou no) mantidos fixos e no podem ser alterados pelo
programa durante sua execuo. (PEREIRA, 2008)
Sua sintaxe :
const nome_da_constante = valor;
Por exemplo:
const contador = 10

// declara uma constante contador com valor 10

const val2 = -5

// declara uma constante val2 com valor -5

const val3 = 'a'

// declara uma constante val3 com valor a

const val4 = " teste "

// declara uma constante val4 com valor teste

De maneira geral, qualquer tipo de dado pode ser utilizado para definir uma constante, cabendo
apenas ao programador representar o valor dela adequadamente. Assim, qualquer constante pode ser
declarada simplesmente especificando o nome do identificador e o seu valor.

CDIGOS DE BARRA INVERTIDA


O C utiliza vrios cdigos chamados de cdigos de barra invertida, isso para facilitar a tarefa de
programar, j que alguns caracteres do ASCII no podem ser inseridos diretamente em uma constante
string.
Os motivos da no insero de determinados caracteres varia, mas 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 cdigo-fonte, 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. (PEREIRA,
2008)
Na tabela 11 encontra-se os cdigos mais comumente usados:

Pgina 114

www.picminas.com.br
Copyright

- Todos os diretos reservados

Cdigo
\b
\f
\n
\t
\"
\'
\0
\\
\v
\a
\r
\N
\xN

Significado
Retrocesso ("back")
Avano de formulrio ("form feed")
Nova linha ("new line")
Tabulao horizontal ("tab")
Aspas
Apstrofo
Nulo (0 em decimal)
Barra invertida \
Tabulao vertical
Sinal sonoro ("beep")
Retorno de carro (Enter)
Constante octal (N o valor da constante)
Constante hexadecimal (N o valor da constante)
Tabela 11: Cdigo de barra invertida.

CONSTANTES BINRIAS, HEXADECIMAIS E OCTAIS


As constantes de bases numricas diversas de decimal so de suma importncia na programao
orientada a microcontroladores. A linguagem C prev a capacidade de manusear dados numricos nas
bases binrias, octal, decimal e hexadecimal. Para utilizar uma constante de base numrica diferente da
decimal, podemos utilizar um dos seguintes cdigos na tabela 12: (PEREIRA, 2008)
Valor

Base numrica

99

Decimal

099

Octal

0x99

Hexadecimal

0b99999999

Binrio

Tabela 12: Bases numricas.

Os nmeros 9 so substitudos por nmeros representados por cada base numrica


corresponde, por exemplo:
int

valor1;

valor1 = 50;

// decimal

valor1 = 0x50;

// hexadecimal

valor1 = 050;

// octal

valor1 = 0b01010000;

// binrio

4.4.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.
Esta caracterstica um dos pontos positivos da linguagem, j que o C agrega aos operadores
comumente encontrados nas linguagens de alto nvel, os operadores encontrados frequentemente em
linguagem de baixo nvel como o Assembly.
Pgina 115

www.picminas.com.br
Copyright

- Todos os diretos reservados

ATRIBUIO
Em C o operador de atribuio o =, usado para atribuir um determinado valor a uma varivel.
(PEREIRA, 2008) Por exemplo:
x = 10;

// a varivel x recebe o valor 10

y = x;

// a varivel y recebe o valor da varivel x

Repare que a atribuio sempre avaliada da direita para a esquerda e no possvel realizar
uma atribuio no sentido inverso. (PEREIRA, 2008)

ARITMTICOS
So utilizados para determinar ao compilador que efetue determinada operao matemtica em
relao a um ou mais dados (PEREIRA, 2008). So eles (tabela 13):
Operador

Ao

Adio

Subtrao ou menos unrio

Multiplicao

Diviso

Resto da diviso inteira

++

Incremento

--

Decremento

Tabela 13: Operadores aritmticos.

Uma ateno especial deve-se ter com os operadores aritmticos incremento e decremento, Eles
servem para somar 1 e diminuir 1 de uma varivel, respectivamente.
A forma geral para utilizao destes dois operadores :
varivel ++; ou varivel --;
Ou ainda por meio de uma atribuio:
variavel_1 = variavel_2 ++; ou variavel_1 = variavel_2 --;
Observe que em ambos os casos, atribuio ocorre da seguinte forma: o valor da varivel
variavel_2 armazenado em variavel_1 e aps isso, incrementado ou decrementado. (PEREIRA,
2008)
No entanto, em C tambm possvel escrever:
variavel_1 = ++ variavel_2; ou variavel_1 = -- variavel_2;
Nestes casos, a operao de incremento/decremento realizada antes da atribuio.

RELACIONAIS
So utilizados em testes condicionais para determinar a relao existente entre os dados. Esses
operadores servem para construir expresses condicionais (PEREIRA, 2008). So eles (tabela 14):

Pgina 116

www.picminas.com.br
Copyright

- Todos os diretos reservados

Operador

Ao

>

Maior que

>=

Maior ou igual a

<

Menor que

<=

Menor ou igual a

==

Igual a

!=

Diferente

Tabela 14: Operadores relacionais.

LGICOS BOOLEANOS
So utilizados para realizar conjunes, disjunes ou negaes entre elementos em um teste
condicional. Os operadores lgicos somente podem resultar em um dos valores: verdadeiro ou falso. Eles
so de suma importncia na construo de testes condicionais. Com esses operadores podemos relacionar
diversas condies diferentes em um mesmo teste lgico. (PEREIRA, 2008). So eles (tabela 15):
Operador

Ao

&&

AND (E)

||

OR (OU)

NOT (NO)

Tabela 15: Operadores lgicos booleanos.

LGICOS BIT A BIT


So utilizados para realizar operaes lgicas entre elementos ou variveis. No entanto, ao
contrrio dos operadores lgicos simples, os operadores lgicos bit a bit podem resultar em um valor da
mesma magnitude dos elementos operados. (PEREIRA, 2008). So eles (tabela 16):
Operador

Ao

&

AND (E)

OR (OU)

XOR (OU exclusivo)

NOT (complemento de um)

>>

Deslocamento direita

<<

Deslocamento esquerda

Tabela 16: Operadores lgicos bit a bit.

Vale a pena destacar o dois ltimos operadores, deslocamento direita e deslocamento


esquerda. O primeiro faz os bits deslocarem uma posio para a direita e o segundo faz os bits deslocarem
uma posio para a esquerda.
O exemplo abaixo ilustra o uso dos operandos de deslocamento:
unsigned char c;
c = 7;

/* cdigo binrio 0000 0111 */


Pgina 117

www.picminas.com.br
Copyright

- Todos os diretos reservados

c = c<<1;

/* cdigo binrio 0000 1110 = 14 */

c = c<<2;

/* cdigo binrio 0011 1000 = 56 */

c = c<<3;

/* cdigo binrio 1100 0000 = 192 */

c = c>>1`;

/* cdigo binrio 0110 0000 = 96 */

MEMRIA
Tambm chamados de operadores de ponteiros, so elementos de grande importncia na
linguagem C. De fato, os ponteiros so considerados um dos pilares da linguagem C, pois permitem o
acesso direto da memria do sistema (PEREIRA, 2008). So eles (tabela 17):
Operador
&
*

Ao
Endereo do operando
Contedo do endereo apontado pelo operando
Tabela 17: Operadores de memria.

O operador unrio & utilizado para retornar o endereo de memria do seu operando. Isto
significa que se escrevermos: (PEREIRA, 2008)
endereco_a = &a;
Teremos que a varivel endereco_a conter o endereo em que est armazenada a variavel
a. (PEREIRA, 2008)
O operador unrio * utilizado para retornar o contedo da posio de memria endereada pelo
operando que o segue. Vejamos o exemplo: (PEREIRA, 2008)
a = *endereco_a;
O que far com que o valor armazenado no local apontado pela varivel endereco_a seja
atribudo varivel a. (PEREIRA, 2008)

OUTROS OPERADORES
Alm de todos esses operadores citados anteriormente, existem outros no to conhecidos em C.
(PEREIRA, 2008). So eles (tabela 18):
Operador

Ao

Operador ternrio condicional

Separador de expresses

Separador de estruturas

->

Ponteiro de elemento de estrutura

(tipo)

Operador de modelagem de dado

sizeof

Retorna o tamanho da varivel


Tabela 18: Outros operadores.

O operador ternrio ? utilizado para substituir uma expresso condicional baseada no comando
IF e tem esse nome devido ao fato de ser composto por trs expresses. (PEREIRA, 2008)
Sua sintaxe :
Varivel = Expresso1? Expresso2; Expresso3;

Pgina 118

www.picminas.com.br
Copyright

- Todos os diretos reservados

O que significa: avalie a expresso 1 se ela for verdadeira atribua varivel a expresso 2; caso
contrrio, atribua a expresso 3. (PEREIRA, 2008) Por exemplo:
int

x, y;

// declarao de duas variveis do tipo inteiro

x = 5;

// atribui o valor 5 a varivel x

y = x==7? 10; x+3;

// se x igual a 7, y recebe o valor 10, seno y recebe o valor x+3

o operador sizeof utilizado para retornar a quantidade de memria utilizada por uma
determinada varivel ou determinado tipo de dado. (PEREIRA, 2008)
A principal aplicao deste tipo de operador permitir ao programador controlar a ocupao de
memria pelo programa, auxiliando assim a portabilidade do programa. (PEREIRA, 2008)

ASSOCIAO DE OPERADORES
A linguagem C admite associar operadores e montar uma espcie de expresso abreviada
equivalente a expresso original. Na tabela 19, 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;

Tabela 19: Associao de operadores.

PRECEDNCIA DOS OPERADORES


A tabela 20 mostra a precedncia dos operadores:
Operador
( ) [ ] -> .
! ~ ++ -- - (type) * & sizeof
* / %
+ << >>
< <= > >=
== !=
&
^
|
&&
||
?:
= += -= etc.
,

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

Tabela 20: Precedncia de operadores.

Pgina 119

www.picminas.com.br
Copyright

- Todos os diretos reservados

4.4.8 REDEFINIDO TIPOS DE DADOS


A linguagem C prov ainda um comando que permite ao programador definir nomes para os tipos
de dados existentes. (PEREIRA, 2008)
Este comando o typedef e a sua sintaxe :
typedef tipo novo_nome;
Por exemplo:
typedef float fracao

// o novo nome do tipo float agora frao

Neste captulo, falamos sobre:


A linguagem de programao C;
Tipos de dados, comandos bsicos;
Exemplos no MPLAB.

Pgina 120

www.picminas.com.br
Copyright

- Todos os diretos reservados

Das könnte Ihnen auch gefallen