Você está na página 1de 118

www.picminas.com.

br Pgina 1
Copyright - Todos os diretos reservados
Sumrio

LISTA DE FIGURAS ........................................................................................................................................................... 4


LISTA DE TABELAS ........................................................................................................................................................... 7
Captulo 1 Introduo ...................................................................................................................................................... 8
1.1 SURGIMENTO DAS MQUINAS MODERNAS ..................................................................................................... 8
1.2 SURGIMENTO DOS PROCESSADORES E DOS COMPUTADORES PESSOAIS ...................................................... 10
1.3 SISTEMAS MICROPROCESSADOS ..................................................................................................................... 13
1.3.1 UNIDADE CENTRAL DE PROCESSAMENTO (CPU) ........................................................................................ 14
1.3.2 MEMRIAS .................................................................................................................................................. 15
1.3.3 REGISTRADORES ......................................................................................................................................... 17
1.3.4 REGISTRADORES DE FUNO ESPECIAL (SFR) ............................................................................................ 18
1.3.5 PORTAS I/O (ENTRADA/SADA) ................................................................................................................... 18
1.3.6 BARRAMENTOS ........................................................................................................................................... 19
1.3.7 INTERRUPES ........................................................................................................................................... 20
1.4 MICROCONTROLADORES ................................................................................................................................ 21
1.5 LINGUAGEM DE MQUINA ............................................................................................................................. 23
1.6 REPRESENTAO NUMRICA .......................................................................................................................... 24
1.7 CONVERSES DE SISTEMAS NUMRICOS ....................................................................................................... 26
1.7.1 CONVERSO BINRIA PARA DECIMAL ........................................................................................................ 26
1.7.2 CONVERSO HEXADECIMAL PARA DECIMAL .............................................................................................. 26
1.7.3 CONVERSO HEXADECIMAL PARA BINRIA ............................................................................................... 27
1.8 O BIT ................................................................................................................................................................ 28
1.9 O BYTE ............................................................................................................................................................. 28
1.10 PORTAS LGICAS ............................................................................................................................................. 29
1.10.1 PORTA AND ............................................................................................................................................. 29
1.10.2 PORTA OR ............................................................................................................................................... 30
1.10.3 PORTA NOT ............................................................................................................................................. 30
1.10.4 PORTA XOR (OU-EXCLUSIVA) .................................................................................................................. 31
Captulo 2 Arquitetura do PIC e Kit de Desenvolvimento .............................................................................................. 32
2.1 PIC18F4550 e PIC32MX775F256L.................................................................................................................... 34
2.1.1. PIC18F4550 ............................................................................................................................................. 34
2.2 KIT DE DESENVOLVIMENTO com PIC18F4550 ................................................................................................. 49
2.2.1. CIRCUITOS ATUADORES .......................................................................................................................... 49
2.2.2. CHAVES/TECLAS ...................................................................................................................................... 50
2.2.3. CIRCUITOS SENSORES ............................................................................................................................. 51
2.2.4. DISPLAYS ................................................................................................................................................. 53

www.picminas.com.br Pgina 2
Copyright - Todos os diretos reservados
2.2.5. CIRCUITOS DE GRAVAO IN-CIRCUIT (ICSP) ......................................................................................... 55
2.2.6. Jumpers do KIT PICMINAS ...................................................................................................................... 55
2.3 COMPONENTES DO KIT DIDTICO PIC18 ........................................................................................................ 57
Captulo 3 Ferramentas de Desenvolvimento ............................................................................................................... 58
3.1 AMBIENTE DE DESENVOLVIMENTO MPLAB ................................................................................................. 58
3.2 COMPILADORES C18 E C32 DA MICROCHIP .................................................................................................... 63
3.2.1. Instalao do Compilador C18 ................................................................................................................ 65
3.2.2. Instalao do Compilador C32 ................................................................................................................ 69
3.3 FIRMWARE BOOTLOADER ............................................................................................................................... 71
3.4 COMO CRIAR UM PROJETO NO MPLAB .......................................................................................................... 75
3.5 COMO COMPILAR E GRAVAR UM FIRMWARE NO KIT DIDTICO UTILIZANDO BOOTLOADER ....................... 82
3.6 COMO GRAVAR UM FIRMWARE NO PIC UTILIZANDO UMA GRAVADORA (ICD2 MICROCHIP)....................... 84
3.7 COMO UTILIZAR A FERRAMENTA DE SIMULAO DO MPLAB ....................................................................... 91
Captulo 4 Programao de Microcontroladores ........................................................................................................... 94
4.1. Vantagens e desvantagens de se programar em Assembly e em C: ............................................................... 94
4.2 PRINCPIOS DE PROGRAMAO...................................................................................................................... 95
4.2.1. ALGORITMOS ESTRUTURADOS ............................................................................................................... 95
4.2.2. FLUXOGRAMAS ....................................................................................................................................... 96
4.2.3. VARIVEIS E DADOS ............................................................................................................................... 97
4.3 CARACTERSTICAS DO COMPILADOR C18 ....................................................................................................... 98
4.3.1. TIPOS DE DADOS E LIMITES .................................................................................................................... 98
4.4. CAMINHO DE PROCURA DE ARQUIVOS ........................................................................................................ 100
4.5 LINGUAGEM DE PROGRAMAO C .............................................................................................................. 100
4.5.1 PRIMEIROS PASSOS ................................................................................................................................... 101
4.5.2 VISO GERAL DE UM PROGRAMA ............................................................................................................ 103
4.5.3 PALAVRAS RESERVADAS ........................................................................................................................... 103
4.5.4 IDENTIFICADORES ..................................................................................................................................... 104
4.5.5 VARIVEIS E TIPOS DE DADOS .................................................................................................................. 104
4.5.6 CONSTANTES ............................................................................................................................................. 105
4.5.7 OPERADORES ............................................................................................................................................ 106
4.5.8 COMANDOS E FUNES IMPORTANTES ................................................................................................... 110
4.6 BOAS PRTICAS DE PROGRAMAO ............................................................................................................ 115

www.picminas.com.br Pgina 3
Copyright - Todos os diretos reservados
LISTA DE FIGURAS

Figura 1.1 - Figura do baco. ............................................................................................................................ 8


Figura 1.2 - A Calculadora de Pascal e a Mquina Diferencial de Babbage .................................................... 9
Figura 1.3 - Operao de um ENIAC. ............................................................................................................... 9
Figura 1.4 - Vlvula dos Computadores Antigos. ............................................................................................ 10
Figura 1.5 - Processador Pentium 4. ............................................................................................................... 10
Figura 1.6 - Computador PDP8. ...................................................................................................................... 11
Figura 1.7 - Primeiro Processador da Histria (4004). .................................................................................... 11
Figura 1.8 - Evoluo Histrica do Microprocessadores. ................................................................................ 13
Figura 1.9 - Elementos Internos de um Microprocessador Bsico. ................................................................ 14
Figura 1.10 - CPU e suas unidades. ............................................................................................................... 14
Figura 1.11 - Foto com diversos tipos de memrias RAM. ............................................................................. 15
Figura 1.12 - Memria EPROM Os dados so apagados com raios ultravioleta......................................... 16
Figura 1.13 - Tipos de dispositivos que utilizam memria FLASH para armazenamento de dados. ............. 16
Figura 1.14 - O Registrador um tipo de memria que tem acesso direto a CPU......................................... 17
Figura 1.15 - Registradores com funes especiais. ...................................................................................... 18
Figura 1.16 - Portas do microcontrolador. ....................................................................................................... 19
Figura 1.17 - Placa Me. ................................................................................................................................. 19
Figura 1.18 - Atendimento de interrupo. ...................................................................................................... 20
Figura 1.19 - Desenho esquemtico de um Microcontrolador. ....................................................................... 21
Figura 1.20 - Diagrama de blocos geral de um microcontrolador. .................................................................. 22
Figura 1.21 - Representao de um nmero na base-10. .............................................................................. 24
Figura 1.22 - Transformao de um nmero na base-2 para base-10. .......................................................... 25
Figura 1.23 - Comparao de um nmero na base-16 e na base-2. .............................................................. 25
Figura 1.24 - Converso de um nmero na base-2 para base-10. ................................................................. 26
Figura 1.25 - Converso de Hexadecimal para decimal. ................................................................................ 27
Figura 1.26 - Converso de binrio para hexadecimal. .................................................................................. 27
Figura 1.27 - Representao de um nmero na base-2. ................................................................................ 28
Figura 1.28 - Representao de nibbles. ........................................................................................................ 29
Figura 1.29 - Smbolo grfico e Tabela verdade da porta AND. ..................................................................... 29
Figura 1.30 - Operao lgica AND. ............................................................................................................... 30
Figura 1.31 - Smbolo grfico e Tabela verdade da porta OR. ....................................................................... 30
Figura 1.32 - Operao lgica OR. .................................................................................................................. 30
Figura 1.33 - Smbolo grfico e Tabela verdade da porta NOT. ..................................................................... 30
Figura 1.34 - Operao lgica NOT. ............................................................................................................... 31
Figura 1.35 - Smbolo grfico e Tabela verdade da porta XOR. ..................................................................... 31
Figura 1.36 - Operao lgica XOR. ............................................................................................................... 31

Figura 2.1 - Arquitetura Von-Neumann ........................................................................................................... 33


Figura 2.2 - Arquitetura Harvard. ..................................................................................................................... 33
Figura 2.3- Distribuio dos pinos no microcontrolador PIC18F4550 (Fonte: datasheet PIC18F4550). ........ 36
Figura 2.4 - Estrutura interna do microcontrolador PIC18F4550 (Fonte: datasheet PIC18F4550). ............... 42
Figura 2.5 - Arquitetura do PIC18F4550 destacando as partes de um sistema microprocessado................. 43
Figura 2.6 - Processo Pipeline. ....................................................................................................................... 44
Figura 2.7 - Detalhes da memria FLASH e da Pilha. .................................................................................... 45
Figura 2.8 - Mapa da memria de dados. ....................................................................................................... 47
Figura 2.9 - Registrador Status. ...................................................................................................................... 48
Figura 2.10 - Ligao dos leds no PIC. .......................................................................................................... 49
Figura 2.11 - Ligao do Rel no PIC. ............................................................................................................ 49
Figura 2.12 - Ligao do Buzzer (Sirene) no PIC. .......................................................................................... 50
Figura 2.13 - Ligao da Chave Push Button (Chaves Tteis) no PIC. .......................................................... 50
Figura 2.14 - Ligao da Chave Dip switch no PIC. ........................................................................................ 51
Figura 2.15 - Ligao do LDR no PIC. ............................................................................................................ 52
Figura 2.16 - Ligao do sensor de temperatura no PIC. ............................................................................... 52
Figura 2.17 - Ligao do potencimetro no PIC. ............................................................................................. 53
Figura 2.18 - Ligao do display duplo de 7 segmentos no PIC. .................................................................... 53
Figura 2.19 - Ligao do display de LCD no PIC. ........................................................................................... 54
Figura 2.20 Conector padro MICROCHIP ICSP. ....................................................................................... 55

www.picminas.com.br Pgina 4
Copyright - Todos os diretos reservados
Figura 2. 21 - Jumpes do KIT PICMinas. ........................................................................................................ 56
Figura 2.22 - Componentes principais do kit de desenvolvimento. ................................................................. 57

Figura 3. 1 - cone Instaladores do DVD Didtico. Instao do MPLAB. ........................................................ 59


Figura 3.2 - Tela de boas vindas do instalador do MPLAB. ............................................................................ 59
Figura 3.3 - Termo de licena. ......................................................................................................................... 60
Figura 3.4 - Tipo de instalao. Escolha a opo "Completa". ....................................................................... 60
Figura 3.5 - Escolha do diretrio onde o MPLAB ser instalado..................................................................... 61
Figura 3.6 - Resumo do processo de instalao. ............................................................................................ 61
Figura 3.7 - Instalador do programa HI-TECH. ............................................................................................... 62
Figura 3.8 - Finalizao da instalao. ............................................................................................................ 62
Figura 3.9 - Tela meramente informativa. ....................................................................................................... 63
Figura 3.10 - Funo do compilador. ............................................................................................................... 63
Figura 3.11 - Processo de compilao do cdigo. .......................................................................................... 64
Figura 3.12 - cone Instaladores do DVD Didtico - Instalador do Compilador C18. ...................................... 65
Figura 3.13 - Tela de boas vindas do instalador do compilador C18. ............................................................. 66
Figura 3. 14 - Licena do compilador C18....................................................................................................... 66
Figura 3.15 - Escolha do diretrio onde ser instalado o C18. ....................................................................... 67
Figura 3.16 - Final do processo de instalao do compilador C18. ................................................................ 67
Figura 3.17 - cone Instaladores do DVD Didtico - Instalador do Compilador C32. ...................................... 69
Figura 3.18 - Janela de boas vindas do intalador do compilador C32. ........................................................... 69
Figura 3.19 - Termo de licena do compilador C32. ....................................................................................... 70
Figura 3.20 - Escolha do diretrio onde ser instalado o C32. ....................................................................... 70
Figura 3.21 - Final do processo de instalao do compilador C32. ................................................................ 71
Figura 3.22 - Mtodo de Gravao Off-Board. ................................................................................................ 72
Figura 3.23 - Modo de gravao in-circuit via hardware. ................................................................................ 73
Figura 3.24 - Mtodo de Auto-Gravao. ........................................................................................................ 74
Figura 3.25 - Arquivos modelo no DVD didtico. ............................................................................................ 75
Figura 3.26 - Janela do MPLAB - Acessando o "Project Wizard". .................................................................. 76
Figura 3.27 - Janela de Boas Vindas. ............................................................................................................. 76
Figura 3.28 - Escolha do microcontrolador...................................................................................................... 77
Figura 3.29 - Escolha da "Active Toolsuite". ................................................................................................... 77
Figura 3.30 - Escolha do diretrio. .................................................................................................................. 78
Figura 3. 31 - Inserir arquivos. ......................................................................................................................... 78
Figura 3.32 - Resumo do projeto. .................................................................................................................... 79
Figura 3.33 - Janela "Project". ......................................................................................................................... 79
Figura 3.34 - Adicionando arquivos ao projeto. ............................................................................................... 80
Figura 3. 35 - Adicionando arquivos ao projeto. .............................................................................................. 80
Figura 3.36 - Janela do MPLAB mostrando o arquivo main.c do projeto teste.mcp aberto. ........................... 81
Figura 3.37 - Boto de compilao - Build All. ................................................................................................ 82
Figura 3.38 - DVD Didtico cone Gravar PIC. .......................................................................................... 83
Figura 3.39 - Escolha do arquivo.hex que se deseja gravar no PIC. .............................................................. 83
Figura 3.40 - Processo de gravao do PIC. .................................................................................................. 84
Figura 3.41 - Mdulo de gravao ICD2 da Microchip. ................................................................................... 84
Figura 3.42 - Janela de reconhecimento do dispositivo. ................................................................................. 85
Figura 3. 43 - Janela de instalao do driver. ................................................................................................. 85
Figura 3.44 - Janela de concluso. ................................................................................................................. 86
Figura 3. 45 - DVD Didtico - cone Projetos - Projeto do Bootloader. ........................................................... 86
Figura 3.46 - Seleo do mdulo de gravao. .............................................................................................. 87
Figura 3.47 - Seleo da opo Setup Wizard. ............................................................................................... 87
Figura 3.48 - Seleo da Porta de Comunicao. .......................................................................................... 88
Figura 3.49 - Seleo da alimentao do dispositivo. ..................................................................................... 88
Figura 3.50 - Janela de Conexo. ................................................................................................................... 89
Figura 3.51 - Janela Download. ....................................................................................................................... 89
Figura 3.52 - cones de gravao habilitados. ................................................................................................ 90
Figura 3.53 - Mensagem informando que a programao foi realizada com sucesso. .................................. 90
Figura 3.54 - Selecionando o simulador MPLAB. ........................................................................................... 91
Figura 3.55 - Botes do simulador MPLAB. .................................................................................................... 91
Figura 3.56 - Aba do MPLAB SIM na janela Output. ....................................................................................... 91
Figura 3.57 - Barra de Status indicando MPLAB SIM. .................................................................................... 92
Figura 3.58 - Opo Watch. ............................................................................................................................ 92

www.picminas.com.br Pgina 5
Copyright - Todos os diretos reservados
Figura 3.59 - Janela Watch. ............................................................................................................................ 92
Figura 3.60 - Alterando para exibio em decimal. ......................................................................................... 93

Figura 4.1 - Ordenao Little-Endian. ............................................................................................................. 99


Figura 4 2 - Contedo do arquivo main.c. ..................................................................................................... 101
Figura 4.3 - Mensagem de compilao bem sucedida. ................................................................................. 102
Figura 4.4 - Detalhamento da funo main ( ). .............................................................................................. 102
Figura 4.5 - Exemplo de um programa C. ..................................................................................................... 103
Figura 4.6 - Uso das estruturas if else. .......................................................................................................... 110
Figura 4.7 - Uso da estrutura switch. ............................................................................................................. 111
Figura 4.8 - Uso da estrutura while. .............................................................................................................. 112
Figura 4.9 - Uso da estrutura for. .................................................................................................................. 113
Figura 4.10 - Uso da estrutra for com decremento de ndice. ....................................................................... 113
Figura 4.11 - Uso da estrutura do-while. ....................................................................................................... 114
Figura 4.12 - Exemplo do uso de espaos e comentrios. ........................................................................... 115
Figura 4.13 - Cabealho de arquivo. ............................................................................................................. 116
Figura 4.14 - Uso de Defines. ........................................................................................................................ 117

www.picminas.com.br Pgina 6
Copyright - Todos os diretos reservados
LISTA DE TABELAS

Tabela 1 - Representao de nmeros nas trs bases. ................................................................................. 27


Tabela 2 - Funcionalidades do PIC18F4550 (fonte datasheet PIC18F4550). ................................................ 35
Tabela 3 - Pinos do PIC18F4550 (Fonte: datasheet do PIC18F4550). .......................................................... 41
Tabela 4 - Informaes de ligao do LCD. .................................................................................................... 54
Tabela 5 - Descrio dos sub-diretrios do MCC18. ...................................................................................... 68
Tabela 6 - Descrio dos cones de gravao. ............................................................................................... 90
Tabela 7 - Funo de cada boto. ................................................................................................................... 91
Tabela 8 - Vantagens e desvantagens entre linguagem Assempbly e C. ...................................................... 94
Tabela 9 - Tipos de dados inteiros e seus limites. .......................................................................................... 98
Tabela 10 - Palavras reservadas em C. ........................................................................................................ 104
Tabela 11 - Exemplos de variveis vlidas e invlidas. ................................................................................ 104
Tabela 12 - Cdigo de barra invertida. .......................................................................................................... 106
Tabela 13 - Bases numricas. ....................................................................................................................... 106
Tabela 14 - Operadores aritmticos. ............................................................................................................. 107
Tabela 15 - Operadores relacionais. ............................................................................................................. 107
Tabela 16 - Operadores lgicos booleanos................................................................................................... 107
Tabela 17 - Operadores lgicos bit a bit. ....................................................................................................... 107
Tabela 18 - Operadores de memria. ........................................................................................................... 108
Tabela 19 - Outros operadores. .................................................................................................................... 108
Tabela 20 - Associao de operadores. ........................................................................................................ 109
Tabela 21 - Precedncia de operadores. ...................................................................................................... 109

www.picminas.com.br Pgina 7
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 criaria um conceito de mquina que muitos sculos depois seria a
base para o surgimento de 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.

www.picminas.com.br Pgina 8
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
2
rea de 180m 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
2
microprocessadores, ocupam poucas unidades de micrometros quadrados (m - a milionsima parte de um
metro quadrado), 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.

www.picminas.com.br Pgina 9
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
1
linhas de entrada/sada), quanto dispositivos perifricos como, por exemplo, conversores A/D e D/A ,
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 ideia fundamentalmente diferente do
pedido da BUSICOM. A sua ideia presumia que o funcionamento do circuito integrado seria baseado em um
programa armazenado nele ao invs dos projetos engessados da poca, em que cada circuito integrado
possua uma e somente uma funcionalidade. Isso significaria que a configurao dos produtos da empresa
japonesa ficaria mais simples, tendo em vista que um nico circuito integrado poderia ser utilizado em mais
de um produto, mudando-se apenas a programao gravada nos mesmos. Por outro lado, esta nova
filosofia de projeto iria requerer mais memria do sistema que o projeto proposto pelos engenheiros
japoneses, o que na poca era algo ainda de valor elevado.

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

www.picminas.com.br Pgina 10
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 ideia 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 um 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 8-
bits, 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 64kbits de
memria, 75 instrues para programao e um preo inicial de US$ 360,00 (Trezentos e sessenta
dlares), o que possibilitou o surgimento de computadores pessoais com valores acessveis. A
consequncia disso foi a inesperada popularizao da ideia e crescimento exponencial das vendas. Para se
ter ideia 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

www.picminas.com.br Pgina 11
Copyright - Todos os diretos reservados
prprios projetos. Chuck Peddle deixou a Motorola para entrar para a MOS Technology e continuar
trabalhando intensivamente no desenvolvimento dos microprocessadores.
Em 1975, na exposio WESCON nos Estados Unidos, aconteceu um episdio na histria dos
microprocessadores. A MOS Technology anunciou que iria lanar no mercado os microprocessadores 6501
e 6502 ao preo de US$ 25 cada e que poderia atender de imediato todas as encomendas. Isto pareceu to
sensacional que muitos pensaram tratar-se de uma espcie de fraude, considerando que os competidores
vendiam os processadores 8080 e 6800 por aproximadamente US$ 179,00 cada. Para responder a este
competidor, tanto a Intel quanto a Motorola baixaram seus preos para US$ 69,95 logo no primeiro dia da
exposio. Rapidamente a Motorola, antiga empresa onde Peddle trabalhava, colocou uma ao em
tribunal contra a MOS Technology e contra o prprio Chuck Peddle por violao dos direitos autorais por
copiarem o processador 6800. Com isso, a MOS Technology deixou de fabricar o 6501, mas continuou com
o 6502. O 6502 era um microprocessador de 8-bits com 56 instrues e uma capacidade de endereamento
de 64kBytes de memria. Devido ao seu baixo custo, os processadores 6502 tornaram-se muito popular,
sendo utilizado em computadores como o KIM-1, Apple I, Apple II, Atari, Comodore, Acorn, Oric, Galeb,
Orao, Ultra e muitos outros. Logo apareceram vrias outras empresas interessadas em fabricar o 6502
(Rockwell, Sznertek, GTE, NCR, Ricoh e Comodore) que, no auge da sua prosperidade, chegou a vender
microprocessadores razo de 15 milhes de processadores por ano.
Contudo, os outros no baixaram os braos. Frederico Faggin deixou a Intel e fundou a Zilog Inc.
Em 1976, a Zilog anunciou o Z80. Durante a concepo deste microprocessador, Faggin tomou uma
deciso crtica. Sabendo que existia uma enorme quantidade de programas j desenvolvidos para o
microprocessador 8080, Faggin concluiu que muitos permaneceriam fiis a este microprocessador devido
s grandes despesas que representaria a troca do processador. Assim, ele decidiu que o novo
microprocessador deveria ser COMPATVEL (nasceu a ideia de compatibilidade) com o 8080, ou seja,
deveria ser capaz de executar todos os programas j escritos para o 8080. Alm disto, outras
caractersticas adicionais foram incorporadas ao CHIP, de tal modo que o Z80 se tornou um
microprocessador muito potente em seu tempo. Ele podia enderear diretamente 64kBytes de memria,
tinha 176 instrues para programao, um grande nmero de registros, uma opo para refreshing de
memria RAM dinmica, maior velocidade de funcionamento, etc. O Z80 tornou-se um grande sucesso e
todos que utilizavam o processador 8080 migraram para o Z80. Pode-se dizer que o Z80 se constituiu como
o microprocessador de 8-bits de maior sucesso em seu tempo. Alm da Zilog surgiram outros novos
fabricantes como, por exemplo, Mostek, NEC, SHARP e SGS. O Z80 foi o corao de muitos computadores
como o Spectrum, Partner, TRS703, Z-3 e Galaxy, que fizeram muito sucesso devido sua grande utilizao.
Em 1976, a Intel lanou uma verso melhorada do microprocessador de 8-bits, chamado de 8085.
Contudo, a superioridade do Z80 fez com que a Intel desistisse do projeto. Apesar do surgimento, na poca,
de outros microprocessadores no mercado (6809, 2650, SC/MP etc.), o cenrio da poca estava bem
definido. J no existiam grandes melhorias a serem introduzidas pelos fabricantes que justificassem o
lanamento de um novo microprocessador. Desta forma, o 6502 e o Z80, acompanhados pelo 6800,
mantiveram-se como os mais representativos microprocessadores de 8-bits do perodo. Restou Intel
trabalhar no lanamento do primeiro microprocessador de 16-bits o 8088 que fez muito sucesso e deu
origem a todos os processadores atuais. Ele foi seguido pelo 80186, depois pelo 80286, que evoluiu para o
80386 (popularmente conhecido como 386), chegando ao 80486 (popularmente conhecido como 486).
Depois surgiu o Pentium que evoluiu at o Pentium 4. Nesse momento, a tecnologia se deparou com uma
barreira na evoluo dos microprocessadores que at ento era baseada, quase que exclusivamente, no
aumento da velocidade de processamento. Em seguida, a evoluo dos processadores atrelou-se
evoluo da sua arquitetura interna (forma como se estruturam e interagem os componentes bsicos
utilizados em sua construo). Atualmente, os processadores que encontramos no mercado so
processados Dual Core, Core 2 Duo, Quad Core, Xeon, Turion, etc., que diferem entre si pelo nmero e tipo
de Ncleos de Processamento (Core) existentes em sua arquitetura interna.
A Figura 1.8 mostra a evoluo histrica dos processadores, evidenciando alguns dos principais
sistemas desenvolvidos at os dias atuais.

www.picminas.com.br Pgina 12
Copyright - Todos os diretos reservados
Figura 1.8 - Evoluo Histrica dos 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).

www.picminas.com.br Pgina 13
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.

www.picminas.com.br Pgina 14
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 forma como os dados so
armazenados, neste caso, existem dois tipos de memria, as Volteis e as No-Volteis.
Memrias Volteis: so as que requerem energia para manter a informao armazenada. So
fabricadas com base em duas tecnologias: dinmica e esttica. A dinmica a mais de menor custo
entre a esse tipo de memria. So popularmente conhecidas como Memria RAM (do ingls
Randomic Acess Memory - Memria de Acesso Aleatrio), que significa que os dados, nela
armazenados, podem ser acessados a partir de qualquer endereo. As memrias RAM se
contrapem com as de acesso sequencial, que exigem que qualquer leitura/escrita seja feita a partir
do primeiro endereo e, sequencialmente, vai pulando de um em um at atingir o endereo
desejado. Na realidade, existem outras memrias de acesso aleatrio nos computadores, inclusive
no-volteis, portanto, importante ter o conhecimento de que o nome RAM apenas uma
popularizao do nome da memria principal dos computadores, utilizada para armazenar os
programas e dados no momento da execuo. (Figura 1.11)

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.

www.picminas.com.br Pgina 15
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 NOME TECNOLOGIA

Read Only Memory (memria


ROM Gravada na fbrica uma nica vez.
somente de leitura).
Programable Read Only Memory
PROM (memria programvel somente de Gravada pelo usurio uma nica vez.
leitura).
Pode ser gravada ou regravada por meio de
um equipamento que fornece as tenses
Erasable Programable Read Only eltricas adequadas em cada pino. Para
EPROM Memory (memria programvel e apagar os dados nela contidos, basta iluminar
apagvel somente de leitura). o chip com raios ultravioleta. Isto pode ser
feito atravs de uma pequena janela presente
na parte de cima do CHIP (Figura 1.12).
Electrically Erasable Programable
Read Only Memory (memria Pode ser gravada, apagada ou regravada
EEPROM programvel e apagvel utilizando um equipamento que fornece as
eletronicamente somente de voltagens adequadas em cada pino.
leitura).

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.

www.picminas.com.br Pgina 16
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 armazenado somente o programa que est sendo executado pelo processador.
Memrias Secundrias: memrias que no podem ser acessadas diretamente, a informao
precisa ser carregada em memria primria antes de poder ser tratada pelo processador. No so
estritamente necessrias para a operao dos sistemas computadorizados. So geralmente no-
volteis, permitindo guardar os dados permanentemente. Incluem-se, nesta categoria, os discos
rgidos (HDs), CDs, DVDs e disquetes. So memrias de armazenamento em massa, guardam
grandes quantidades de dados.
Para entendermos melhor a aplicao dessas memrias vamos pensar em um exemplo de
computador, sendo a RAM a memria primria e o HD a memria secundria. Quando clicamos em um
cone para abrir um programa (por exemplo, o WORD), esta programa, que estava armazenado na memria
secundria (HD), carregado na memria primria (RAM) e ficar l at que o programa seja encerrado.

1.3.3 REGISTRADORES

Como j foi dito, um registrador ou clula de memria um circuito eletrnico capaz de armazenar
uma pequena quantidade de Bytes (geralmente 1 Byte). Os registradores esto no topo da hierarquia de
memria, sendo assim, so o meio mais rpido e caro de se armazenar um dado. uma espcie de
secretria utilizada para armazenar todos os dados sobre os quais sero realizados algum tipo de operao
(ADD, MOVE, SHIFT, etc.). Ele tambm armazena os resultados dessas operaes. Por exemplo, quando
uma instruo de soma entre duas variveis quaisquer (A e B) executada, antes da soma ser realizada, as
variveis sero carregadas, da memria RAM, para dentro de dois registradores. S depois a soma
realizada. Isso acontece porque somente os registradores possuem comunicao direta com a CPU de um
processador (Figura 1.14). O resultado da operao tambm ser armazenado em outro registrador antes
de ser carregado na memria RAM. No PIC18F4550 esses registradores so chamados de GPR (General
Purpose Register Registradores de Propsito Geral).

Figura 1.14 - O Registrador um tipo de memria que tem acesso direto a CPU.

www.picminas.com.br Pgina 17
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 pr-
determinadas 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.

Outros exemplos de registradores de funo especial (SFR), so:


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 porqu,
como vimos anteriormente, eles podem ser configurados tanto como entradas quanto como sadas,

www.picminas.com.br Pgina 18
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
2
um LED 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).

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.

www.picminas.com.br Pgina 19
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.

www.picminas.com.br Pgina 20
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 e capacidade de processamento. Desta forma, surgiu a necessidade de um microprocessador
com funcionalidades especficas e com capacidade de processamento bem inferior aos microprocessadores
utilizados em sistemas computadorizados. Esses novos microprocessadores inicialmente ficaram
conhecidos como minicomputadores ou computadores dedicados. Na evoluo desses minicomputadores,
foram incorporados vrios perifricos (funcionalidades de outros CHIPs) em um mesmo CHIP, o que
posteriormente 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, como memrias, barramentos e
perifricos. 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,

www.picminas.com.br Pgina 21
Copyright - Todos os diretos reservados
forno de micro-ondas, dispositivos perifricos de computadores, pequenos sistemas de controle,
brinquedos, equipamentos mdicos, etc.
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 ditando o ritmo de trabalho de todo o sistema. A velocidade de execuo das instrues
do programa est diretamente relacionada com a frequncia do oscilador do microcontrolador (VALDS,
PALLAS, 2007). Existem vrios tipos de circuitos osciladores, como por exemplo os RC (resistivos e
capacitivos) e os de cristal, sendo esses ltimos mais utilizados devido sua grande estabilidade e preciso
em altas frequncias.
Assim como para um computador, a CPU considerada o crebro do microcontrolador. Ela
responsvel por carregar as instrues do programa, uma a uma, da memria onde esto armazenadas
para dentro de seus registradores de uso geral. A partir da, a CPU realiza a decodificao, execuo e
armazenamento dos resultados dessas operaes na memria, caso seja necessrio. A CPU constituda,
basicamente, por uma Unidade Lgica Aritmtica (ULA), responsvel por realizar operaes aritmticas e
lgicas e de tomada de deciso; uma Unidade de Controle, responsvel por realizar todo o controle de
acesso a memria e por decodificar as instrues; e, finalmente, por seus registradores, responsveis por
armazenar dados e instrues temporariamente, enquanto esto sendo processados (VALDS, PALLAS,
2007).
A CPU de um microcontrolador dispe de diferentes tipos de registradores, 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 e de informaes referentes ao funcionamento da CPU. Entre estes
indicadores est o sinal do resultado (positivo ou negativo), se o resultado zero, se houve estouro de
registradores e o tipo de paridade do resultado (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

www.picminas.com.br Pgina 22
Copyright - Todos os diretos reservados
instruo na memria, o contador de programa se incrementa, apontando assim para a prxima instruo.
Em um dado instante de tempo, o contador de programa contm o endereo da instruo que ser
executada na continuao (PEREIRA, 2008).
O Registrador de Endereos de Dados armazena os endereos dos dados situados na memria.
Este registrador essencial para o tratamento de dados indiretos na memria.
A Pilha (STACK) tem como principal funo armazenar endereos de retorno quando so
utilizadas instrues de chamadas de sub-rotinas. O endereo da prxima instruo do programa
armazenado na pilha e o programa desviado para o endereo da sub-rotina. Quando o programa
desviado para o comeo de uma rotina por meio da instruo correta, o endereo seguinte ao ponto que
estava sendo rodado armazenado na pilha para que, ao fim da rotina, o programa possa retornar
(SOUZA, 2005).
A memria do microcontrolador o lugar onde esto armazenadas, dentre outras coisas, as
instrues e os dados do programa. Em um microcontrolador sempre h, pelo menos, dois tipos de
memrias: uma voltil de rpido acesso (memria RAM) e outra com velocidade inferior com maior
capacidade de armazenamento e no voltil (memria FLASH). A RAM perde a informao armazenada
quando no h alimentao de energia. Sua funo armazenar temporariamente dados e instrues a
serem executadas pela CPU do microcontrolador. A memria FLASH, por sua vez, utilizada para
armazenar permanentemente todo o programa que deve ser executado pelo microcontrolador. Um nmero
crescente de microcontroladores dispe de alguma memria no voltil do tipo EEPROM para armazenar
dados fixos que s so trocados esporadicamente.
A quantidade de memria FLASH disponvel normalmente superior a quantidade de memria
RAM. Isso obedece a duas razes: a primeira est relacionada ao preo dessas memrias, sendo maior o
custo por Byte das memrias RAM se comparadas com as memrias FLASH. O outro motivo que a
memria RAM deve armazenar apenas partes do programa que sero executadas naquele momento, no
se fazendo necessrio o armazenamento completo do cdigo.
As entradas e sadas so particularmente importantes nos microcontroladores, pois atravs
delas que o microcontrolador interage com o meio exterior. O microcontrolador possui tanto entradas e
sadas digitais (portas I/O, portas de comunicao serial, PWM, etc.), quanto portas analgicas associadas
aos conversores A/D e D/A.
Outro recurso importante e cada vez mais comum nos microcontroladores atuais o Watchdog
Timer, que reinicia todo o sistema caso o programa principal apresente alguma falha.

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 vlvulas abertas equivaliam a lgica 0 e
vlvulas fechadas a lgica 1.
Apesar de possuir apenas dois algarismos, possvel representarmos qualquer nmero, letra e
comando com as palavras binrias (palavras constitudas de 0s e 1s), tendo como limitante apenas o
www.picminas.com.br Pgina 23
Copyright - Todos os diretos reservados
nmero de bits, pois quanto maior for o nmero de bits dessa palavra binria, maior ser o nmero de
combinaes binrias (nmeros binrios diferentes). Por exemplo:
- Com 2-bits ns s podemos criar 4 palavras binrias diferentes: 00, 01, 10 e 11;
- J com 3-bits possvel obter at 8 comandos diferentes: 000, 001, 010, 011, 100, 101, 110 e
111.
n
Desta forma, para uma palavra de n-bits teremos 2 combinaes diferentes que o sistema
microprocessado poder utilizar para representar nmeros e/ou comandos.

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 Figura 1.22.

www.picminas.com.br Pgina 24
Copyright - Todos os diretos reservados
Figura 1.22 - Transformao de um nmero na base-2 para base-10.

Observe que a palavra binria 11011010 equivale ao nmero 218 no sistema decimal de
numerao. Veja que para representarmos o mesmo nmero, o sistema binrio necessita de 8 algarismos
enquanto que o sistema decimal apenas 3. Essa a principal desvantagem do sistema binrio, pois exige
que o sistema possua uma memria maior para armazenar a mesma quantidade de informao. Por outro
lado, o sistema binrio bem menos complexo, pois s trabalha apenas com dois algarismos, permitindo
que os sistemas computadorizados trabalhem com o sistema de Tudo (lgica 1) ou Nada (lgica 0),
conhecida como Linguagem de Mquina ou Linguagem de Computador. Desta forma, se quisermos que
um computador (ou mais especificamente o processador do computador) entenda o nmero 218, na
verdade teremos de passar para ele o nmero 11011010.
Ainda existe outro sistema de numerao, chamado Hexadecimal, utilizado para representar os
programas escritos em cdigo binrio de forma mais compacta. Isso acontece porque, diferente do cdigo
binrio que possui menos algarismos que o sistema decimal, o hexadecimal possui 16 algarismos,
necessitando assim de palavras menores para representar o mesmo cdigo decimal ou binrio.
No incio do desenvolvimento dos sistemas computadorizados, as pessoas perceberam que
tinham muitas dificuldades em lidar com nmeros binrios, pois os cdigos desenvolvidos em linguagem de
mquina ficavam muito extensos e difceis de serem lidos. Por isso, um novo sistema de numerao foi
desenvolvido. S que desta vez, foi criado um sistema com 16 algarismos diferentes. Os primeiros 10
dgitos so os mesmo do sistema decimal (0, 1, 2, 3,... 9) e os 6 outros dgitos foram criados utilizando as
seguintes letras: A, B, C, D, E e F, formando assim um sistema de numerao Alfanumrico, chamado de
Sistema de Numerao Hexadecimal. O algarismo A equivale ao nmero 10 do sistema decimal, o B
equivale ao 11 e assim sucessivamente at o F que equivale ao 15. Desta forma, ficou mais simples para os
projetistas entenderem os cdigos de mquina que haviam desenvolvido, pois os mesmos ficaram bem
mais compactos uma vez que com um algarismo do sistema Hexadecimal era possvel representar at 4
algarismos do sistema Binrio, por exemplo, o maior nmero que pode ser representado com uma palavra
binria de 4-bits o 1111 que corresponde ao nmero 15 no sistema decimal e F no hexadecimal. (Figura
1.23)

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.

www.picminas.com.br Pgina 25
Copyright - Todos os diretos reservados
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 soma dos valores decimais dos dgitos binrios, veja o exemplo mostrado na
Figura 1.24:

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
n
binrio de n dgitos, basta aplicarmos a seguinte frmula: 2 1, veja os exemplos:
2
Com 2 dgitos => 2 1 = 3 (como vimos com nmeros binrios de 2 dgitos podemos representar
os nmeros decimais de 0 a 3, sendo o 3 o seu valor mximo);
3
Com 3 dgitos => 2 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, utilizado em um de nossos cursos, 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)

www.picminas.com.br Pgina 26
Copyright - Todos os diretos reservados
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.

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,


considerado o mais importante 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,

www.picminas.com.br Pgina 27
Copyright - Todos os diretos reservados
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
1 2
valor de 1, o segundo 1 tem o valor de 1x2 = 2 e o terceiro 1 tem o valor de 1x2 = 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
2
tem o valor de 1x10 = 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).
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
6
dgitos so iguais a 0, o valor do nmero binrio completo ser igual ao valor do bit 6 = 2 = 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
8
seja, um Byte pode representar at 256 (2 = 256) nmeros binrios diferentes, sendo 255 o maior nmero
decimal que pode ser representado.

www.picminas.com.br Pgina 28
Copyright - Todos os diretos reservados
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 ideia 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).
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

www.picminas.com.br Pgina 29
Copyright - Todos os diretos reservados
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.

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.

www.picminas.com.br Pgina 30
Copyright - Todos os diretos reservados
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 todas 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
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:


Introduo histrica sobre o surgimento dos microprocessadores;
Sistemas microprocessados e microcontrolados;
Linguagem de mquina, representao numrica;
Portas lgicas.

www.picminas.com.br Pgina 31
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-segmentos, displays de cristal lquido (LCD), rels, sensores diversos
(presso, temperatura, etc.) e muitos outros. So chamados de controles lgicos, pois a
operao do sistema baseia-se nas aes lgicas que devem ser executadas, dependendo do
estado dos perifricos de entrada e/ou sada.
O microcontrolador programvel, pois toda a lgica de operao de que acabamos de falar
estruturada na forma de um programa e gravada dentro do componente. Depois disso, toda
vez que o microcontrolador for energizado, o programa armazenado internamente ser
executado.
Quanto inteligncia do componente, podemos associ-la ao fato de os programas, a partir
dos quais o microcontrolador orienta suas aes, serem feitos a partir da inteligncia humana.
como se o homem emprestasse um pouco de sua inteligncia a uma mquina por meio de
algumas linhas de cdigo, permitindo a ela tomar decises dentro de um universo restrito de
eventos. Alm disso, a CPU do microcontrolador possui uma Unidade Lgica e Aritmtica
(ULA), que capaz de executar todas as operaes matemticas e lgicas requisitadas pelo
programa. Quanto mais poderosa a ULA do componente, maior sua capacidade de processar
informaes.
Em nossa 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, CPU e perifricos diversos como: timers, contadores, comunicao serial e paralela,
PWMs, conversores analgico-digitais, entre outros.
Atualmente, muitos equipamentos de nosso uso dirio, tais como: eletrodomsticos, videocassete,
alarmes, celulares, DVDs, brinquedos, entre outros, utilizam microcontroladores para execuo de suas
funes bsicas. Portanto, pode ser que voc nem sabia, mas esses componentes j fazem parte da sua
vida h um bom tempo (SOUZA, 2005). Hoje, temos em mdia 24 microcontroladores em uma casa com 4
(quatro) pessoas.
Os microcontroladores PIC (Peripherical Interface Controller), fabricados pela Microchip
Technology, podem processar dados de at 32-bits, dependendo do tipo e famlia a que pertencem, com
uma extensa variedade de modelos e perifricos internos. Tiveram sua origem em 1965, na diviso
eletrnica da General Instruments (GI). No inicio dos anos 70, essa empresa introduziu no mercado um
microcontrolador de 16-bits chamado CP1600, contudo, ele era pobre em I/O e lento em processamento.
Por volta de 1975, a GI introduziu no mercado uma verso aprimorada do PIC, com memria de programa
reprogramvel e diversos outros aprimoramentos, sob a sigla PIC 16C50 (WIKIPDIA.ORG).
O PIC representa uma famlia de microcontroladores projetados sob a arquitetura Harvard, usando
um conjunto de instrues reduzido (RISC).
Os microcontroladores podem ser projetados segundo duas arquiteturas:
Von-Neumann: apenas um barramento interno, pelo qual trafegam tanto instrues quanto
dados (Figura 2.1);

www.picminas.com.br Pgina 32
Copyright - Todos os diretos reservados
Figura 2.1 - Arquitetura Von-Neumann

Harvard: dois barramentos, sendo um exclusivo para trafego de dados e outro para instrues.
No caso dos microcontroladores PIC, o barramento de dados podem ter de 8-bits a 32-bits e o
de instrues pode ter 12, 14 ou 16-bits como mostrado na Figura 2.2;

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 foi utilizado CPUs
com tecnologia RISC (Reduced Instruction Set Computer Computador com conjunto de instrues
reduzido). Existe ainda a tecnologia CISC (Complex Instruction Set Computer Computador com conjunto
de instrues complexo), muito utilizada em computadores com tecnologia Von-Neumann.
Os PICs da Microchip so os microcontroladores mais vendidos no mundo. Isso se deve a
algumas caractersticas, tais como: grande variedade de famlias que permitem adaptar o C s mais
variadas necessidades existentes nos tempos modernos, ferramentas de desenvolvimento comuns para
todas as famlias, grande variedade de funcionalidades embutidas, preos competitivos, bom suporte
(datasheet, livros, notas de aplicaes, seminrios e muita informao disponvel na internet) e
principalmente pelo fato de a Microchip ter investido em suporte para usurios iniciantes e encapsulamento
dos CHIPs que permitiam sua montagem em proto-boards.

www.picminas.com.br Pgina 33
Copyright - Todos os diretos reservados
Os Cs PIC possuem famlias com ncleos de processamento de 12-bits, 16-bits e 32-bits
trabalham em velocidades de clock de at 80MHz, o que pode permitir uma velocidade de processamento
de at 120 DMIPS. Possibilita o reconhecimento de interrupes tanto externas quando provenientes de
perifricos internos. Funcionam com tenses de alimentao de 3 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)
acoplado a um PC, ou ainda, processos de autogravao por meio de bootloader (ver seo 3.5)
(WIKIPDIA.ORG).
Abaixo temos as primeiras funcionalidades internas dos PICs. Essas caractersticas variam de
acordo com o modelo e famlia do C PIC:
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 E PIC32MX775F256L

Os PIC18F4550 e PIC32MX775F256L so os microcontroladores usados em nossos cursos. A


escolha desses Cs se deve a algumas de suas caractersticas que os tornam os melhores de suas
famlias. No caso do PIC18F4550, podemos citar a facilidade de encontr-lo no comrcio, o seu custo
acessvel, a facilidade de gravao, possuir encapsulamento PDIP (o que permite sua montagem em proto-
board) e possuir perifricos que permitem o desenvolvimento das mais modernas solues, tais como,
comunicao USB. O PIC32MX775F256L foi escolhido por apresentar alto desempenho de processamento
associado a uma grande variedade de perifricos, o que permite a realizao das prticas mais modernas
quando o assunto sistema microcontrolador, como por exemplo, processamento de udio e vdeo,
controle de telas grficas coloridas dotadas de tecnologia touch-screen, dentre outros.

2.1.1. PIC18F4550

A seguir so apresentadas algumas das caractersticas do PIC18F4550:


Memria FLASH para armazenamento de programa: 32 KBytes;
Memria SRAM para armazenamento de dados: 2 KBytes;

www.picminas.com.br Pgina 34
Copyright - Todos os diretos reservados
Memria EEPROM 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;
Frequncia 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.

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

www.picminas.com.br Pgina 35
Copyright - Todos os diretos reservados
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 podem ser configuradas por meio do programa, os canais de
entradas analgicas (AN), pinos de alimentao (VDD e VSS), pinos de entrada para o oscilador externo
(OSC), porta de comunicao serial (RX e TX) e porta de comunicao USB (D+ e D), entre outros.
possvel ver tambm que vrios pinos acumulam mais de uma funo (Datasheet PIC18F4550).

Figura 2.3- Distribuio dos pinos no microcontrolador PIC18F4550 (Fonte: datasheet PIC18F4550).

O PIC18F4550 possui at 35 pinos de I/O configurveis, que esto agrupados em cinco grupos
denominados PORTAS. Desta forma, temos a PORT A, a PORT B, a PORT C, a PORT D e a PORT E.
A maioria desses pinos podem ser configurados como entrada ou sada (input/output), e como j
foi dito, alguns deles acumulam outras funes.
Podemos ver mais detalhes sobre cada pino na Tabela 3 (dividida em partes), que segue abaixo
(Ver datasheet do PIC18F4550 da pgina 18 23):

www.picminas.com.br Pgina 36
Copyright - Todos os diretos reservados
www.picminas.com.br Pgina 37
Copyright - Todos os diretos reservados
www.picminas.com.br Pgina 38
Copyright - Todos os diretos reservados
www.picminas.com.br Pgina 39
Copyright - Todos os diretos reservados
www.picminas.com.br Pgina 40
Copyright - Todos os diretos reservados
Tabela 3 - Pinos do PIC18F4550 (Fonte: datasheet do PIC18F4550).

ARQUITETURA INTERNA DO PIC18F4550

No diagrama da Figura 2.4, podem ser visualizadas as diversas partes que compem o
microcontrolador PIC 18F4550. Observe a ULA (Unidade Lgica Aritmtica) ligada ao registrador W (Work-
register). 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 visualizar 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 possvel visualizar os perifricos, tais como, a memria EEPROM, 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 ao centro da Figura 2.4, esto representados os osciladores internos, o regulador
de tenso da porta USB, Power-up Timer e Watchdog Timer. Na parte superior central, temos o contador de
linha de programa (Program Counter) e a pilha (Stack) com 31 nveis.
Mais informaes esto disponveis no datasheet do microcontrolador PIC18F4550, disponvel no
site no DVD didtico.

www.picminas.com.br Pgina 41
Copyright - Todos os diretos reservados
Figura 2.4 - Estrutura interna do microcontrolador PIC18F4550 (Fonte: datasheet PIC18F4550).

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

www.picminas.com.br Pgina 42
Copyright - Todos os diretos reservados
Figura 2.5 - Arquitetura do PIC18F4550 destacando as partes de um sistema microprocessado.

ORGANIZAO DA MEMRIA DO PIC18F4550

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;

www.picminas.com.br Pgina 43
Copyright - Todos os diretos reservados
Pode ser escrita/lida em tempo de execuo do programa atravs de registradores,
observe que para serem lidos ou escritos os dados devem primeiro passar pela
memria SRAM.
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.

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 aos 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


1
ciclo de instruo (4 TOSC ). 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.

MEMRIA DE PROGRAMA (FLASH)

www.picminas.com.br Pgina 44
Copyright - Todos os diretos reservados
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).

www.picminas.com.br Pgina 45
Copyright - Todos os diretos reservados
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 bancos 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 no 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)

www.picminas.com.br Pgina 46
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).

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

www.picminas.com.br Pgina 47
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 U = Bit no implementado, lido como 0
1 = Bit setado (nvel lgico 5V) 0 = Bit zerado (nvel lgico 0V)
x = Valor do bit desconhecido
Para informaes dos outros registradores, consulte o datasheet do PIC18F4550 disponvel no
site no DVD didtico.

MEMRIA EEPROM DE DADOS

A EEPROM uma memria no-voltil 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.

www.picminas.com.br Pgina 48
Copyright - Todos os diretos reservados
2.2 KIT DE DESENVOLVIMENTO COM PIC18F4550

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

2.2.1. CIRCUITOS ATUADORES

Os circuitos atuadores so compostos por: 3 (trs) LEDs (Vermelho, Verde e Amarelo), Rel de 5V
e o Buzzer (Sirene). A Figura 2.10, Figura 2.11 e Figura 2.12 mostram as ligaes de cada um desses
atuadores no PIC18F4550.

Figura 2.10 - Ligao dos leds no PIC.

Figura 2.11 - Ligao do Rel no PIC.

www.picminas.com.br Pgina 49
Copyright - Todos os diretos reservados
Figura 2.12 - Ligao do Buzzer (Sirene) no PIC.

2.2.2. CHAVES/TECLAS

O KIT possui quatro chaves tteis (Push button): Boto 1, Boto 2, RESET e BOOT. A chave
RESET de uso especfico e no pode ser utilizada pelos programas desenvolvidos pelo usurio. Para se
utilizar a chave ttil BOOT necessrio que o Jumper BOOT/RB4 esteja selecionado na posio
BOOT, como mostrado na Figura 2.13. Caso contrrio, o boto no possui nenhuma funcionalidade e o
pino RB4 (onde a chave BOOT est conectada) ficar disponvel no conector do Display de 7-Segmentos,
tanto para acionamento do prprio display, quanto para a utilizao de dispositivos externos ao KIT.

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

www.picminas.com.br Pgina 50
Copyright - Todos os diretos reservados
A Figura 2.14 mostra as ligaes das chaves Dip-Switch no KIT. Observe a existncia de um
Jumper chamado CHAVES. Com ele possvel habilitar ou desabilitar os pull-ups presentes em cada uma
das chaves. Os mesmos pinos que esto conectados s chaves (RA1/AN1, RA2/AN2, RA3/AN3 e RA4)
tambm so disponibilizados em um conector de expanso. Os pull-ups devem ser desabilitados sempre
que o usurio desejar acionar outros dispositivos externos por meio do conector de expanso.

Figura 2.14 - Ligao da Chave Dip switch no PIC.

2.2.3. CIRCUITOS SENSORES

Os circuitos sensores so compostos 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 KIT.
O LDR (Light Dependent Resistor) um transdutor resistivo sensvel as variaes da intensidade
luminosa. A sua resistncia inversamente proporcional intensidade de luz a qual est submetido, ou
seja, quanto maior a intensidade de luz aplicada sobre ele, menor ser o valor de sua resistncia eltrica.
Desta forma, fica fcil verificar pela Figura 2.15 que medida que a resistncia do LDR diminui a tenso
eltrica aplicada na entrada analgica AN5 tambm ir diminuir. Conclui-se assim, que quanto maior a
intensidade luminosa aplicada ao LDR, menor ser a tenso eltrica presente na entrada analgica AN5.

www.picminas.com.br Pgina 51
Copyright - Todos os diretos reservados
Figura 2.15 - Ligao do LDR no PIC.

O sensor de temperatura utilizado o MCP9700A, que est conectado ao PIC como mostrado na
Figura 2.16. Este sensor est acoplado ao KIT por meio de um conector, podendo assim ser removido. Isso
permite a conexo de outros sensores entrada analgica AN0, desde que estes possuam caractersticas
eltricas compatveis com as entradas analgicas do PIC (ver datasheet Conversor Analgico Digital).

Figura 2.16 - Ligao do sensor de temperatura no PIC.

O potencimetro funciona como um circuito divisor de tenso. A tenso eltrica aplicada ao pino
AN4 do PIC18F4550 varia de acordo com a posio de seu parafuso. (Figura 2.17)

www.picminas.com.br Pgina 52
Copyright - Todos os diretos reservados
Figura 2.17 - Ligao do potencimetro no PIC.

2.2.4. DISPLAYS

O KIT possui dois conectores para displays: um conector para display duplo de 7-segmentos
(anodo comum) e um conector compatvel com a maioria dos displays de LCD Alfanumricos disponveis no
mercado (displays 8x1, 8x2, 16x1, 16x2, 16x4, 32x2, etc.). As Figura 2.18 e Figura 2.19 mostram as
ligaes de cada um desses conectores. Observe que para habilitar o funcionamento do ponto entre os dois
dgitos, o Jumper BOOT/RB4 deve estar selecionado na posio RB4, como mostrado na Figura 2.18.

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.

www.picminas.com.br Pgina 53
Copyright - Todos os diretos reservados
Figura 2.19 - Ligao do display de LCD no PIC.

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

Nome Pino do Pino do Nome do Pino Descrio


no LCD LCD PIC18F4550 no PIC18F4550
VSS 1 GND Pino de Terra do LCD
VDD 2 5V Pino de Alimentao
VO 3 - No conectado Pino de ajuste do contraste ligado ao potencimetro.
RS 4 P21 RD2 Pino de Seleo de envio de Comandos ou Dados.
R/W 5 GND Pino de Seleo Leitura ou Escrita de dados.
No KIT PICMINAS est habilitada apenas escrita.
E 6 P22 RD3 Pino de habilitao de recepo de sinal do LCD
D0 7 - No conectado Pino para envio de Dados (No utilizado no KIT)
D1 8 - No conectado Pino para envio de Dados (No utilizado no KIT)
D2 9 - No conectado Pino para envio de Dados (No utilizado no KIT)
D3 10 - No conectado Pino para envio de Dados (No utilizado no KIT)
D4 11 P34 RD4 Pino para envio de Dados
D5 12 P25 RD5 Pino para envio de Dados
D6 13 P33 RD6 Pino para envio de Dados
D7 14 P26 RD7 Pino para envio de Dados
BL+ 15 5V Polo positivo da alimentao do Back Light do LCD
BL- 16 GND Polo negativo da alimentao do Back Light do LCD
Tabela 4 - Informaes de ligao do LCD.

www.picminas.com.br Pgina 54
Copyright - Todos os diretos reservados
2.2.5. CIRCUITOS DE GRAVAO IN-CIRCUIT (ICSP)

O KIT PICMINAS possui um conector padro usado para gravao in-circuit, o ICSP (In-Circuito
Serial Programming). Desta forma, o kit pode ser conectado s gravadoras disponveis no mercado que
possuam esse tipo de conexo (ICD2, PICKIT2, dentre outras), tanto para carregar programas, quanto para
debug e emulao de firmwares, veja a Figura 2.20.

Figura 2.20 Conector padro MICROCHIP ICSP.

RECOMENDAES PARA USO DO CONECTOR ICSP DO KIT PICMINAS:


- 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
recomendada a utilizao da alimentao da prpria gravadora.

2.2.6. Jumpers do KIT PICMINAS

Jumper uma ligao mvel entre dois pontos de um circuito eletrnico. , geralmente, uma
pequena pea plstica que contm um metal em seu interior, responsvel pela conduo de eletricidade
entre dois ou mais pontos de um circuito. So responsveis por desviar o fluxo eltrico permitindo
configuraes por meio fsico do hardware em questo. O KIT PICMINAS dispe de diversos jumpers que
permitem habilitar e desabilitar dispositivos, como por exemplo, buzina e rel, ou ainda, possibilitam ao
usurio escolher entre duas opes de configurao. Os Jumpers so identificados por meio de nomes
escritos na placa do KIT PICMINAS. Abaixo segue uma lista com todos os nomes e a funo de cada um
deles:
Jumper CHAVES: quando removido desabilita os pull-ups das 4 chaves do Dip-Switch.
Jumper BUZZER: quando removido desabilita o funcionamento do Buzzer.
Jumper REL: quando removido desabilita o funcionamento do Rel.
Jumper BOOT | RB4: com este jumper possvel escolher aonde o pino RB4 ser conectado.
Quando selecionado na posio BOOT, o pino RB4 estar conectado chave ttil BOOT. J se
selecionado na posio RB4, a chave BOOT para de funcionar e o pino RB4 fica disponvel no
conector do display de 7-Segmentos.
Jumper VUSB | VBAT: permite ao usurio escolher qual ser a fonte de alimentao do KIT, se
proveniente do cabo USB (posio VUSB) ou da alimentao externa (posio VBAT).

www.picminas.com.br Pgina 55
Copyright - Todos os diretos reservados
A Figura 2. 21 mostra como os cinco Jumpers esto conectados aos respectivos circuitos do KIT
PICMinas.

Figura 2. 21 - Jumpers do KIT PICMinas.

www.picminas.com.br Pgina 56
Copyright - Todos os diretos reservados
2.3 COMPONENTES DO KIT DIDTICO PIC18

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

Figura 2.22 - Componentes principais do kit de desenvolvimento.

Referncias:
1- MARTINS, H. R. Sistema Para O Estudo Do Limiar De Percepo De Corrente Eltrica Com
Forma De Onda Arbitrria., 2008. 120 p. Dissertao (Mestrado em Engenhria) - Universidade
Federal de Minas Gerais, PPGEE, Belo Horizonte.
2- PEREIRA, Fabio. Microcontroladores PIC Programao em C. 7 ed. So Paulo: Editora rica
Ltda, 2008.
3- SOUZA, David Jos. Desbravando o PIC Ampliado e Atualizado para PIC16F628A. 5 ed. So
Paulo: Editora rica Ltda, 2005.

Neste captulo, falamos sobre:


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

www.picminas.com.br Pgina 57
Copyright - Todos os diretos reservados
Captulo 3 Ferramentas de Desenvolvimento

Antes de iniciarmos o desenvolvimento de projetos com sistemas microcontrolados, faz-se


necessria a instalao de todas as ferramentas (softwares) utilizadas em sua programao. Todos os
softwares necessrios possuem verses gratuitas disponveis no site da Microchip ou em nosso DVD
Didtico.
O DVD Didtico traz opo vrios vdeos explicativos que iram gui-lo por todo o processo de
instalao desses programas. Esses vdeos substituem em parte as informaes contidas nesse captulo.
Este captulo trs algumas dicas para orient-lo no manuseio do DVD Didtico referente ao
processo de instalao das ferramentas de desenvolvimento.
Para desenvolver programas em linguagem C nos microcontroladores PIC, so utilizados os
seguintes softwares: compilador C18 (para programar microcontroladores da famlia PIC18), compilador
C32 (para programar microcontroladores da famlia PIC32) e o ambiente de desenvolvimento MPLAB. Para
a gravao, no microcontrolador, dos cdigos desenvolvidos via USB, utilizando o Bootloader, sem a
necessidade de um gravador externo, voc pode utilizar o DVD Didtico, no cone Gravar PIC.
importante seguir a ordem de instalao proposta neste captulo, 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.
O Programa fonte, ou simplesmente fonte do programa uma sequncia de texto, escrita numa
linguagem de programao que ser convertida em cdigo de mquina para ser gravado na memria de
programa do PIC. O Compilador o programa que converte o cdigo fonte, desenvolvido pelo usurio em
alguma linguagem de programao, em cdigo de mquina. O Simulador o programa que, como o prprio
nome diz, simula o funcionamento do C (CPU e perifricos), tornando possvel a verificao de programas
fonte em desenvolvimento, sem a necessidade de um hardware.
A linguagem de programao utilizada pelo MPLAB para gerar os cdigos o Assembly, mas
podem ser instalados outros compiladores para trabalharem em conjunto com o MPLAB, como por exemplo,
o PICC Lite da Hi-Tech, PCWH CSS, C18, C32, entre outros. Alguns desses compiladores utilizam a
linguagem C como interface com os usurios, porm cada compilador possui suas particularidades na forma
de configurar os registradores e acessar os perifricos do microcontrolador.
O MPLAB trabalha com projetos, que so constitudos por arquivos gerados pelo usurio e/ou
arquivos de bibliotecas que agrupam funes desenvolvidas pela prpria Microchip.
Nesta seo, sero mostrados os passos envolvidos na instalao do MPLAB IDE a partir do DVD
Didtico. Este DVD possui a verso mais atual da poca de sua gravao. Voc pode obter a verso mais
atual, gratuitamente, no site da Microchip.

www.picminas.com.br Pgina 58
Copyright - Todos os diretos reservados
Procedimento
1) Para instalar o MPLAB utilizando o DVD, v aba Instaladores e em MPLAB IDE clique no boto
Instalar (ver Figura 3. 1). O instalador abrir automaticamente. Clique em Next (ver Figura 3.2).

Figura 3. 1 - cone Instaladores do DVD Didtico. Instao do MPLAB.

Figura 3.2 - Tela de boas vindas do instalador do MPLAB.

www.picminas.com.br Pgina 59
Copyright - Todos os diretos reservados
2) A tela seguinte contm o termo de licena do MPLAB. Leia atentamente e, caso voc concorde, clique
em I accept the terms of the license agreement, em seguida, clique em Next (ver Figura 3.3).

Figura 3.3 - Termo de licena.

3) Nesta etapa o instalador nos dar a opo de instalar o programa completo, com todos os seus
recursos, ou realizar uma instalao customizada. Utilizaremos todos os recursos do MPLAB. Para isso,
clique em complete e depois em Next (ver Figura 3.4).

Figura 3.4 - Tipo de instalao. Escolha a opo "Completa".

www.picminas.com.br Pgina 60
Copyright - Todos os diretos reservados
4) Neste passo iremos escolher o diretrio onde o MPLAB ser instalado. muito importante que o
diretrio seja C:\Microchip. Isso evita erros e padroniza a instalao. Para mudar para o diretrio
C:\Microchip clique em browse. Apague a frase program files ou arquivo de programas deixando
apenas c:\Microchip. Clique em Ok. Confira se o diretrio C:\Microchip. Se o diretrio estiver correto
clique em Next (ver Figura 3.5).

Figura 3.5 - Escolha do diretrio onde o MPLAB ser instalado.

5) Nesta etapa temos o termo de licena da aplicao Maestro. Este uma ferramenta para configurar e
incorporar uma serie de mdulos de firmware pr-escritos em sua aplicao. Ele completamente
compatvel com o MPLAB IDE e foi desenvolvido pela prpria Microchip. Leia com ateno toda a
licena e, caso voc concorde, clique em I accept the terms of the license agreement, em seguida
clique em Next.

6) Em seguida aparecer a opo para a instalao do compilador MPLAB C32. O C32 um compilador
para PICs da famlia 32. Leia com ateno toda a licena e, caso voc concorde, clique em I accept
the terms of the license agreement e depois clique em Next.

7) No passo seguinte aparecer uma tela com um resumo do que ser instalado. Confira se o diretrio de
instalao C:\Microchip e clique em Next (ver Figura 3.6). Isso levar alguns minutos.

Figura 3.6 - Resumo do processo de instalao.

www.picminas.com.br Pgina 61
Copyright - Todos os diretos reservados
8) No final do processo de instalao ir aparecer uma mensagem pedindo para que o programa HI-TEC
C installer seja instalado. Esse programa um conjunto de compiladores para vrias famlias de PIC,
ferramentas de desenvolvimento para sistemas embarcados e uma IDE baseada em Eclipse (HI-TIDE
) para as famlias de 8, 16, e 32-bits do microcontrolador. Ns no utilizaremos esta ferramenta, desta
forma, desnecessria sua instalao. Clique em No (ver Figura 3.7).

Figura 3.7 - Instalador do programa HI-TECH.

9) A Figura 3.8 traz uma tela informativa que indica que o processo de instalao foi concludo com
sucesso. Clique em Finish para fech-la.

Figura 3.8 - Finalizao da instalao.

www.picminas.com.br Pgina 62
Copyright - Todos os diretos reservados
10) Por fim, aparecer uma janela informativa mostrando uma lista de documentos e notas de verses e
instalaes de drives referentes aos programas instalados. Voc pode fechar essa janela.

Figura 3.9 - Tela meramente informativa.

Com isso terminamos a instalao do MPLAB. Confira se um cone do MPLAB foi criado no
Desktop (rea de Trabalho) de seu computador.

Caso aparea um pedido para instalao do Driver da Microchip Custom USB Device, clique em
Instalar.

3.2 COMPILADORES C18 E C32 DA MICROCHIP

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.10),
isso feito por um tradutor chamado compilador.

Figura 3.10 - Funo do compilador.

Para a programao dos PICs (PIC18 e PIC32) utilizados em nossos cursos, so utilizados os
compiladores C18 e C32 da prpria Microchip. Eles permitem que o programador escreva cdigos em
linguagem C e, posteriormente, os convertam para a linguagem de mquina apropriada ao C PIC
utilizado.
Os compiladores C18 e C32 possuem duas verses: uma verso comercial que pode ser
comprada no site da Microchip, e uma verso de estudante gratuita, disponvel neste DVD, que diminui seu

www.picminas.com.br Pgina 63
Copyright - Todos os diretos reservados
poder de compilao aps um perodo de avaliao (60 dias). No entanto, mesmo aps expirar o tempo de
avaliao, este compilador continuar atendendo as necessidades de desenvolvimento de projetos no
comerciais.
Um projeto criado no MPLAB, gerenciado por informaes gravadas num arquivo de extenso
.mcp (Projeto do MPLAB). A compilao de um projeto gera importantes arquivos, conforme mostrado na
Figura 3.11.

Figura 3.11 - Processo de compilao do cdigo.

O programador escreve o cdigo em C no MPLAB e inclui as bibliotecas que precisam ser usadas.
O MPLAB utiliza o compilador para converter a linguagem de programao, tambm conhecida como
linguagem de alto nvel (neste caso linguagem C) para linguagem de mquina (linguagem de baixo
nvel). O compilador utiliza outro software chamado Linker (MPLINK) que ir instanciar as bibliotecas
necessrias para o funcionamento do cdigo em desenvolvimento. Finalmente, depois da linkagem e da
compilao, temos como resultado o cdigo em linguagem de mquina (.HEX).
O principal arquivo resultante no processo de compilao o arquivo 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 no DVD didtico,
na seo Datasheets, em Manuais do MAPLAB Guia do Usurio.
Alguns dos outros arquivos gerados so:
Code file (.cod) Arquivo de depurao usado pelo MPLAB IDE, contm a informao
simblica e o cdigo objeto;
Listing file (.lst) Cdigo fonte original, passo-a-passo com o cdigo final em binrio;
Error file (.err) Arquivo de erros gerados pelo compilador;
Configuration file (.cof) Arquivo de configurao do dispositivo usado, contm toda a
configurao de portas de I/O, registradores e outros.

www.picminas.com.br Pgina 64
Copyright - Todos os diretos reservados
3.2.1. INSTALAO DO COMPILADOR C18

CARACTERSTICAS DO COMPILADOR C18

O compilador MPLAB C18 livre apenas por 60 dias e uma adaptao do compilador ANSI C
para microcontroladores PIC18.
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;
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 alocao de dados.

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

Procedimento
1) Para instalar o C18 a partir deste DVD, v aba instaladores e em Compilador C18 Student Edition
clique no boto Instalar. O instalador abrir automaticamente (ver Figura 3.12).

Figura 3.12 - cone Instaladores do DVD Didtico - Instalador do Compilador C18.

www.picminas.com.br Pgina 65
Copyright - Todos os diretos reservados
2) No passo seguinte aparecer uma tela de boas vindas instalao. importante que voc j tenha
instalado o MPLAB em sua mquina e que este no esteja aberto. Clique em Next para continuar
(ver Figura 3.13).

Figura 3.13 - Tela de boas vindas do instalador do compilador C18.

3) Na janela seguinte temos o termo de licena do C18. Leia atentamente e, caso voc concorde, clique
em I accept the agreement e, em seguida, clique em Next (ver Figura 3. 14).

Figura 3. 14 - Licena do compilador C18.

www.picminas.com.br Pgina 66
Copyright - Todos os diretos reservados
4) No prximo passo deve-se escolher o diretrio onde o compilador C18 ser instalado. muito
importante que o diretrio seja C:\mplabc18. Mude o caminho padro presente na instalao para o
C:\mplabc18. Isso evita erros e padroniza a instalao. Clique em Next (ver Figura 3.15).

Figura 3.15 - Escolha do diretrio onde ser instalado o C18.

5) Em seguida, uma janela ir informar que o programa est pronto para iniciar a instalao do C18, clique
em Next e aguarde. O processo de instalao levar alguns minutos.

6) Ao final do processo de instalao aparecer uma janela informando que a instalao foi concluda com
sucesso. Pressione finish para fech-la (ver Figura 3.16).

Figura 3.16 - Final do processo de instalao do compilador C18.

Pronto! O compilador C18 j foi instalado em seu computador.

www.picminas.com.br Pgina 67
Copyright - Todos os diretos reservados
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.

h 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).
lkr Contm os arquivos linker script para os C suportados no C18.

mpasm 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.
Scr 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 subdiretrios do MCC18.

www.picminas.com.br Pgina 68
Copyright - Todos os diretos reservados
3.2.2. INSTALAO DO COMPILADOR C32

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

Procedimento
1) Para instalar o C32 a partir deste DVD, v aba instaladores e em Compilador C32 Student Edition
clique no boto Instalar. O instalador abrir automaticamente (ver Figura 3.17).

Figura 3.17 - cone Instaladores do DVD Didtico - Instalador do Compilador C32.

2) No passo seguinte aparecer uma tela de boas vindas instalao. importante que voc j tenha
instalado o MPLAB em sua mquina e que este no esteja aberto. Clique em Next para continuar
(ver Figura 3.18).

Figura 3.18 - Janela de boas vindas do instalador do compilador C32.

www.picminas.com.br Pgina 69
Copyright - Todos os diretos reservados
3) Na janela seguinte temos o termo de licena do C32. Leia atentamente e, caso voc concorde, clique
em I accept the agreement e, em seguida, clique em Next (ver Figura 3.19).

Figura 3.19 - Termo de licena do compilador C32.

4) No prximo passo deve-se escolher o diretrio onde o compilador C32 ser instalado. muito
importante que o diretrio seja C:\MPLAB C32. Mude o caminho padro presente na instalao para o
C:\ MPLAB C32. Isso evita erros e padroniza a instalao. Clique em Next (ver Figura 3.20).

Figura 3.20 - Escolha do diretrio onde ser instalado o C32.

5) Em seguida, uma janela ir informar que o programa est pronto para iniciar a instalao do C32, clique
em Install e aguarde. O processo de instalao levar alguns minutos.

www.picminas.com.br Pgina 70
Copyright - Todos os diretos reservados
6) Ao final do processo de instalao aparecer uma janela informando que a instalao foi concluda com
sucesso. Pressione finish para fech-la (ver Figura 3.21).

Figura 3.21 - Final do processo de instalao do compilador C32.

Pronto! O compilador C32 j foi instalado em seu computador.

3.3 FIRMWARE BOOTLOADER

Para falarmos sobre Bootloader devemos primeiro entender a diferena entre um firmware e um
software. Firmware um programa que fica gravado dentro de um sistema embarcado (em sua memria de
programa: ROM, EEPROM e FLASH), e nele esto contidas todas as instrues de funcionamento,
reconhecimento e operao de um determinado equipamento eletrnico (como por exemplo, mquinas de
lavar, micro-ondas, celulares, vdeos-game, cmeras fotogrficas, entre outros), em suma, um programa
desenvolvido para um hardware especfico. J o software um programa desenvolvido para executar em
computadores de modo geral (respeitando alguns requisitos mnimos para o seu funcionamento), no
estando vinculado a um hardware especfico. Ou seja, um software pode ser desenvolvido para funcionar
em um computador independente de sua marca (Apple, HP, Dell, Toshiba, etc.) ou modelo.
Baseado neste raciocnio, voc saberia responder se o programa Word da Microsoft seria um
software ou um firmware? Se o Word fosse um firmware, deveriam existir inmeras verses do mesmo, uma
para cada marca e modelo de computador existente no mercado. Desta forma, fica fcil concluir que o
programa Word, assim como o prprio Sistema Operacional Windows, so exemplos de softwares.
Outro exemplo seria um programa para controlar as funes de um forno de micro-ondas. Este
seria um software ou firmware? Para respondermos a esta pergunta vamos nos fazer outra pergunta: seria
possvel gravar o programa responsvel pelo funcionamento de um forno de micro-ondas da marca LG em
outro forno de micro-ondas da marca Consul e este ltimo continuar funcionando? Provavelmente no, pois
esses programas so desenvolvidos para a montagem especfica de cada modelo de micro-ondas,
pensando em seus dispositivos eletrnicos como, por exemplo, tipo de teclado, nmero de funcionalidades,
tipo de display (LCD, 7 segmentos, touch-screen, etc), caractersticas eltricas do motor que gira o prato e
at mesmo do microcontrolador utilizado para controlar todos esses perifricos. Desta forma, fica fcil
concluir que o programa gravado em um modelo especfico de forno de micro-ondas da marca LG foi
desenvolvido especificamente para aquele equipamento, no sendo possvel grav-lo nem em outros

www.picminas.com.br Pgina 71
Copyright - Todos os diretos reservados
modelos de micro-ondas da prpria LG. Isso nos permite afirmar que este programa trata-se de um firmware
e no de um software, uma vez que o mesmo foi feito para um hardware especfico.

Firmware Software
Desenvolvido especificamente para um Desenvolvido para rodar em qualquer
determinado dispositivo eletrnico computador com o mesmo sistema
(Microcontrolador + circuito especfico com operacional (Windows, Linux, OS e outros)
os componentes ligados ao C). independente da configurao do hardware.
Depende da estrutura externa ligada ao C, No depende de todos os dispositivos
uma vez mudada a estrutura deve mudar o (placa de vdeo, som, modem) ligados no
firmware. Por exemplo: um programa computador. Funciona apenas com a
desenvolvido para executar numa TV configurao mnima.
Toshiba no funciona numa TV LG.
Exemplos de equipamentos que usam Exemplos de equipamentos que usam
firmware: micro-ondas, DVD player, TV, software: computadores pessoais, celulares
controle remoto, celular, videogame, relgio modernos com sistema operacional
digital e etc. 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 possveis formas de se armazenar (carregar) o
programa desenvolvido para um determinado microcontrolador dentro de sua memria de programa. Este
programa ir controlar todas as funcionalidades do microcontrolador para uma aplicao especfica. Iremos
cham-lo de Firmware de Aplicao.
O modo mais comum de gravar o Firmware de Aplicao chamado de gravao off-board.
Nesse mtodo necessrio retirar o microcontrolador da sua plataforma de aplicao (placa de circuito
impresso que liga os perifricos do microcontrolador aos dispositivos externos que ele ir controlar, como
por exemplo: botes, rels, LEDs, display, etc.) e coloc-lo em outro dispositivo, chamado Gravadora, que
ir gerenciar a transferncia do Firmware de Aplicao de dentro do computador para a memria de
programa do microcontrolador. Este mtodo ser melhor detalhado na seo 3.6. A Figura 3.22 ilustra esse
tipo de gravao.

Figura 3.22 - Mtodo de Gravao Off-Board.

www.picminas.com.br Pgina 72
Copyright - Todos os diretos reservados
Existem ainda outros dois mtodos de gravao: In-circuit via Hardware e In-circuit via Bootloader.
Nesses mtodos, no h a necessidade de retirar o microcontrolador da placa de aplicao para realizar a
gravao do firmware em sua memria de programa (In-circuit no circuito).
In-circuit via Hardware: Neste modo, apesar de no precisar retirar o PIC do KIT, ainda
necessrio o uso de uma gravadora. Alm disso, a placa de aplicao (por exemplo o KIT Didtico) deve
possuir alguma interface de comunicao com a gravadora, pois ser a gravadora que gerenciar o
processo de transferncia e armazenamento na memria de programa do microcontrolador. Para os PICs
um mtodo de conexo entre gravadora e placa de aplicao o ICSP (In-Circuit Serial Programmer),
compatvel com a maioria das gravadoras de PIC existentes no mercado. Perceba na Figura 3.23 que o KIT
Didtico est conectado gravadora por meio de seu conector ICSP (ver detalhes do KIT na seo 2.3
desta apostila). Assim como no mtodo off-board, neste mtodo necessrio conectar a gravadora ao
MPLAB (via conexo serial ou USB). O MPLAB busca o arquivo.hex (firmware compilado) no HD do
computador e o envia para a gravadora via porta USB ou serial. A gravadora acessa a memria de
programa do PIC (memria FLASH) via conexo ICSP e armazena o todo o arquivo.hex. (ver Figura 3.23)

Figura 3.23 - Modo de gravao in-circuit via hardware.

In-circuit via Hardware: Este um mtodo de autogravao, ou seja, o prprio microcontrolador


onde se deseja carregar o arquivo.hex ir gerenciar todo o processo de gravao. Isso possvel porque
em uma pequena parte de sua memria de programa (FLASH) foi previamente gravado outro firmware, que
ir coordenar a transferncia do Firmware de Aplicao (arquivo.hex) do computador para a memria a
prpria memria de programa do microcontrolador. Esse firmware chamado de Bootloader, expresso
em ingls que significa Rotina de Partida.
O Firmware Bootloader (previamente gravado em uma pequena parte da memria de programa
do microcontrolador por um dos outros dois mtodos mencionados anteriormente) o programa que inicia a
gravao (o carregamento) de Firmwares de Aplicao no microcontrolador pelo mtodo in-circuit via
Bootloader. No caso do PIC18F4550 isso feito atravs da porta USB. O Bootloader ir comunicar com o
software de gravao de nosso DVD Didtico, presente no cone Gravar PIC (ver Figura 3.24). Maiores
detalhes sobre este procedimento so vistos na seo 3.4 ou nos vdeos de nosso DVD Didtico.

www.picminas.com.br Pgina 73
Copyright - Todos os diretos reservados
A maior vantagem de sistemas que possuem a funcionalidade de autogravao no precisar
retirar o microcontrolador de sua plataforma de aplicao e de no fazer uso de uma gravadora.

Figura 3.24 - Mtodo de Autogravao.

O Bootloader no PIC18F4550 usa 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).

www.picminas.com.br Pgina 74
Copyright - Todos os diretos reservados
3.4 COMO CRIAR UM PROJETO NO MPLAB

O primeiro passo para desenvolver uma soluo utilizando um microcontrolador da Microchip a


criao de um projeto. O projeto contm as informaes do microcontrolador e do compilador utilizado, os
diretrios onde esto os arquivos fonte e as bibliotecas, configuraes da workspace, entre outros. O
MPLAB disponibiliza uma ferramenta para facilitar a criao de projetos chamada Project Wizard que ser
utilizada nesta seo.

Para criar um projeto siga os seguintes passos:

Procedimento

1) Crie uma pasta em seu computador com o nome do seu projeto. Abra o DVD didtico e clique no cone
Projetos. No menu Projetos ( esquerda da tela), em Arquivos Modelos, clique sobre a famlia do
PIC desejado (PIC18 ou PIC32). Em seguida, clique no boto Salvar Modelo e escolha o diretrio
onde deseja salvar os arquivos. Os arquivos modelo devem ser salvos dentro da pasta de projeto que
voc acabou de criar (ver Figura 3.25).

Figura 3.25 - Arquivos modelo no DVD didtico.

www.picminas.com.br Pgina 75
Copyright - Todos os diretos reservados
2) Abra o MPLAB. Clique no menu Project e em seguida em Project Wizard (ver Figura 3.26)

Figura 3.26 - Janela do MPLAB - Acessando o "Project Wizard".

3) Abrir uma janela de boas vindas ao assistente de criao de projetos. Clique em avanar (ver Figura
3.27)

Figura 3.27 - Janela de Boas Vindas.

www.picminas.com.br Pgina 76
Copyright - Todos os diretos reservados
4) A tela seguinte permite a seleo do dispositivo a ser utilizado. Em nossos KITs utilizamos o
PIC18F4550 ou o PIC32MX775F256L. Selecione o microcontrolador desejado e, em seguida, clique no
boto avanar (ver Figura 3.28).

Figura 3.28 - Escolha do microcontrolador.

5) Na prxima tela, necessrio selecionar qual o compilador a ser utilizado no projeto. Isto feito atravs
da opo Active Toolsuite. Caso esteja utilizando o PIC18F4550 escolha a opo Microchip C18
Toolsuite. Caso esteja utilizando nosso KIT avanado com o PIC32, escolha a opo Microchip PIC32
C-Compiler Toolsuite. Em seguida, clique em avanar (ver Figura 3.29).

Figura 3.29 - Escolha da "Active Toolsuite".

www.picminas.com.br Pgina 77
Copyright - Todos os diretos reservados
6) A prxima tela permite ao usurio escolher o diretrio onde o projeto ser salvo, bem como o nome do
mesmo. Para tanto, clique em Browser e escolha o diretrio e o nome do projeto. Em seguida, clique
em avanar.

Figura 3.30 - Escolha do diretrio.

7) A prxima tela permite adicionar arquivos ao seu projeto. Ns no recomendamos adicionar arquivos
atravs desta janela devido grande complexidade dos modos de importao de arquivos. Apenas
clique em avanar. (ver Figura 3. 31)

Figura 3. 31 - Inserir arquivos.

www.picminas.com.br Pgina 78
Copyright - Todos os diretos reservados
8) A prxima janela mostra um resumo dos dados do seu projeto. Confira o microcontrolador escolhido, o
compilador, o caminho do projeto. Se todas as informaes estiverem corretas clique em concluir (ver
Figura 3.32).

Figura 3.32 - Resumo do projeto.

9) O prximo passo adicionar os arquivos main.c e linker ao seu projeto. Recomendamos que utilizem os
arquivos disponveis em nosso DVD. Para adicionar arquivos ao seu projeto, utilize janela do Projeto
(Ver Figura 3.33). Nesta janela voc pode adicionar arquivos fontes (Source Files), arquivos cabealhos
(Header Files), arquivos objetos (Object Files) e arquivos de biblioteca (Library Files).

Figura 3.33 - Janela "Project".

www.picminas.com.br Pgina 79
Copyright - Todos os diretos reservados
10) Para adicionar o arquivo main.c em seu projeto, clique com o boto direito do mouse sobre a pasta
Source Files, e em seguida clique em Add Files (ver Figura 3.34).

Figura 3.34 - Adicionando arquivos ao projeto.

11) Abrir uma janela de busca. Localize seu arquivo (previamente copiado em seu computador, dentro do
diretrio do seu projeto) e, em seguida, clique em abrir (ver Figura 3. 35).

Figura 3. 35 - Adicionando arquivos ao projeto.

12) Para incluir o arquivo linker (.lkr) siga as mesmas instrues dos passos 10 e 11. No entanto, este
arquivo deve ser includo na pasta Linker Script. Para isso, clique com o boto direito na pasta Linker
Script e, em seguida, clique em Add Files. Encontre o arquivo de linker e clique em abrir.

www.picminas.com.br Pgina 80
Copyright - Todos os diretos reservados
13) Seu projeto est pronto. O passo seguinte ser abrir o arquivo main.c e comear a desenvolver o seu
cdigo. Para abrir o arquivo main.c, v na janela Project, na pasta Source Files e d um duplo clique
em main.c (ver Figura 3.36).

Figura 3.36 - Janela do MPLAB mostrando o arquivo main.c do projeto teste.mcp aberto.

www.picminas.com.br Pgina 81
Copyright - Todos os diretos reservados
3.5 COMO COMPILAR E GRAVAR UM FIRMWARE NO KIT DIDTICO
UTILIZANDO BOOTLOADER

Aps a implementao de um programa no MPLAB os prximos passos seriam a compilao e


gravao do cdigo no KIT Didtico. Compilar transformar o cdigo escrito em linguagem C, para
linguagem de mquina, hexadecimal (para maiores detalhes veja a seo 3.2).
O processo de compilao de seu projeto muito simples. V barra ferramentas e clique sobre o
boto build all. Observe na janela Output as mensagens do compilador. Caso seu projeto no possua
erros, ir aparecer mensagem BUILD SUCCEEDED indicando que a compilao foi efetuada com
sucesso (ver Figura 3.37). Voc tambm pode pressionar o atalho ctrl+F10 para iniciar a compilao.

Figura 3.37 - Boto de compilao - Build All.

Aps a compilao de seu projeto ser gerado um arquivo com o mesmo nome do projeto com
extenso .hex dentro da pasta do projeto. Esse o seu firmware compilado. Os nossos KITs Didticos
possuem o Bootloader gravado na memria de programa de seus PICs. Isso permite que ele realize uma
Autogravao (ver seo 3.3 desta apostila). A seguir sero mostrados os passos necessrios para se
carregar um firmware na memria de programa de um PIC utilizando nosso KIT Didtico PIC18 e o nosso
DVD Didtico.

Procedimento para gravao de um firmware via bootloader


1) Abra o DVD Didtico e clique no cone Gravar PIC. Conecte o seu KIT Didtico ao seu computador e
coloque-o em modo de gravao conforme mostrado na animao do DVD (segure o boto de BOOT e
d um clique no boto RESET). Observe que os LEDs vermelho e amarelo comearo a piscar. Na
caixa de texto Status ir aparecer a mensagem Kit didtico conectado. Observe tambm que alguns
dos botes sero habilitados aps a conexo (ver Figura 3.38).

www.picminas.com.br Pgina 82
Copyright - Todos os diretos reservados
Figura 3.38 - DVD Didtico cone Gravar PIC.

2) O prximo passo informar o diretrio onde est localizado o firmware que deseja gravar no PIC. Isso
feito atravs do boto de funcionalidade Abrir Arquivo Hex. Usaremos um projeto exemplo do DVD
Didtico. Clique no boto Load HEX File e v ao diretrio E:\DVD Didtico\Arquivos\Projetos\Botao
LED. Selecione o arquivo hexadecimal (.hex) disponvel nessa pasta (neste exemplo o arquivo ser
Boto LED.hex) e, em seguida, clique em Abrir (ver Figura 3.39).

Figura 3.39 - Escolha do arquivo.hex que se deseja gravar no PIC.

www.picminas.com.br Pgina 83
Copyright - Todos os diretos reservados
3) Em seguida clique no boto Gravar / Verificar e aguarde alguns instantes. Observe que aparecero
algumas mensagens na caixa de texto Status (ver Figura 3.40).

Figura 3.40 - Processo de gravao do PIC.

4) A gravao foi concluda com sucesso. Clique no boto Reiniciar do programa ou no boto de reset na
placa para verificar o funcionamento do seu programa no KIT.

3.6 COMO GRAVAR UM FIRMWARE NO PIC UTILIZANDO UMA


GRAVADORA (ICD2 MICROCHIP)

Alm do mtodo de Autogravao, utilizando bootloader (visto na seo anterior), existem ainda
mtodos de gravao que utilizam dispositivos especficos, chamados de GRAVADORAS. Para demonstrar
como feito um processo de gravao utilizando gravadoras, esta seo trs um exemplo de como
BR
carregar um cdigo na memria de programa do PIC utilizando a gravadora MPLAB ICD2 da Microchip
(ver Figura 3.41). Neste mtodo no necessrio que o microcontrolador possua o firmware bootloader
previamente gravado em sua memria de programa, e ainda permite a realizao de depurao de cdigos
via hardware (emulao).

Figura 3.41 - Mdulo de gravao ICD2 da Microchip.

www.picminas.com.br Pgina 84
Copyright - Todos os diretos reservados
Os procedimentos para gravar um firmware utilizando uma gravadora ICD2 so:

Procedimento de Instalao do Driver


1) Abra o MPLAB e conecte a gravadora em seu computador.
2) Aparecer uma janela de instalao do driver da gravadora. O assistente de instalao do driver
pergunte se o Windows pode se conectar ao site do Windows Update para procurar o software,
selecione a opo No, no agora e clique no boto Avanar (Figura 3.42).

Figura 3.42 - Janela de reconhecimento do dispositivo.

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


clique no boto Avanar (Figura 3. 43).

Figura 3. 43 - Janela de instalao do driver.

www.picminas.com.br Pgina 85
Copyright - Todos os diretos reservados
4) Feito isso, espere a instalao do driver e, em seguida, clique em Concluir. (Figura 3.44)

Figura 3.44 - Janela de concluso.

Observao: Caso voc conecte o mdulo de gravao em outra porta de comunicao USB,
dever repetir todo o procedimento de instalao do driver.
Como exemplo de gravao de um firmware no microcontrolador, gravaremos o firmware do
bootloader. Para a gravao deste firmware, siga o procedimento a seguir:

Procedimento de Gravao de um Firmware


1) Aps abrir o MPLAB, v ao DVD Didtico, clique no cone Projetos. No menu Projetos, v em
Projetos Avanados e clique sobre o projeto Bootloader. Em seguida, clique no boto Salvar
Projeto e escolha um diretrio onde ser salvo o projeto e clique Salvar (ver Figura 3. 45). Retorne ao
MPLAB e abra o projeto do bootloader que desejar (por exemplo, o HID Bootloader PIC18 Non J.mcp
para o PIC18F4550) a partir da pasta que voc o salvou.

Figura 3. 45 - DVD Didtico - cone Projetos - Projeto do Bootloader.

www.picminas.com.br Pgina 86
Copyright - Todos os diretos reservados
2) Sem alterar o cdigo, v ao menu Programmer -> Select Programmer -> 2 MPLAB ICD2. (Figura
3.46)

Figura 3.46 - 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, pule para o passo 10.

4) Clique no menu Programmer -> MPLAB ICD2 Setup Wizard. (Figura 3.47)

Figura 3.47 - Seleo da opo Setup Wizard.

5) Na janela de boas vindas (Welcome), clique no boto Avanar. Na janela seguinte, Comunications,
selecione a porta de comunicao USB e clique em Avanar. (Figura 3.48)

www.picminas.com.br Pgina 87
Copyright - Todos os diretos reservados
Figura 3.48 - Seleo da Porta de Comunicao.

6) Em seguida, aparecer a janela Power, onde necessrio escolhe a opo de alimentao do


dispositivo. Selecione a opo Power target form the MPLAB ICD 2. Clique em Avanar. (Figura
3.49)

Figura 3.49 - Seleo da alimentao do dispositivo.

www.picminas.com.br Pgina 88
Copyright - Todos os diretos reservados
7) Na janela seguinte, Connection, marque a opo MPLAB IDE automatically connects to the
MPLAB ICD2, e clique em Avanar (ver Figura 3.50).

Figura 3.50 - Janela de Conexo.

8) No passo seguinte, aparecer a janela Download, marque a opo MPLAB ICD2 automatically
downloads the required operating system e, em seguida, clique em Avanar (ver Figura 3.51).

Figura 3.51 - Janela Download.

www.picminas.com.br Pgina 89
Copyright - Todos os diretos reservados
9) Na janela final clique em Concluir. Repita o passo 2 e verifique se o mdulo de gravao foi
reconhecido, caso contrrio, entre em contato com o fabricante do mdulo.

10) Quando a gravadora estiver corretamente conectada ao MPLAB, ser possvel visualizar uma srie de
cones habilitados na barra de ferramentas. (Figura 3.52)

Figura 3.52 - cones de gravao habilitados.

A Tabela 6 descreva cada um desses cones:

Program target device Read target device Reads device EEPROM

Verify target device Erase target device Verify target device


memory is erased

Release from Reset Hold in Reset Reset and Connect to


ICD
Tabela 6 - Descrio dos cones de gravao.

11) Para gravar o firmware desejado, clique no boto Erase target device e, em seguida, clique em
Program target device. importante apagar o contedo do dispositivo antes de realizar a gravao
do novo firmware.

12) O MPLAB exibir uma mensagem de Programao realizada com sucesso. (ver Figura 3.53)

Figura 3.53 - Mensagem informando que a programao foi realizada com sucesso.

www.picminas.com.br Pgina 90
Copyright - Todos os diretos reservados
3.7 COMO UTILIZAR A FERRAMENTA DE SIMULAO DO MPLAB

1) Voc pode acompanhar a simulao do programa criado e verificar o seu funcionando atravs do
MPLAB SIM. Trata-se de uma ferramenta muito til para a identificao e eliminao de erros (bugs)
em seu cdigo. Para isso clique no menu Debugger e escolha a opo Select Tool. Em seguida,
selecione a opo MPLAB SIM (esse o simulador integrado ao MPLAB). (ver Figura 3.54)

Figura 3.54 - Selecionando o simulador MPLAB.

2) Ao selecionar o simulador ir aparecer uma srie de cones adicionais na barra de ferramentas do


MPLAB (ver Figura 3.55).

Figura 3.55 - Botes do simulador MPLAB.

A Tabela 1 mostra, suscintamente, a funo de cada um dos botes da ferramenta de simulao e


suas respectivas teclas de atalho:

Tabela 7 - Funo de cada boto.

3) Aparecer uma aba MPLAB SIM na janela Output. (ver Figura 3.56)

Figura 3.56 - Aba do MPLAB SIM na janela Output.

www.picminas.com.br Pgina 91
Copyright - Todos os diretos reservados
4) A barra de status indicar que o MPLAB est em modo de Simulao.

Figura 3.57 - Barra de Status indicando MPLAB SIM.

5) Alm de ser possvel acompanhar a execuo de seu cdigo passo-a-passo, atravs do MPLAB SIM,
possvel acompanhar os valores das variveis criadas pelo usurio e tambm dos SFRs (Special
Function Registers Registradores com funes especiais). Clique no menu View e escolha a opo
Watch (ver Figura 3.58). Ser possvel visualizar o contedo das variveis ou dos SFRs. (ver Figura
3.59)

Figura 3.58 - Opo Watch.

Figura 3.59 - Janela Watch.

www.picminas.com.br Pgina 92
Copyright - Todos os diretos reservados
A varivel ser apresentada na base hexadecimal, pois este o formato padro da opo Watch. Para
alterar a base numrica clique com o boto direito sobre a varivel e selecione Properties..., na janela
que ir se abrir selecione no campo Format a opo que desejar (ver Figura 3.60).

Figura 3.60 - Alterando para exibio em decimal.

6) Por ltimo, possvel colocar pontos de parada (Breakpoints) em seu cdigo. Para isso, clique 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.

Neste captulo, falamos sobre:


Ferramentas para desenvolvimento de firmware na linguagem C;
Procedimentos de instalao dos mesmos;
Procedimentos de gravao;
Criao, compilao e simulao de projetos.

www.picminas.com.br Pgina 93
Copyright - Todos os diretos reservados
Captulo 4 Programao de Microcontroladores
Os primeiros dispositivos programveis utilizavam linguagem de mquina, que consiste em dgitos
binrios (zeros e uns) executados pelo dispositivo. Essa programao extremamente complexa e requer
muito tempo para o desenvolvimento da aplicao.
Para facilitar a programao dos sistemas microprocessados foi criada a linguagem Assembly
(baixo nvel). Esta linguagem substituiu as codificaes binrias por comandos pr-definidos de acordo com
o processador utilizado. Isto facilitou a programao destes dispositivos. No entanto, a linguagem de
programao Assembly tambm apresenta algumas limitaes, como por exemplo, possuir baixa
portabilidade, pois existe um tipo de Assembly para cada tipo de microprocessador.
A linguagem C foi criada para aproximar a programao da linguagem humana (linguagem de alto
nvel). Utilizando compiladores adequados, a linguagem C portvel, ou seja, pode ser executada em
mquinas com arquiteturas diferentes.
A alta eficincia de compilao dos programas para a linguagem de mquina a transforma em
uma das linguagens mais utilizadas atualmente para desenvolvimento de firmwares para
microcontroladores. Esta eficincia devido a sua proximidade com a linguagem Assembly, reduzindo o
tamanho dos programas e, consequentemente, seu tempo de processamento.
A escolha da linguagem de programao C natural, pois a maioria dos microcontroladores
disponveis no mercado dispem de compiladores para linguagem C. Assim, com a utilizao de uma
linguagem de alto nvel como C, o programador foca-se em solucionar os problemas da aplicao
abstraindo-se das tarefas de baixo nvel como localizao das variveis, operaes matemticas e lgicas,
verificao de bancos de memria, controle de pilha e alocao de memria, entre outras.
Com o tempo os recursos disponveis nos microcontroladores, como memrias e capacidade de
processamento, permitiram que os mesmos pudessem ser programados em linguagem de alto nvel, como
por exemplo, a linguagem de programao C.

4.1. VANTAGENS E DESVANTAGENS DE SE PROGRAMAR EM


ASSEMBLY E EM C:

Vantagens Desvantagens
Linguagem mais amigvel Pode ocupar um espao de
Rpido desenvolvimento de aplicaes memria desnecessrio,
dependendo da otimizao do
Fcil manuteno do cdigo
compilador
Linguagem C
Fcil acesso aos recursos de Hardware
Uma determinada tarefa pode no
Linguagem bastante difundida
ser realizada da maneira mais
Compiladores atuais tem bom desempenho
eficiente
Vrios Exemplos implementados na Web
Aumenta o tempo de
Possibilidade de otimizao do processamento desenvolvimento de novos
projetos;
Linguagem Dificulta a manuteno de
Controle total do hardware programado
Assembly projetos antigos
Exige projetistas experientes e
Economia de espao e velocidade de memria bem treinados;
Depurao complexa
Tabela 8 - Vantagens e desvantagens entre linguagem Assempbly e C.

www.picminas.com.br Pgina 94
Copyright - Todos os diretos reservados
4.2 PRINCPIOS DE PROGRAMAO

O processo de programao pode ser dividido em duas etapas, na primeira elaboramos um


algoritmo capas de solucionar o problema. Na segunda, implementamos este algoritmo em linguagem de
programao.
Para elaborar um bom algoritmo necessrio conhecer alguns conceitos bsicos de programao,
como linguagem estruturada, fluxogramas, variveis, dados e operadores.
Uma abordagem amplamente utilizada a diviso de um programa em partes menores
(modularizao). Para a codificao de cada parte podemos seguir um conjunto de procedimentos
genricos, listados abaixo:
1) Exposio do problema: descrever detalhadamente o problema a ser resolvido;
2) Analise e esquematizao da soluo: descrio sequencial da soluo que melhor resolve
o problema. (Montagem do algoritmo)
3) Traduo do cdigo: traduo do algoritmo em comandos que sero corretamente
interpretados pela linguagem de programao utilizada.
4) 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 so usados diagramas e
fluxogramas, que permitem uma melhor visualizao do problema.

4.2.1. ALGORITMOS ESTRUTURADOS

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 (reuso);
Facilitar a manuteno e modificao dos programas (manuteno).
A ideia 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. A modularizao tambm permite o reaproveitamento do cdigo (ou soluo)
em outros problemas.
3) Estrutura de Controle: programar cada mdulo com as estruturas bsicas de controle:
sequncia simples, condicional e comando repetitivo, que correspondem sequncia 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

www.picminas.com.br Pgina 95
Copyright - Todos os diretos reservados
A prtica de programar, por mais simples que seja o programa, muito importante, para assim ter
a experincia e aperfeioamento na busca de um programa simples e claro.

4.2.2. FLUXOGRAMAS

Fluxogramas so elementos grficos utilizados para estabelecer a sequncia de operaes


necessrias para o cumprimento de determinada tarefa e consequentemente a resoluo de um problema.
Eles permitem esquematizar e visualizar os sistemas de forma racional, clara e concisa, facilitando seu
entendimento geral por todos os envolvidos.
Alguns elementos bsicos para a construo de um fluxograma esto listados abaixo:
Smbolo Descrio
Incio ou Terminao: este tipo de smbolo utilizado para representar o
incio ou trmino do programa ou algoritmo.

Processamento: este smbolo utilizado para descrever uma determinada


tarefa.

Dados: normalmente este smbolo utilizado para descrever entrada e sada


de dados no sistema.

Tomada de deciso: este smbolo utilizado para representar um ponto de


tomada de deciso, ou teste condicional. A tomada de deciso pode conduzir
sempre a um resultado: verdadeiro ou falso.
Os smbolos utilizados nos fluxogramas tm por objetivo evidenciar origem, processo e destino de
uma informao de um sistema.
Um fluxograma fornece uma compreenso detalhada de um processo e procura apresentar o
processo passo a passo.
O primeiro exemplo mostra um problema simples de somar dois nmeros (A e B) e armazenar o
resultado em C.

Incio

Pega o primeiro
nmero (A)

Pega o segundo
nmero (B)

Soma A + B e
guarda em C

Fim

www.picminas.com.br Pgina 96
Copyright - Todos os diretos reservados
Outro exemplo, um programa para contar de 0 at 10

Incio

Contagem = 0

Soma 1 contagem

Contagem = 10? No

Sim

Fim

4.2.3. VARIVEIS E DADOS

Na programao, uma varivel um objeto (uma posio, frequentemente localizada na memria)


capaz de reter e representar um valor ou expresso. Enquanto as variveis s "existem" em tempo de
execuo, elas so associadas a "nomes", chamados identificadores, durante o tempo de desenvolvimento.
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) ser utilizada uma varivel.
As variveis ficam localizadas em um espao na memria de dados (voltil) do dispositivo.
Durante o processo de execuo de um programa, uma varivel poder assumir diversos valores diferentes,
mas nunca dois ou mais valores ao mesmo tempo. A classificao de uma varivel depende do contedo
que elas armazenam: numricas, ponto flutuante, caractere, alfanumricos e lgicos.
A quantidade de memria utilizada para armazenar uma varivel depende do seu tipo: variveis
inteiras so normalmente encontradas com tamanhos de 16 bits. Uma varivel de 8 bits pode armazenar um
valor inteiro entre 0 e 255, uma varivel de 16 bits pode armazenar um valor inteiro entre 0 e 65535 e uma
varivel de 32 bits pode armazenar um valor inteiro 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.
Variveis do tipo real ou ponto flutuante so normalmente encontradas em tamanho de 32 bits.
importante saber que num sistema de 8 bits, uma varivel de 16 bits vai ocupar duas posies de memria.

www.picminas.com.br Pgina 97
Copyright - Todos os diretos reservados
OPERADORES
Sempre que precisamos relacionar ou modificar um ou mais elementos como variveis ou dados
de um programa, utilizamos operadores. Eles so elementos ou smbolos grficos utilizados ento para
relacionar ou modificar dados ou variveis
So cinco categorias de operadores:
Matemticos: utilizados para efetuar determinada operao matemtica em relao a um ou
mais dados. (Adio, subtrao e outras);
Relacionais: utilizados para relacionar dois elementos ou dados. (Maior, menor, igual);
Lgicos: utilizados para efetuar operaes lgicas booleanas entre dois ou mais elementos
ou dados. Este tipo de operao somente pode chegar a um dos resultados: verdadeiro (1) ou
falso (0), e so frequentemente utilizados na criao de testes condicionais com mltiplas
variveis. (E lgico, OU lgico, NO lgico);
Lgicos bit a bit: utilizados para realizar operaes lgicas bit a bit entre um ou mais
elementos ou dados.
Memria: so operadores utilizados para efetuar operaes em relao memria do
dispositivo. (Atribuio (=), & e *)

4.3 CARACTERSTICAS DO COMPILADOR C18

4.3.1. TIPOS DE DADOS E LIMITES

TIPO INTEIRO

O compilador MPLAB C18 suporta os tipos de dados inteiros definidos pelo padro ANSI. A faixa
dos padres inteiros est documentada na Tabela 9:

Tabela 9 - Tipos de dados inteiros e seus limites.

TIPO PONTO-FLUTUANTE

Os dados com ponto-flutuante de 32 bits tambm so suportado atravs dos tipos float e double.
No caso do compilador MPLAB C18, esses dois tipos possuem a mesma magnitude. A faixa do ponto-
flutuante est mostrada na tabela 6:

www.picminas.com.br Pgina 98
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 apresentados. Atravs
desses modificadores podemos obter outros tipos de dados. Esses modificadores so: signed, unsigned,
short e long.
O modificador signed utilizado para modificar um tipo de dado bsico para que ele possa
representar nmeros com sinais.
O modificador unsigned define um tipo sem sinal permitindo representaes de nmeros de maior
magnitude.
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
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
de dados do PIC.

TIPO DE ARMAZENAMENTO DE DADOS ENDIANNESS

Endianness refere-se ao mtodo utilizado para ordenar os Bytes de uma palavra binria multi-
Bytes. Essa ordenao pode ser no formato Big-endian, onde os Bytes menos significativos so
armazenados nos maiores endereos de memria, ou no formato Little-endian, onde os Bytes menos
significativos so alocados nas menores posies de memria. O MPLAB C18 armazena os dados em
formato Little-endian, conforme mostrado na Figura 4.1.

Figura 4.1 - Ordenao Little-Endian.

www.picminas.com.br Pgina 99
Copyright - Todos os diretos reservados
MODIFICADORES DE ARMAZENAMENTO

Os modificadores de armazenamento so elementos utilizados para controlar a forma como o


compilador ir lidar com o armazenamento da varivel.
MPLAB C18 suporta os modificadores de armazenamento ANSI (auto, extern, register, static e
overlay), alguns deles descritos a seguir:
AUTO
utilizado para definir o mbito ou escopo da varivel local ou funo/classe definida. No
necessrio escrever o modificador, pois ele usado como padro na linguagem C.
EXTERN
utilizado para definir varivel ou funes/classes externas ao programa. Isto muito utilizado na
criao de programas grandes e complexos, utilizando diversos mdulos separados e que so depois
ligados por meio de um programa especial chamado linker.
STATIC
As variveis ou funes/classes declaradas como static funcionam como globais no sentido que
no sero destrudas ao trmino da execuo. Static utilizado quando necessitamos manter uma varivel
ou funo/classe em uma posio permanente na memria. O parmetro static vlido apenas quando o
compilador est operando em modo Non-extended. O padro de classe de uma funo auto. Isso pode
ser modificado explicitamente com a palavra static antes da funo.

4.4. CAMINHO DE PROCURA DE ARQUIVOS

ARQUIVOS DE SISTEMAS HEADER


Arquivos objetos especficos de uma determinada biblioteca so includos automaticamente em
seu cdigo quanto utilizado #include <filename>. Esses arquivos so procurados em 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.5 LINGUAGEM DE PROGRAMAO C

A linguagem C foi criada na dcada de 70 por Dennis Ritchie. O C derivado de outra linguagem,
o B, criado por Ken Thompson. O B, por sua vez, se originou da linguagem BCPL, inventada por Martin
Richards.
A linguagem de programao C utilizada para a criao dos mais variados programas, como por
exemplo, processadores de texto, planilhas eletrnicas, programas de comunicao, sistemas operacionais,
programas para a automao industrial, gerenciadores de bancos de dados, programas de projeto assistido
por computador, programas para a soluo de problemas de Engenharia, Fsica, Qumica, entre outros.
A capacidade de programar transcende o conhecimento de estruturas, funes e recursos de uma
linguagem de programao. necessrio que o programador adquira familiaridade com o compilador,
www.picminas.com.br Pgina 100
Copyright - Todos os diretos reservados
experincia na identificao de "bugs" e desenvolva um bom raciocnio lgico. Portanto, importante que o
leitor escreva seus prprios cdigos (evitando cpias na ntegra de outros programas), compile e execute
todas as prticas apresentadas.

4.5.1 PRIMEIROS PASSOS

Para facilitar o estudo, iniciaremos com uma viso geral sobre cada elemento que compe o
cdigo de um programa C atravs de um exemplo simples.
De acordo com o que foi visto na seco trs, crie um projeto no MPLAB IDE. O arquivo main.c
deve possuir o contedo mostrado na Figura 4 2. Para isso, utilize o modelo do arquivo que esta no DVD do
curso, na aba Projetos, no tpico Arquivos modelos no link PIC18 main e linker.

Figura 4 2 - Contedo do arquivo main.c.

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 .
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 em linguagem binria (linguagem de mquina) e um breve resumo das funcionalidades do
mesmo.
Comentrios podem ser iniciados em qualquer ponto de uma linha e so usados para
descrever o funcionamento ao final de cada cdigo, ou realizar qualquer observao que o

www.picminas.com.br Pgina 101


Copyright - Todos os diretos reservados
programador julgar pertinente. Os comentrios so ignorados pelo compilador, possuindo
apenas a funo de facilitar a compreenso do cdigo de um programa.
Os comentrios podem ser:
Uma linha apenas, quando usamos duas barras //;
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.
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.
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, uma vez definidas, podem ser
executadas a partir de qualquer ponto do programa, quantas vezes forem necessrias.
Repare que antes de qualquer funo declarada existe um cabealho com nome,
entrada, sada e descrio da funo.

Caso no haja nenhum erro no cdigo a janela de Output aparecer a mensagem BUILD SUCCEEDED
(ver Figura 4.3). Caso contrrio, verifique o erro e corrigia-o. Um programador no apenas deve saber
como programar, mas tambm identificar e corrigir os erros de um cdigo.

Figura 4.3 - Mensagem de compilao bem sucedida.

. A funo main ( ) tem um significado especial nos programas em C, pois a funo que inicialmente
executada (em ingls entry point) e utilizada para definir a funo principal, ou o corpo principal do
programa (ver Figura 4.4).

Figura 4.4 - Detalhamento da funo main ( ).

www.picminas.com.br Pgina 102


Copyright - Todos os diretos reservados
4.5.2 VISO GERAL DE UM PROGRAMA

Figura 4.5 - Exemplo de um programa C.

a. Na linha void main(void) a declarao main ( ) especifica a funo principal do programa.


b. O caractere abertura de chave { utilizado para delimitar o incio de uma funo, e o caractere
de fechamento de chave } indica o final da funo. As chaves delimitam o que chamamos de
bloco de programa, ou bloco de cdigo.
c. A primeira linha dentro do bloco de comandos uma declarao de duas variveis do tipo
inteiro.
d. As duas linhas seguintes so atribuies de valores as essas duas variveis criadas.
e. 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.
f. Na linha seguinte, encontramos um while (maior < menor). Esse um comando de controle,
utilizado para repetio de um determinado bloco de instrues. Um while fica em loop
enquanto a condio for satisfeita (no exemplo enquanto a varivel maior tiver um valor menor
que a varivel menor).
g. Em seguinte, tm-se dois comandos: o primeiro para somar uma unidade varivel maior e o
outro para diminuir uma unidade a varivel menor.

7) Voc pode simular o funcionamento do programa como foi visto na seco trs, e verificar se est
funcionando corretamente.

8) Alm de observar a simulao passo-a-passo, atravs do MPLA SIM, possvel acompanhar os valores
das variveis

4.5.3 PALAVRAS RESERVADAS

Toda linguagem de programao possui um conjunto de palavras que no podem ser usadas para
declarar funes ou variveis. So chamadas de palavras reservadas e s podem ser usadas em seus
propsitos originais.

Apresentamos a seguir, na Tabela 10, as palavras reservadas do ANSI C:

www.picminas.com.br Pgina 103


Copyright - Todos os diretos reservados
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
Tabela 10 - Palavras reservadas em C.

4.5.4 IDENTIFICADORES

O C Case Sensitive, isto , diferencia letras maisculas e minsculas. Por exemplo: uma
varivel com nome soma diferente de uma varivel com nome Soma, ou sOma. O mesmo ocorre
com os comandos em C, o comando if, por exemplo, deve ser escrito com letras minsculas, caso seja
escrito com letras maisculas o compilador poder interpret-lo como varivel.
Identificadores so utilizados pelos programadores para nomear variveis funes e outros
elementos da linguagem C. Identificadores podem conter letras, nmeros e o caractere sublinhado _,
nenhum outro caractere ou acento so permitidos. Alm disso, um identificador deve ser iniciado por letras
ou sublinhado. Identificadores de at 32 caracteres so permitidos.
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, evitam-se possveis
conflitos com nomes de rotinas encontrados nas diversas bibliotecas, que so em sua maioria
absoluta, palavras em ingls.
A Tabela 11 mostra alguns exemplos de identificadores vlidos e invlidos:
Vlido Variavel variavel1 _teste_2
Invlido Varivel 1abc Return
Tabela 11 - Exemplos de variveis vlidas e invlidas.

4.5.5 VARIVEIS E TIPOS DE DADOS

A linguagem C disponibiliza ao programador diversos tipos de dados. Os tipos de dados so


identificados pelas palavras reservadas da linguagem: char, int, double, float e void (ver seo 4.3.1).
Antes de usar uma varivel necessrio declar-la. Ou seja, informar ao compilador o nome e o
tipo de dado que ela armazenar na memria de dados. Como boa prtica de programao,
recomendvel utilizar nomes que faam referncia ao contedo ou funo da varivel. Por exemplo, utilizar
o nome temperatura ou tempo para uma varivel que armazena um nmero.
A sintaxe para declarar uma varivel :
Tipo da varivel lista_de_variveis;
Por exemplo:
Int temperatura; // declara uma varivel (temperatura) do tipo inteiro
char senha1, senha2; // declara duas variveis (senha1, senha2) do tipo caractere
float tensao; // declara uma varivel (tensao) do tipo float
Podemos tambm declarar e inicializ-la com um contedo, por exemplo:
int temperatura=25; // declara uma varivel (temperatura) do tipo inteiro com o valor 25

www.picminas.com.br Pgina 104


Copyright - Todos os diretos reservados
char senha1= 'b', senha2 = 0x1F; // declara duas variveis (senha1, senha2) do tipo caractere
Outro aspecto importante local de declarao de uma varivel, pois determina a acessibilidade
dessa varivel s diversas partes de um programa.
Quanto acessibilidade, existem trs tipos bsicos de variveis:
Variveis Locais: so aquelas declaradas em um bloco (delimitado por {}), por exemplo: em
uma funo. So visveis e acessadas apenas no bloco em que esto declaradas;
Variveis Globais: so aquelas declaradas no incio do cdigo. Podem ser visualizadas e
acessadas em qualquer parte do programa.
Variveis Parmetro Formal: so aquelas passadas como parmetros de funes.

4.5.6 CONSTANTES

Constantes so valores, numricos ou no, que no podem ser alterados pelo programa durante
sua execuo.
A sintaxe para declarar uma constante :
const nome_da_constante = valor;
Por exemplo:
const COTADOR = 10 // declara uma constante CONTADOR com valor 10
const PI = 3.1415 // declara uma constante PI com valor 3.1415
const LCD_LINHA1 = "PIC Minas" // declara uma constante LCD_LINHA1 com valor PIC Minas
De maneira geral, qualquer tipo de dado pode ser utilizado para definir uma constante.

CDIGOS DE BARRA INVERTIDA

A linguagem C utiliza vrios cdigos chamados de cdigos de barra invertida. Esses cdigos
permitem ao programador inserir alguns caracteres do ASCII que no podem ser inseridos diretamente em
uma constante string.
So diversos os motivos que impedem a insero de determinados caracteres, mas, como
exemplo, podemos citar o retorno de carro (que aquele inserido pela tecla ENTER) e o caractere de aspas
: O primeiro no pode ser inserido diretamente pelo teclado, pois o retorno de carro inserido no 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.
Na Tabela 12 encontram-se os cdigos mais comumente usados:

Cdigo Significado
\b Retrocesso ("back")
\f Avano de formulrio ("form feed")
\n Nova linha ("new line")
\t Tabulao horizontal ("tab")
\" Aspas
\' Apstrofo
\0 Nulo (0 em decimal)
\\ Barra invertida \
\v Tabulao vertical
\r Retorno de carro (Enter)

www.picminas.com.br Pgina 105


Copyright - Todos os diretos reservados
Tabela 12 - Cdigo de barra invertida.

CONSTANTES BINRIAS, HEXADECIMAIS E OCTAIS

importante o conhecimento de bases numricas diferentes da decimal para a programao de


microcontroladores. A linguagem C possui a capacidade de operar com dados numricos nas bases binria,
octal, decimal e hexadecimal. Para utilizar valores com bases numricas diferentes da decimal, utilizamos
os cdigos na Tabela 13

Valor Base numrica


27 Decimal
011 Octal
0xA9 Hexadecimal
0b10001001 Binrio
Tabela 13 - Bases numricas.
Exemplos:
int valor1;
valor1 = 50; // decimal
valor1 = 0x32; // hexadecimal
valor1 = 062; // octal
valor1 = 0b110010; // binrio

4.5.7 OPERADORES

A linguagem C possui uma srie de operadores, que podem ser classificados em: atribuio,
aritmticos, relacionais, lgicos, lgicos bit a bit, de memria e outros.

ATRIBUIO

Em C o operador de atribuio o =, usado para atribuir um determinado valor a uma varivel.


Por exemplo:
x = 10; // a varivel x recebe o valor 10
y = x; // a varivel y recebe o valor da varivel x
Observe que a varivel que receber o valor se posiciona a esquerda do sinal de atribuio,
enquanto o valor, ou a varivel que contm o valor, se posiciona direita do sinal de atribuio.

ARITMTICOS

So utilizados para indicar ao compilador a operao matemtica que dever ser efetuada entre
um ou mais dados. So eles (Tabela 14):

Operador Ao
+ Adio
- Subtrao ou menos unrio
* Multiplicao
/ Diviso
% Resto da diviso inteira
++ Incremento
-- Decremento

www.picminas.com.br Pgina 106


Copyright - Todos os diretos reservados
Tabela 14 - Operadores aritmticos.
Os operadores aritmticos incremento e decremento servem para somar 1 e subtrair 1 de uma
varivel, respectivamente.
A forma geral para utilizao destes dois operadores :
varivel ++; ou varivel --;

RELACIONAIS

So utilizados em testes condicionais para determinar a relao existente entre variveis. Esses
operadores servem para construir expresses condicionais. So eles (Tabela 15):

Operador Ao
> Maior que
>= Maior ou igual a
< Menor que
<= Menor ou igual a
== Igual a
!= Diferente

Tabela 15 - Operadores relacionais.

LGICOS BOOLEANOS

So utilizados para realizar associaes lgicas entre elementos e podem somente resultar em um
dos valores: verdadeiro ou falso. Eles so de suma importncia na construo de testes condicionais. So
eles (Tabela 16):
Operador Ao
&& AND (E)
|| OR (OU)
! NOT (NO)

Tabela 16 - Operadores lgicos booleanos.

LGICOS BIT A BIT

So utilizados para realizar operaes lgicas entre elementos ou variveis. No entanto, ao


contrrio dos operadores lgicos booleanos, os operadores lgicos bit a bit podem resultar em um valor com
uma mesma quantidade de bits dos elementos operados. So eles (Tabela 17):
Operador Ao
& AND (E)
| OR (OU)
^ XOR (OU exclusivo)
~ NOT (complemento de um)
>> Deslocamento direita
<< Deslocamento esquerda

Tabela 17 - Operadores lgicos bit a bit.

www.picminas.com.br Pgina 107


Copyright - Todos os diretos reservados
Vale pena destacar os 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 operadores de deslocamento:
unsigned char c;
c = 7; /* cdigo binrio 0000 0111 */
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 */

PONTEIROS

Ponteiros permitem ao programador acessar diretamente a memria do sistema. Por isso, so


considerados elementos de grande importncia na linguagem C.
Os operadores de ponteiros esto na Tabela 18:

Operador Ao
& Endereo do operando
* Contedo do endereo apontado pelo operando
Tabela 18 - Operadores de memria.

O operador unrio & utilizado para retornar o endereo de memria de uma varivel. Ou seja, se
escrevermos:
endereco_a = &a;

Teremos que a varivel endereco_a conter o endereo em que est armazenada a varivel
a.
O operador unrio * utilizado para retornar o contedo da posio de memria endereada pelo
operando que o segue. Vejamos o exemplo:
a = *endereco_a;

Este exemplo far com que o valor armazenado no local apontado pela varivel endereco_a
seja atribudo varivel a.

OUTROS OPERADORES

Alm de todos esses operadores citados anteriormente, existem outros no to conhecidos em C.


So eles (Tabela 19):

Operador Ao
? Operador ternrio condicional
, Separador de expresses
. Separador de estruturas
-> Ponteiro de elemento de estrutura
(tipo) Operador de modelagem de dado

Tabela 19 - Outros operadores.

www.picminas.com.br Pgina 108


Copyright - Todos os diretos reservados
O operador ternrio ? utilizado para substituir uma expresso condicional baseada no comando
IF.
Sua sintaxe :
Varivel = Expresso1? Expresso2; Expresso3;
O que significa: avalie a expresso 1 se ela for verdadeira atribua varivel a expresso 2; caso
contrrio, atribua a expresso 3. Por exemplo:
int x, y; // 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

ASSOCIAO DE OPERADORES

linguagem C admite associar operadores e montar expresses abreviadas equivalentes a


expresso original. Na Tabela 20, podemos encontrar os tipos de abreviaes admitidas em C.

Expresso Original Expresso Equivalente


x=x+k; x+=k;
x=x-k; x-=k;
x=x*k; x*=k;
x=x/k; x/=k;
x=x&k; x&=k;
x=x|k; x|=k;
x=x^k; x^=k;
x=x>>k; x>>=k;
x=x<<k; x<<=k;
x=x&k; x&=k;
Tabela 20 - Associao de operadores.

PRECEDNCIA DOS OPERADORES

A Tabela 21mostra a precedncia dos operadores:


Operador Associatividade
( ) [ ] -> . esq-dir
! ~ ++ -- - (type) * & sizeof dir-esq
* / % esq-dir
+ - esq-dir
<< >> esq-dir
< <= > >= esq-dir
== != esq-dir
& esq-dir
^ esq-dir
| esq-dir
&& esq-dir
|| esq-dir
?: dir-esq
= += -= etc. dir-esq
, esq-dir
Tabela 21 - Precedncia de operadores.

www.picminas.com.br Pgina 109


Copyright - Todos os diretos reservados
4.5.8 COMANDOS E FUNES IMPORTANTES

COMANDO IF

O comando if (em portugus se) utilizado em teste condicionais, sua sintaxe :


if (condies)
{
comandos;
}
As condies, sero avaliadas, se forem verdadeiras os comandos especificados sero
executados. Caso contrrio no executar os comandos. Estas condies podem ser quaisquer expresses
que possam ser avaliadas como verdadeiro ou falso.
O if pode ser complementado com comando else e sua sintaxe fica:
if(condies)
{
comandos_1;
}
else
{
comandos_2;
}

Caso as condies sejam verdadeiras, executaro os comandos_1, caso contrrio executaro os


comandos_2.

EXEMPLO 01

Figura 4.6 - Uso das estruturas if else.

www.picminas.com.br Pgina 110


Copyright - Todos os diretos reservados
COMANDO SWITCH

O comando switch usado para tomada de deciso atravs de comparao de uma varivel com
diversos valores.
Sintaxe do switch:
switch (varivel)
{
case constante_1:
comando_1;
break;
case constante_2:
comando_2;
break;
.
.
.
case constante_n:
comando_n;
break;
default
comando_default;
}

O comando switch aceita apenas valores constantes na condio case. Se a varivel e a constante
possuem o mesmo valor, ento os comandos dessa condio sero executados. Sempre aps a sequncia
de comandos da condio case necessrio usar o comando break. Se no for utilizado, todos os
comandos seguintes ao case especificado sero executados at que encontre uma clusula break ou o
final do bloco switch.

EXEMPLO 02

Figura 4.7 - Uso da estrutura switch.

www.picminas.com.br Pgina 111


Copyright - Todos os diretos reservados
COMANDO WHILE

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. Sua sintaxe :
while(condio)
{
comando;
}
Aps a execuo dos comandos dentro do while a condio testada novamente. O loop
executado at o momento em que a condio se torna falsa. Esta 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.

EXEMPLO 03

Figura 4.8 - Uso da estrutura while.

COMANDO FOR

O lao for utilizado para repetir um comando ou um bloco de comandos por diversas vezes. A
sintaxe do for :
for (inicializao ; condio ; incremento)
{
comando1;
comando2;
...
}

Podemos ver, que o for executa a inicializao e testa a condio. Se a condio for falsa o
programa desvia para o fim do comando for. Se a condio for verdadeira ele executa o comando ou o
bloco de comandos dentro dele, faz o incremento e, novamente, testa a condio. Ou seja, o comando for
repete seus comandos at que a condio se torne falsa.

www.picminas.com.br Pgina 112


Copyright - Todos os diretos reservados
Cada um dos trs elementos do comando for possui uma funo distinta conforme descrita
abaixo:
Inicializao: Esta seo conter uma expresso para inicializao da varivel de controle do
lao for.
Condio: Esta seo pode conter a condio a ser avaliada para decidir pela continuidade
ou no do lao de repetio. Enquanto a condio for avaliada como verdadeira, o lao for
permanecer em execuo.
Incremento: Esta seo pode conter uma ou mais declaraes para incremento da varivel
de controle do lao. importante comentar que a varivel de controle do comando for pode
ser incrementada de qualquer valor, podendo, inclusive, ser decrementada.

EXEMPLO 05

Figura 4.9 - Uso da estrutura for.

EXEMPLO 06

Figura 4.10 - Uso da estrutra for com decremento de ndice.

COMANDO DO-WHILE

. O comando do while (em portugus faa enquanto) usado para criar uma estrutura de
repetio com funcionamento um pouco diferente do comando while.
O do-while, avalia a condio de teste ao final de cada ciclo, garantindo que o bloco de comandos
ser executado pelo menos uma vez.
. Sua sintaxe :
do
{
comandos;
} while (condio);

www.picminas.com.br Pgina 113


Copyright - Todos os diretos reservados
EXEMPLO 08

Figura 4.11 - Uso da estrutura do-while.

www.picminas.com.br Pgina 114


Copyright - Todos os diretos reservados
4.6 BOAS PRTICAS DE PROGRAMAO

Esta seo contem um apanhado de preceitos, no obrigatrias, que entraram em consenso ao


longo do tempo entre programadores mais experientes. Tem como objetivo tornar os cdigos mais claros,
reduzindo os riscos de bugs (erros).
importante adotar um padro e sempre segui-lo em seus projetos. Apesar de a maior parte
dessas dicas serem aplicveis para a maioria das linguagens de programao, esta seo faz uso
exemplos apenas em linguagem C.

Preceitos:
1- Espaos em branco:
O compilador ignora espaos em branco no seu cdigo, por isto voc pode us-los com
generosidade. Utilize o recuo para refletir a estrutura de blocos do programa e separe com quebra de linhas
partes diferentes do seu cdigo. Caso uma linha de cdigo seja muito grande quebre-a em duas ou mais
linhas. Se estiver chamando uma funo que recebe muitos parmetros ou que os parmetros so
mscaras de bits, definidos anteriormente, quebre-os em linhas e comente seu cdigo. A Figura 4.12 trs
um exemplo que faz uso das dicas mencionadas anteriormente.

Figura 4.12 - Exemplo do uso de espaos e comentrios.

2- Comentrios:
Assim como os espaos em branco, comentrios tambm so ignorados pelo compilador. Use
comentrios de bloco, */ .......... /*, para criar cabealhos de arquivos (ver Figura 4.13), cabealhos de
funes, explicar o funcionamento de um trecho de cdigo muito complicado, entre outros (ver Figura 4.12).
Utilize comentrios de linha // para descrever algum funcionamento especfico. Cuidado: evite
comentrios desnecessrios como explicar o que faz um comando de C, afinal comentar de mais complica o
cdigo. Lembre-se de atualizar sempre os comentrios quando o cdigo sofrer atualizaes, comentrios
que contradizem o cdigo so destrutivos.

www.picminas.com.br Pgina 115


Copyright - Todos os diretos reservados
Figura 4.13 - Cabealho de arquivo.

3- Nomes:
Use nomes significativos para funes, variveis, defines, constantes, etc., que reflitam a sua
funo. Exceo a regra: cont ou i, j, k para contadores.
Muitos programadores utilizam nomes em ingls para internacionalizar seus cdigos.
Independente da lngua utilizada existem dicas de como devem ser criados os nomes das variveis,
constantes, funes, etc., de modo a possibilitar a distino entre elas. A seguir so apresentadas algumas
dessas dicas para cada um desses tipos:

A- Constantes e #defines devem ser escritas usando caixa alta (letras maisculas). Caso a palavra seja
composta separe-as com _
Exemplo: #define LED_VERDE PORTCbits.RC2
const float PII = 3,1415;
Contra-exemplo: #define pino17 PORTCbits.RC2

B- Variveis: devem ser escritas usando caixa baixa (letras minsculas). Caso a palavra seja composta, inicie
a segunda palavra com a letra maiscula.
Exemplo: int numeroVoltas;
C- Funes: Funes devem comear com letra maiscula e as demais devem ser minsculas. Caso o nome
seja composto, inicie a segunda palavra com letra maiscula;
Exemplo: void ScreenWrite(char *string)
Em alguns casos interessante o uso de prefixos e sufixos nos nomes das funes. Estes
sugerem o comportamento de entrada ou sada da funo.

www.picminas.com.br Pgina 116


Copyright - Todos os diretos reservados
Exemplo1: funo retorna 0 caso o display esteja apagado e 1 se aceso. Na funo abaixo
utilizado o prefixo is.
isDisplayOn() ;
Exemplo2: funo faz delays (atrasos) de mltiplos (x) de 100TCY. Na funo abaixo utilizado o
sufixo x para denotar a multiplicao.
Delay100TCYx(10);

4- Uso de #define.
Use #define em elementos que podero ser modificados posteriormente em seu programa, como,
por exemplo, valores de constantes e portas de entrada e sada (Ver Figura 4.14).

Figura 4.14 - Uso de Defines.

Funes simples, escritas em uma nica linha (inline), podem ser substitudas por defines. Neste
caso, o nome atribudo ao trecho de cdigo, por meio do define, pode ser escrito de forma a se parecer com
uma funo. Por exemplo:

#define Delay1TCY() Nop()

5- Funes:
Sempre que um trecho de cdigo possuir uma funcionalidade especifica, que possa ser
aproveitada em outras partes do seu programa, esse trecho deve ser encapsulado em uma funo. Caso
voc tenha um conjunto de funes correlacionadas, crie uma biblioteca para agrup-las. Por exemplo, as
funes seno, cosseno, tangente, exponencial, logaritmo, esto todas agrupadas em uma biblioteca
chamada math. Deixe sempre seu cdigo organizado utilizando prottipos de funes.

6- Reinveno da Roda:
No reinvente a roda. Antes de comear a escrever uma soluo procure por ela na internet, em
bibliotecas do compilador, em outros projetos de sua empresa ou laboratrio. Gaste seu tempo
desenvolvendo solues novas que ainda no foram feitas.

www.picminas.com.br Pgina 117


Copyright - Todos os diretos reservados
7- Ponteiros:
Ponteiros so ferramentas muito poderosas e por isto devem ser utilizados com muita ateno.
Para evitar acessos indesejados a memria de dados do programa, sempre que declarar um ponteiro
inicialize-o com zero.

Exemplo: int *vectPoint = 0;

8- goto e break:
Apesar de existirem em linguagem C, o uso de goto e breaks deve ser evitado ao mximo em seu
programa.

9- calloc() / malloc()
Sempre verifique se o ponteiro retornado por estas funes diferente de zero. Se o ponteiro for
igual a zero, houve uma falha na alocao da memria e nenhuma operao deve ser feita com o uso deste
ponteiro.

Referncias:
4- Prticas e layouts PICMinas.
5- IBM - http://www.ibm.com/developerworks/aix/library/au-hook_duttaC.html

Neste captulo, falamos sobre:


A linguagem de programao C;
Tipos de dados, comandos bsicos;
Exemplos de cdigos.
Boas prticas de programao.

www.picminas.com.br Pgina 118


Copyright - Todos os diretos reservados

Você também pode gostar