Beruflich Dokumente
Kultur Dokumente
www.picminas.com.br
Copyright
Sumrio
Captulo 1 Introduo .................................................................................................................................................................. 4
1.1
1.2
1.3
SISTEMAS MICROPROCESSADOS................................................................................................................................... 9
1.3.1
1.3.2
MEMRIAS ........................................................................................................................................................... 11
1.3.3
REGISTRADORES.................................................................................................................................................... 13
1.3.4
1.3.5
1.3.6
BARRAMENTOS ..................................................................................................................................................... 15
1.3.7
INTERRUPES...................................................................................................................................................... 16
1.4
MICROCONTROLADORES............................................................................................................................................ 17
1.5
LINGUAGEM DE MQUINA......................................................................................................................................... 19
1.6
1.7
1.7.1
1.7.2
1.7.3
1.8
O BIT.......................................................................................................................................................................... 23
1.9
O BYTE ....................................................................................................................................................................... 24
1.10
1.10.1
1.10.2
PORTA OR......................................................................................................................................................... 25
1.10.3
1.10.4
PIC18F4550................................................................................................................................................................ 30
2.1.1
2.1.2
2.1.3
2.1.4
2.1.5
2.1.6
2.1.7
2.2
2.2.1.
2.2.2.
CHAVES/TECLAS................................................................................................................................................ 46
2.2.3.
Pgina 2
www.picminas.com.br
Copyright
2.2.4.
DISPLAYS .......................................................................................................................................................... 48
2.2.5.
2.3
3.2
3.2.1.
3.3
3.4
GRAVAO DE UM FIRMWARE NO PIC UTILIZANDO UM MODULO DE GRAVAO EXTERNO (ICD2 MICROCHIP) .......... 65
3.5
3.6
3.7
4.1.1
ALGORITMOS ESTRUTURADOS............................................................................................................................... 80
4.1.2
FLUXOGRAMAS ..................................................................................................................................................... 81
4.1.3
4.1.4
OPERADORES ........................................................................................................................................................ 83
4.2
4.2.1
4.2.2
4.2.3
PRAGMAS ............................................................................................................................................................. 86
4.2.4
4.2.5
4.2.6
4.3
4.4
4.4.1
4.4.2
4.4.3
IDENTIFICADORES................................................................................................................................................ 105
4.4.4
4.4.5
4.4.6
CONSTANTES....................................................................................................................................................... 114
4.4.7
4.4.8
Pgina 3
www.picminas.com.br
Copyright
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.
Pgina 4
www.picminas.com.br
Copyright
Outro marco no desenvolvimento deste tipo de mquinas deu-se quando o homem passou a
manipular a tenso e a corrente eltrica. Neste momento, os dispositivos que antes eram mecnicos
passaram a ser eltricos, o que reduzia muito o seu tamanho, facilitando sua construo e seu
aperfeioamento. Esta evoluo tornou possvel o surgimento dos primeiros computadores, sistemas esses
inconcebveis com dispositivos mecnicos. Mesmo assim o tamanho destes computadores eram
gigantescos devido ao acmulo de atividades e tarefas que eles possuam se comparados aos dispositivos
mecnicos. O ENIAC foi o primeiro computador digital eletrnico valvulado. Foi criado em 1946, e tinha as
seguintes caractersticas: pesava 30 toneladas, media 5,5m de altura, 25m de comprimento e ocupava uma
rea de 180m2 de rea. Foi construdo sobre estruturas metlicas e contava com 70 mil resistores e
aproximadamente 18.000 vlvulas a vcuo ocupando a rea de um ginsio desportivo. Essa mquina no
tinha sistema operacional e o funcionamento era parecido com uma calculadora simples de hoje. Era
operado manualmente e efetuava os clculos a partir de teclas que faziam interao direta com o Hardware.
A Figura 1.3 trs um desenho do ENIAC sendo operado.
www.picminas.com.br
Copyright
Conversor A/D Circuito Eletrnico utilizado para converter sinais de tenso ou de corrente eltrica
(sinais analgicos) em nmeros binrios (sinais digitais). Conversor D/A Converte nmeros binrios em
sinais de tenso ou corrente eltrica.
Pgina 6
www.picminas.com.br
Copyright
Algum tempo depois, uma empresa chamada CTC solicitou Intel e Texas Instruments que
fabricassem um microprocessador de 8-bits para ser utilizado em seus terminais de computador. Devido aos
altos custos e sem saber o valor do que estava desenvolvendo, a CTC desistiu do projeto. No entanto, a
Intel e a Texas resolveram continuar custeando o projeto e, em abril de 1972, o primeiro processador de 8bits, chamado de 8008, surgiu no mercado. Ele possua uma memria de incrveis 16k-bits (que para poca
era algo inovador), um conjunto de 45 instrues diferentes para sua programao (eram operaes lgicas
como AND, OR e NOT, e aritmticas como ADD e SUB) e uma velocidade de at 300.000 instrues por
segundo (300 kHz). Este processador foi a base de todos os microprocessadores modernos de hoje e deu
origem, em abril de 1974, ao microprocessador 8080 que tambm era de 8-bits, mas possua 64kb de
memria, 75 instrues para programao e um preo inicial de US$ 360,00 o que possibilitou o surgimento
de computadores pessoais com valores acessveis. A conseqncia disso foi a inesperada popularizao da
idia e crescimento exponencial das vendas. Para se ter idia a prospeco mais otimista da Intel era da
venda de 3.000 microprocessadores no primeiro ano de lanamento, mas as vendas superaram as dezenas
de milhares, baixando ainda mais o valor desses processadores e, consequentemente, dos computadores.
Outra empresa americana, a Motorola, notou rapidamente o que estava acontecendo e lanou no
mercado um novo microprocessador de 8-bits, o 6800. O construtor chefe foi Chuck Peddle e alm do
microprocessador propriamente dito, a Motorola foi a primeira companhia a fabricar outros perifricos como
os 6820 e 6850, com outras funcionalidades que os microprocessadores no realizavam. Muitas outras
companhias perceberam a grande importncia dos microprocessadores e comearam a produzir seus
prprios projetos. Chuck Peddle deixou a Motorola para entrar para a MOS Technology e continuar
trabalhando intensivamente no desenvolvimento dos microprocessadores.
Pgina 7
www.picminas.com.br
Copyright
Em 1975, na exposio WESCON nos Estados Unidos, aconteceu um episdio na histria dos
microprocessadores. A MOS Technology anunciou que iria lanar no mercado os microprocessadores 6501
e 6502 ao preo de US$ 25 cada e que poderia atender de imediato todas as encomendas. Isto pareceu to
sensacional que muitos pensaram tratar-se de uma espcie de fraude, considerando que os competidores
vendiam o 8080 e o 6800 a US$ 179 cada. Para responder a este competidor, tanto a Intel como a Motorola
baixaram seus preos para US$ 69,95 logo no primeiro dia da exposio. Rapidamente a Motorola, antiga
empresa onde Peddle trabalhava, colocou uma ao em tribunal contra a MOS Technology e contra o
prprio Chuck Peddle por violao dos direitos autorais por copiarem o processador 6800. Com isso, a MOS
Technology deixou de fabricar o 6501, mas continuou com o 6502. O 6502 era um microprocessador de 8bits com 56 instrues e uma capacidade de endereamento de 64kbytes de memria. Devido ao seu baixo
custo, o 6502 tornou-se muito popular, sendo utilizado em computadores como o KIM-1, Apple I, Apple II,
Atari, Comodore, Acorn, Oric, Galeb, Orao, Ultra e muitos outros. Logo apareceram vrias outras empresas
interessadas em fabricar o 6502 (Rockwell, Sznertek, GTE, NCR, Ricoh e Comodore) que, no auge da sua
prosperidade, chegou a vender microprocessadores razo de 15 milhes de processadores por ano.
Contudo, os outros no baixaram os braos. Frederico Faggin deixou a Intel e fundou a Zilog Inc.
Em 1976, a Zilog anunciou o Z80. Durante a concepo deste microprocessador, Faggin tomou uma
deciso crtica. Sabendo que existia uma enorme quantidade de programas j desenvolvidos para o
microprocessador 8080, Faggin concluiu que muitos permaneceriam fiis a este microprocessador devido
s grandes despesas que representaria a troca do processador. Assim, ele decidiu que o novo
microprocessador deveria ser COMPATVEL (nasceu a idia de compatibilidade) com o 8080, ou seja,
deveria ser capaz de executar todos os programas j escritos para o 8080. Alm disto, outras
caractersticas adicionais foram incorporadas ao CHIP, de tal modo que o Z80 se tornou um
microprocessador muito potente em seu tempo. Ele podia enderear diretamente 64kbytes de memria,
tinha 176 instrues para programao, um grande nmero de registros, uma opo para refreshing de
memria RAM dinmica, maior velocidade de funcionamento, etc. O Z80 tornou-se um grande sucesso e
todos que utilizavam o processador 8080 migraram para o Z80. Pode-se dizer que o Z80 se constituiu como
o microprocessador de 8-bits de maior sucesso em seu tempo. Alm da Zilog surgiram outros novos
fabricantes como, por exemplo, Mostek, NEC, SHARP e SGS. O Z80 foi o corao de muitos computadores
como o Spectrum, Partner, TRS703, Z-3 e Galaxy, que fizeram muito sucesso devido sua grande utilizao.
Em 1976, a Intel lanou uma verso melhorada do microprocessador de 8-bits, chamado de 8085.
Contudo, a superioridade do Z80 fez com que a Intel desistisse do projeto. Apesar do surgimento, na poca,
de outros microprocessadores no mercado (6809, 2650, SC/MP etc.), o cenrio da poca estava bem
definido. J no havia mais grandes melhorias a introduzir pelos fabricantes que justificassem o lanamento
de um novo microprocessador. Desta forma, o 6502 e o Z80, acompanhados pelo 6800, mantiveram-se
como os mais representativos microprocessadores de 8-bits do perodo. Restou Intel trabalhar no
lanamento do primeiro microprocessador de 16-bits o 8088 que fez muito sucesso e deu origem a
todos os processadores atuais. Ele foi seguido pelo 80186, depois pelo 80286, que evoluiu para o 80386
(popularmente conhecido como 386), chegando ao 80486 (popularmente conhecido como 486). Depois
surgiu o Pentium que evoluiu at o Pentium 4. Nesse momento, a tecnologia se deparou com uma barreira
na evoluo dos microprocessadores que at ento era baseada, quase que exclusivamente, no aumento
da velocidade de processamento. Em seguida, a evoluo dos processadores atrelou-se evoluo da sua
arquitetura interna (forma como se estruturam e interagem os componentes bsicos utilizados em sua
construo). Atualmente, os processadores que encontramos no mercado so processados Dual Core,
Core 2 Duo, Quad Core, Xeon, Turion etc., que diferem entre si pelo nmero e tipo de Ncleos de
Processamento (Core) existentes em sua arquitetura interna.
A Figura 1.8 mostra a evoluo histrica dos processadores, evidenciando alguns dos principais
sistemas desenvolvidos at os dias atuais.
Pgina 8
www.picminas.com.br
Copyright
Pgina 9
www.picminas.com.br
Copyright
Pgina 10
www.picminas.com.br
Copyright
1.3.2 MEMRIAS
Em sistemas microprocessados, memria so todos os dispositivos que permitem que os dados
sejam guardados, temporariamente ou permanentemente. As memrias podem ser classificadas
basicamente de duas maneiras. A primeira classificao est associada a forma como os dados so
armazenados, neste caso temos dois tipos de memria, as Volteis e as No-Volteis.
Memrias Volteis: so as que requerem energia para manter a informao armazenada. So
fabricadas com base em duas tecnologias: dinmica e esttica. A dinmica a mais de menor custo
entre a esse tipo de memria. So popularmente conhecidas como Memria RAM (do ingls
Randomic Acess Memory - Memria de Acesso Aleatrio), que significa que os dados, nela
armazenados, podem ser acessados a partir de qualquer endereo. As memrias RAM se
contrapem com as de acesso sequencial, que exigem que qualquer leitura/escrita seja feita a partir
do primeiro endereo e, sequencialmente, vai pulando de um em um at atingir o endereo
desejado. Na realidade, existem outras memrias de acesso aleatrio nos computadores, inclusive
no-volteis, portanto, importante ter o conhecimento de que o nome RAM apenas uma
popularizao do nome da memria principal dos computadores, utilizada para armazenar os
programas e dados no momento da execuo. (Figura 1.11)
Pgina 11
www.picminas.com.br
Copyright
NOME
TECNOLOGIA
EPROM
EEPROM
O tipo de memria conhecido como FLASH o tipo mais moderno dentre os apresentados aqui,
mas uma variao do tipo EEPROM. Tornaram-se muito populares por dois motivos: a utilizao de
dispositivos de armazenamento removveis como os chamados Pen Drives, a aplicao em equipamentos
de som que reproduzem msica no formato MP3 e os cartes de memria das cmeras digitais (Figura
1.13). Os dados armazenados neste tipo de memria permanecem ali sem a necessidade de alimentao.
Sua gravao feita em geral atravs da porta USB.
Figura 1.13 - Tipos de dispositivos que utilizam memria FLASH para armazenamento de dados.
Pgina 12
www.picminas.com.br
Copyright
A segunda classificao dada s memrias est relacionada ao seu modo de acesso, onde temos
dois tipos de memria, as Memrias Primrias e as Memrias Secundrias.
Memrias Primrias: tambm chamadas de memria real, so memrias que o processador pode
acessar diretamente, sem as quais os sistemas computadorizados no podem funcionar.
Geralmente fornecem uma ponte para as secundrias, mas a sua funo principal a de conter a
informao necessria para o processador num determinado momento; esta informao pode ser,
por exemplo, os programas em execuo. Nesta categoria insere-se a memria RAM (voltil),
memria ROM (no-voltil), registradores e memrias cache. Apesar desse tipo de memria ser
bem mais rpida que a memria secundria, elas possuem baixa capacidade de armazenamento,
onde armazenada somente o programa que est sendo executado pelo processador.
Memrias Secundrias: memrias que no podem ser acessadas diretamente, a informao
precisa ser carregada em memria primria antes de poder ser tratada pelo processador. No so
estritamente necessrias para a operao dos sistemas computadorizados. So geralmente novolteis, permitindo guardar os dados permanentemente. Incluem-se, nesta categoria, os discos
rgidos (HDs), CDs, DVDs e disquetes. So memrias de armazenamento em massa, guardam
grandes quantidades de dados.
Para entendermos melhor a aplicao dessas memrias vamos pensar em um exemplo de
computador, sendo a RAM a memria primria e o HD a memria secundria. Quando clicamos em um
cone para abrir um programa (por exemplo, o WORD), esta programa, que estava armazenado na memria
secundria (HD), carregado na memria primria (RAM) e ficar l at que o programa seja encerrado.
1.3.3 REGISTRADORES
Como j foi dito, um registrador ou clula de memria um circuito eletrnico capaz de armazenar
uma pequena quantidade de bytes (geralmente 1 byte). Os registradores esto no topo da hierarquia de
memria, sendo assim, so o meio mais rpido e caro de se armazenar um dado. uma espcie de
secretria utilizada para armazenar todos os dados sobre os quais sero realizados algum tipo de operao
(ADD, MOVE, SHIFT, etc.). Ele tambm armazena os resultados dessas operaes. Por exemplo, quando
uma instruo de soma entre duas variveis quaisquer (A e B) executada, antes da soma ser realizada, as
variveis sero carregadas, da memria RAM, para dentro de dois registradores. S depois a soma
realizada. Isso acontece porque somente os registradores possuem comunicao direta com a CPU de um
processador (Figura 1.14). O resultado da operao tambm ser armazenado em outro registrador antes
de ser carregado na memria RAM. No PIC18F4550 esses registradores so chamados de GPR (General
Purpose Register Registradores de Propsito Geral).
Figura 1.14 - O Registrador um tipo de memria que tem acesso direto a CPU.
Pgina 13
www.picminas.com.br
Copyright
www.picminas.com.br
Copyright
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.).
Uma das especificaes mais importantes dos pinos I/O a corrente mxima com que eles podem
operar. Para a maioria dos microcontroladores, a corrente fornecida por um pino suficiente para acender
um LED2 ou outro dispositivo similar de baixa corrente (10/20mA). No entanto, se um microcontrolador
possuir muitos pinos I/O, e todos eles estiverem ativos, a corrente mxima em cada pino ser menor. Isso
acontece porque alm de cada pino especificar a corrente mxima com a qual ele pode trabalhar, o
microcontrolador de modo geral tambm tem um limite de corrente de operao. Desta forma, se vrios
pinos forem acionados simultaneamente, esse limite no poder ser ultrapassado, fazendo com que o limite
de cada pino diminua. importantssimo verificar no datasheet do microcontrolador, que est sendo
utilizado, qual o valor mximo de corrente por pino I/O (operando isoladamente) e por conjunto de pinos.
1.3.6 BARRAMENTOS
Em sistemas microprocessados, o barramento um conjunto de linhas de comunicao que
permitem a interligao entre dispositivos, como a CPU, a memria e outros perifricos. Em um
computador, esses barramentos so as trilhas do circuito impresso da Placa Me Mother Board (Figura
1.17 - Placa Me.Figura 1.17).
LED Light Emitting Diode, o que significa Diodo Emissor de Luz. um componente eletrnico
muito utilizado como luz de sinalizao que acende com um valor de corrente eltrica bem baixa.
Pgina 15
www.picminas.com.br
Copyright
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)
Segundo TANEMBAUM, 2007, Interrupes foram concebidas para evitar o desperdcio de tempo
computacional em loops de software (chamados polling loops) esperando eventos que sero disparados por
dispositivos de modo assncrono. Ao invs do processador ficar esperando o evento acontecer, ele torna-se
capaz de realizar outras tarefas enquanto os eventos esto pendentes. A interrupo avisa ao processador
quando o evento ocorreu, permitindo uma acomodao eficiente dos dispositivos mais lentos. (MARTINS,
2008)
Pgina 16
www.picminas.com.br
Copyright
1.4 MICROCONTROLADORES
Com o passar do tempo comearam a surgir dispositivos eletrnicos com funcionalidades
especficas, como as mquinas de lavar, os controles remotos, os celulares, os mini-games (vdeo games
de bolso), sistemas de controle de alguns processos industriais, entre outros. A utilizao de um
microprocessador nesses dispositivos seria como utilizar um canho para matar uma formiga no quesito
velocidade de processamento. Desta forma, surgiu a necessidade de um microprocessador com
funcionalidades especficas e com capacidade de processamento bem inferior aos microprocessadores
utilizados em computadores. Esses novos microprocessadores inicialmente ficaram conhecidos como
microcomputadores ou computadores dedicados. A evoluo dos microcomputadores, onde foram
incorporados vrios perifricos (funcionalidades de outros CHIPs) em um mesmo CHIP, deu origem aos
MICROCONTROLADORES. De modo geral, um microcontrolador possui o mesmo princpio de
funcionamento que um microprocessador, s que diferente dele, o microcontrolador no necessita de
nenhum dispositivo (CHIP) externo para funcionar. Na verdade, podemos pensar em um microcontrolador
como um CHIP que possui alm do microprocessador, diversos outros dispositivos necessrios para o
funcionamento de um sistema computadorizado. A Figura 1.19 mostra vrios CHIPs, com funcionalidades
diversas, sendo incorporados em um nico CHIP, formando assim o microcontrolador. Os primeiros
microcontroladores foram criados no final da dcada de 70 e atualmente seu uso amplamente difundido.
Estima-se que em um lar comum de um pas desenvolvido seja possvel encontrar at 24
microcontroladores em funcionamento nos diversos aparelhos eletroeletrnicos.
www.picminas.com.br
Copyright
www.picminas.com.br
Copyright
desviado para o comeo de uma rotina por meio da instruo correta, o endereo seguinte ao ponto que
estava sendo rodado armazenado na pilha para que, ao fim da rotina, o programa possa retornar.
(SOUZA, 2005)
A memria do microcontrolador o lugar onde esto armazenadas as instrues e as variveis do
programa. Em um microcontrolador sempre h dois tipos de memria: a memria RAM e a memria FLASH.
A RAM uma memria voltil de leitura e escrita, que perde a informao armazenada quando no h
alimentao de energia. A memria FLASH uma memria no voltil e utilizada para armazenar
permanentemente o programa que deve ser executado pelo microcontrolador e a memria RAM armazena
temporariamente os dados com os quais a CPU do microcontrolador est trabalhando (executando). Um
nmero crescente de microcontroladores dispe de alguma memria no voltil do tipo EEPROM para
armazenar dados fixos que s so trocados esporadicamente.
A quantidade de memria FLASH disponvel normalmente muito superior a quantidade de
memria RAM. Isso obedece a duas razes: a primeira que a grande maioria das aplicaes requerem
programa que usam poucos dados, ento basta uma memria RAM em que se possa armazenar algumas
dezenas de dados.
As entradas e sadas so particularmente importantes nos microcontroladores, pois atravs
delas que o microcontrolador interage com o meio exterior. O microcontrolador possui tanto entradas e
sadas digitais (portas I/O, portas de comunicao serial, PWM, timers, etc.), quanto portas analgicas
associadas aos conversores A/D e D/A. O Watchdog Timer um recurso disponvel em muitos
microcontroladores, ele dispara um reset ao sistema se o programa principal apresentar alguma falha.
Um requisito geral que um microcontrolador pode ser utilizado em um nmero grande de
aplicaes e que tenha muitos recursos de entrada e sada. Esse requisito est relacionado com o nmero
de terminais (pinos) do circuito integrado (CHIP).
Pgina 19
www.picminas.com.br
Copyright
Pgina 20
www.picminas.com.br
Copyright
Observe que a palavra binria 11011010 equivale ao nmero 218 no sistema decimal de
numerao. Veja que para representarmos o mesmo nmero, o sistema binrio necessita de 8 algarismos
enquanto que o sistema decimal apenas 3. Essa a principal desvantagem do sistema binrio, pois exige
que o sistema possua uma memria maior para armazenar a mesma quantidade de informao. Por outro
lado, o sistema binrio bem menos complexo, pois s trabalha com dois algarismo, permitindo que os
sistema computadorizados trabalhem com o sistema de Tudo (lgica 1) ou Nada (lgica 0), conhecida
como Linguagem de Mquina ou Linguagem de Computador. Desta forma, se quisermos que um
computador (ou mais especificamente o processador do computador) entenda o nmero 218, na verdade
teremos de passar para ele o nmero 11011010.
Ainda existe outro sistema de numerao, chamado Hexadecimal, utilizado para representar os
programas escritos em cdigo binrio de forma mais compacta. Isso acontece porque, diferente do cdigo
binrio que possui menos algarismos que o sistema decimal, o hexadecimal possui 16 algarismos,
necessitando assim de palavras menores para representar o mesmo cdigo decimal ou binrio.
No incio do desenvolvimento dos sistemas computadorizados, as pessoas perceberam que
tinham muitas dificuldades em lidar com nmeros binrios, pois os cdigos desenvolvidos em linguagem de
mquina ficavam muito extensos e difceis de serem lidos. Por isso, um novo sistema de numerao foi
desenvolvido. S que desta vez, foi criado um sistema com 16 algarismos diferentes. Os primeiros 10
dgitos so os mesmo do sistema decimal (0, 1, 2, 3,... 9) e os 6 outros dgitos foram criados utilizando as
seguintes letras: A, B, C, D, E e F, formando assim um sistema de numerao Alfanumrico, chamado de
Sistema de Numerao Hexadecimal. O algarismo A equivale ao nmero 10 do sistema decimal, o B
equivale ao 11 e assim sucessivamente at o F que equivale ao 15. Desta forma, ficou mais simples para os
projetistas entenderem os cdigos de mquina que haviam desenvolvido, pois os mesmos ficaram bem
mais compactos uma vez que com um algarismo do sistema Hexadecimal era possvel representar at 4
algarismos do sistema Binrio, por exemplo, o maior nmero que pode ser representado com uma palavra
binria de 4-bits o 1111 que corresponde ao nmero 15 no sistema decimal e F no hexadecimal. (Figura
1.23)
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
Copyright
importante notarmos que para nmeros decimais de 0 a 3, so necessrios apenas dois dgitos
binrios para sua representao. Para valores superiores, dgitos extras devem ser acrescentados. Assim,
para nmeros de 0 a 7 so necessrios 3 dgitos, 0 a 15 so necessrios 4 dgitos, 0 a 31 5 dgitos, etc.
Desta forma, para sabermos qual o maior nmero decimal que podemos representar com um nmero
binrio de n dgitos, basta aplicarmos a seguinte frmula: 2n 1, veja os exemplos:
Com 2 dgitos => 22 1 = 3 (como vimos com nmeros binrios de 2 dgitos podemos representar
os nmeros decimais de 0 a 3, sendo o 3 o seu valor mximo);
Com 3 dgitos => 23 1 = 7;
4
Pgina 22
www.picminas.com.br
Copyright
A Tabela 1 contm os valores dos nmeros 0-255 em trs diferentes sistemas de numerao.
1.8 O BIT
Teoricamente falando, um bit a unidade bsica de informao em sistemas microprocessados
(computacionais). Na prtica, um bit um dgito de uma palavra binria. A exemplo do sistema decimal de
numerao, onde um dgito em um nmero no tem o mesmo valor (por exemplo, os dgitos no nmero 333
so os mesmos, mas possuem valores diferentes, onde o primeiro 3 representa trs unidades o segundo
dgito 3 representa trinta unidades e o dgito 3 mais a esquerda do nmero representa trezentas unidades),
a significncia de cada bit depende da posio em que ele se encontra no nmero binrio. A diferena entre
os nmeros decimais e os nmeros binrios que nos primeiros a cada vez que um dgito deslocado para
a esquerda ele multiplicado por 10 (Base-10), enquanto que nos binrios ele ser multiplicado por 2
(Base-2). Desta forma, em um nmero binrio 111, o primeiro 1 (sempre da direita para a esquerda) tem o
valor de 1, o segundo 1 tem o valor de 1x21 = 2 e o terceiro 1 tem o valor de 1x22 = 4, enquanto que para
1
o nmero decimal 111, o primeiro 1 tem o valor de 1, o segundo 1 tem o valor de 1x10 = 10 e o terceiro 1
tem o valor de 1x102 = 100. Desta forma, ficou convencionado que o bit mais a esquerda de uma palavra
binria seria o Bit Mais Significativo (Most Significant Bit MSB) e o bit mais a direita o Bit Menos
Significativo (Least Significant Bit LSB).
Pgina 23
www.picminas.com.br
Copyright
No fique confuso se voc encontrar algum bit com valor 4, 16 ou 64. Isso significa que o valor do
bit est representado no sistema decimal. Seria correto dizer, por exemplo, que, "o valor do sexto bit ou bit 6
do nmero binrio 1000000 equivalente ao nmero decimal 64", pois o sexto bit (da direita pra esquerda)
est na posio 6 (levando em conta que o primeiro bit est na posio zero), desta forma ele dever ser
6
multiplicado por 2 seis vezes (2x2x2x2x2x2 ou 2 = 64), (Figura 1.27). Neste caso, como todos os outros
dgitos so iguais a 0, o valor do nmero binrio completo ser igual ao valor do bit 6 = 26 = 64.
1.9 O BYTE
Um byte ou palavra de programa consiste em 8-bits agrupados. Todas as operaes matemticas
podem ser realizadas com eles da mesma forma que so feitas com os nmeros decimais. Tal como
acontece com qualquer outro dgito de um nmero qualquer, os dgitos de um byte no possuem o mesmo
valor. Como visto, o bit de maior valor o bit mais a esquerda (MSB). Portanto, o bit de menor valor o bit
mais a direita (LSB). Como em um byte temos 8 bits, possvel realizar at 256 combinaes diferentes, ou
seja, um byte pode representar at 256 (28 = 256) nmeros binrios diferentes, sendo 255 o maior nmero
decimal que pode ser representado.
Um nibble o nome dado a meio byte (4-bits). Existem dois tipos de nibble, o low e o high,
onde o primeiro o nome dado a metade menos significativa do byte (os primeiro 4-bits) e o ltimo
representa a metade do byte mais significativa (os ltimos 4-bits). (Figura 1.28)
www.picminas.com.br
Copyright
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.
Quando usado em um programa, a operao lgica AND executada por uma instruo de
programa, o que ser discutido mais adiante no captulo que trata da programao do microcontrolador em
linguagem C. Por enquanto, basta lembrar que a lgica AND, em um programa, ser utilizada para
relacionar os bits de dois registros ou variveis diferentes. Veja o exemplo da Figura 1.30, onde realizada
uma operao lgica AND entre as variveis A e B, bit a bit, e os bits do resultado s foram iguais a 1
quanto o bit de A e o bit de B eram iguais a 1, o que aconteceu apenas no bit3 e no bit6.
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.
Pgina 25
www.picminas.com.br
Copyright
Se um programa realiza uma operao lgica NOT em um byte, o resultado ser um byte com
todos os bits invertidos. (Figura 1.34)
www.picminas.com.br
Copyright
Pgina 27
www.picminas.com.br
Copyright
Pgina 28
www.picminas.com.br
Copyright
Harvard: dois barramentos, sendo exclusivo para trafegar dados e outro para instrues, no
caso de microcontroladores PIC, o barramento de dados sempre de 8 bits e o de instrues
pode ser de 12, 14 e 16 bits;
Na arquitetura Harvard pode-se executar uma instruo enquanto outra est sendo carregada.
Diferentemente do que ocorre com o Von-Neumann. Alm disso, como os barramentos so separados h a
necessidade de a instruo conter o endereo dos dados a serem processados. (SOUZA, 2005) Como
consequncia o nmero das instrues possveis fica limitado. Devida a essa limitao surgiu a tecnologia
RISC (Reduced Instruction Set Computer Computador com conjunto de instrues reduzido). Ao contrrio
da tecnologia CISC (Complex Instruction Set Computer Computador com conjunto de instrues
complexo). (SOUZA, 2005)
Os PICs da Microchip so os microcontroladores mais vendidos, principalmente pelas vantagens,
tais como: grande variedade de famlias que permitem adaptar o C s necessidades de cada aplicao,
ferramentas comuns para desenvolvimento, grande variedade de funcionalidades embutidas, preos
competitivos e bom suporte (datasheet, livros, notas de aplicaes, seminrios e muita informao
disponvel na internet).
Os Cs PIC tm famlias com ncleos de processamento de 12 bits, 14 bits e 16 bits e trabalham
em velocidades de at 48MHz, usando ciclo de instruo mnimo de 4 perodos de clock, o que permite uma
velocidade de no mximo 12 MIPS. Possibilita o reconhecimento de interrupes tanto externas como de
perifricos internos. Funcionam com tenses de alimentao de 2 a 6V e os modelos possuem
encapsulamento de 6 a 100 pinos em diversos formatos (SOT23, DIP, SOIC, TQFP, etc.).
(WIKIPDIA.ORG)
Os PICs podem ser programados em linguagem mnemnica (assembly) ou usando-se
compiladores de linguagem de alto nvel (Pascal, C, Basic) que geram um cdigo em formato hexadecimal
(Intel Hex format ou linguagem de mquina) que podem ser gravados na memria de programa desses
microcontroladores. Para tal procedimento, utiliza-se um hardware especial (gravador externo de PIC)
Pgina 29
www.picminas.com.br
Copyright
acoplado a um PC. PIC's com memria FLASH so altamente flexveis na fase de desenvolvimento, pois
permitem uma rpida alterao do cdigo de programa. (WIKIPDIA.ORG)
Abaixo temos as primeiras funcionalidades internas dos PICs. Algumas propriedades podem variar
com o modelo do PIC utilizado: (WIKIPDIA.ORG)
2.1 PIC18F4550
O PIC18F4550 ser o microcontrolador usado em nosso curso. A escolha deste C se deve a
algumas de suas vantagens, tais como facilidade de encontrar no comrcio, custo acessvel, facilidade de
gravao e caractersticas. A coluna 5 da Tabela 2 mostra algumas das caractersticas do PIC18F4550:
Pgina 30
www.picminas.com.br
Copyright
Pgina 31
www.picminas.com.br
Copyright
O PIC18F4550, como j foi dito, possui 35 portas de I/O, separados em cinco grupos
denominados PORTAS. Desta forma, temos a PORT A, a PORT B, a PORT C, a PORT D e a PORT E.
A maioria desses pinos podem ser configurados como entrada ou sada (input or output), e como
j foi dito, alguns deles acumulam vrias funes.
Podemos ver mais detalhes sobre cada pino na Tabela 3 (dividida em partes), que segue abaixo
(Ver datasheet do PIC18F4550 da pgina 14 a 23):
Pgina 32
www.picminas.com.br
Copyright
Pgina 33
www.picminas.com.br
Copyright
Pgina 34
www.picminas.com.br
Copyright
Pgina 35
www.picminas.com.br
Copyright
Pgina 36
www.picminas.com.br
Copyright
Pgina 37
www.picminas.com.br
Copyright
Como vimos, a Figura 1.9 mostra, por meio de diagrama de blocos, as principais partes de um
sistema microprocessado padro. Na figura 2.3 possvel visualizar como esto distribudas cada uma
dessas partes na arquitetura interna do PIC18F4550.
Pgina 38
www.picminas.com.br
Copyright
Pgina 39
www.picminas.com.br
Copyright
Pgina 40
www.picminas.com.br
Copyright
O vetor Reset trata-se do primeiro endereo de memria de programa que ser executado quando
o PIC comear a rodar (aps a alimentao ou um reset). As rotinas de interrupo sero armazenadas na
rea de programao, juntamente com todo o resto do programa. No entanto, existe um endereo que
reservado para o incio do tratamento de todas as interrupes. A pilha um local, totalmente separado da
memria de programao, em que sero armazenados os endereos de retorno quando utilizarmos
instrues de chamadas de rotinas. (SOUZA, 2005)
Pgina 41
www.picminas.com.br
Copyright
Pgina 42
www.picminas.com.br
Copyright
O endereo FFFh equivale a 4095 bytes (capacidade mxima de endereamento com 12-bit).
www.picminas.com.br
Copyright
REGISTRADOR STATUS
O registrador STATUS utilizado para armazenamento de flags (sinalizadores) matemticos e de
estado da CPU, esses flags sinalizam o status aritmtico da ULA. (Figura 2.9)
E = Bit de Escrita
Pgina 44
www.picminas.com.br
Copyright
Pgina 45
www.picminas.com.br
Copyright
2.2.2. CHAVES/TECLAS
As chaves e teclas so: quatro chaves tteis (push button) e uma chave dip switch de quatro vias.
A Figura 2.13 e Figura 2.14 mostram as ligaes de cada uma dessas chaves no PIC18F4550.
Pgina 46
www.picminas.com.br
Copyright
Pgina 47
www.picminas.com.br
Copyright
2.2.4. DISPLAYS
A ltima parte, os displays de apresentao de informao so: um display duplo de 7 (sete)
segmentos (anodo comum) e um display de LCD. As Figura 2.18 e Figura 2.19 mostram as ligaes de
cada um desses displays no PIC18F4550.
Pgina 48
www.picminas.com.br
Copyright
Pgina 49
www.picminas.com.br
Copyright
Nome
no LCD
VSS
VDD
VO
RS
R/W
Pino do
LCD
1
2
3
4
5
Pino do
PIC18F4550
GND
5V
P21
GND
E
D0
D1
D2
D3
D4
D5
D6
D7
6
7
8
9
10
11
12
13
14
P22
P34
P25
P33
P26
Nome do Pino
no PIC18F4550
No conectado
RD2
RD3
No conectado
No conectado
No conectado
No conectado
RD4
RD5
RD6
RD7
Descrio
Pino de Terra do LCD
Pino de Alimentao
Pino de ajuste do contraste ligado ao potencimetro.
Pino de Seleo de envio de Comandos ou Dados.
Pino de Seleo Leitura ou Escrita de dados.
No KIT PICMINAS est habilitada apenas escrita.
Pino de habilitao de recepo de sinal do LCD
Pino para envio de Dados (No utilizado no KIT)
Pino para envio de Dados (No utilizado no KIT)
Pino para envio de Dados (No utilizado no KIT)
Pino para envio de Dados (No utilizado no KIT)
Pino para envio de Dados
Pino para envio de Dados
Pino para envio de Dados
Pino para envio de Dados
Pgina 50
www.picminas.com.br
Copyright
Pgina 51
www.picminas.com.br
Copyright
Procedimento
1) Descompacte o arquivo MP814 (No site da Microchip existe apenas verso mais recente).
2) D dois cliques no arquivo MP814_Install.exe, para instalar o programa.
3) Na primeira janela que aparece, MPLAB Tools 8.14 Installation, clique em Next. (Figura 3.1)
Pgina 52
www.picminas.com.br
Copyright
4) Na segunda janela, MPLAB IDE License Agreement, selecione a opo I accept the terms of the
license agreement, indicando que voc est de acordo com os termos da licena do software. Clique
em Next.
5) Na terceira janela, Setup Type, selecione a opo Complete e clique em Next. (Figura 3.2)
Pgina 53
www.picminas.com.br
Copyright
6) A seguir voc dever escolher o caminho de destino para instalao do programa. Como padro o
destino C:\Arquivos de programas\Microchip. Clique no boto Browse ... e na janela Choose
Folder, selecione o caminho C:\Microchip. (Figura 3.3)
Obs.: Esse procedimento evita que o caminho dos projetos criados pelo usurio exceda o mximo de
caracteres permitidos (62 caracteres).
7) Na janela a seguir, Application Maestro License, selecione a opo I accept the terms of the license
agreement e clique em Next.
8) Na janela, MPLAB C32 License, selecione a opo I accept the terms of the license agreement e
clique em Next.
9) Na ltima janela, Start Copying Files, clique em Next e aguarde a instalao dos componentes.
10) Aps finalizar a instalao, deixe selecionada a opo Yes, I want to restart my computer now. Clique
em Finish e reinicie seu computador. (Figura 3.4)
Pgina 54
www.picminas.com.br
Copyright
Conforme j foi dito, nesse curso usaremos o compilador C18 Student Edition. Ele permite que o
programador escreva o cdigo na linguagem C e o compilador C18 traduz esse cdigo em C para
linguagem de mquina que o C PIC entendem.
A verso do compilador C18 Student Edition fornecida pela Microchip contm arquivos fonte
(source files - tipo .c), arquivos de bibliotecas (header files tipo .h), documentao, exemplos, arquivos
de link (Linkers files tipo .lkr) e outros. uma verso para estudantes e aps 60 dias ela expira sua
licena. Aps esse perodo o usurio poder usar o compilador, porm ele no mais ir otimizar os cdigos,
o que significa que os cdigos traduzidos iro ocupar mais espao na memria do C.
Pgina 55
www.picminas.com.br
Copyright
Um projeto criado no MPLAB, gerenciado por informaes gravadas num arquivo de extenso
.mcp (Projeto do MPLAB). A compilao do projeto gera importantes arquivos, conforme mostra a figura 3.6.
www.picminas.com.br
Copyright
Procedimento
1) D dois cliques no arquivo MPLAB-C18-Student-Edition-doc-v3_02.exe, para instalar o compilador.
2) Na primeira janela que aparece, Welcome, contm o nmero da verso do MPLAB C18 que o
programa de setup est instalando, clique em Next. (Figura 3.7)
3) Na janela seguinte, License Agreement, selecione a opo I Accept, indicando que voc est de
acordo com os termos da licena do software. Clique em Next. (Figura 3.8)
Pgina 57
www.picminas.com.br
Copyright
6) Na janela seguinte, Select Components, voc pode escolher os componentes a serem instalados.
Selecione TODAS as opes existentes e clique em Next. (Figura 3.10)
Segue a descrio detalhada dos componentes disponveis para seleo na figura 3.10 (MPLAB
C18 Getting Started, 2008):
Pgina 58
www.picminas.com.br
Copyright
Componente
Descrio
Program files
Assembler files
Esses arquivos so usados pelo MPLINK linker. Existe um arquivo para cada
microcontrolador suportado no compilador C18. Cada arquivo fornece a configurao
padro da memria para o microcontrolador e direciona o linker na alocao do cdigo e
dos dados na memria do microcontrolador.
Estes linker scripts so diferentes dos linker scripts fornecidos pelo MPLAB IDE, estes
so especificamente designados para serem usados com o MPLAB C18. Assim o
MPLINK linker exige esses linker scripts. Os usurios devem instalar esses
componentes a menos que planeje criar seu prprio linker script.
Standard headers
Standard libraries
Documentation
Examples
Pgina 59
www.picminas.com.br
Copyright
Segue abaixo a descrio detalhada das configuraes disponveis na figura 3.10 (MPLAB C18
Getting Started, 2008):
Configurao
Add MPLAB C18 to PATH
environment variable
Descrio
Esse adiciona o caminho do executvel MPLAB C18 (mcc18.exe) e o executvel
MPLINK linker (mplink.exe) varivel ambiente PATH.
Fazer isso permite que os usurios lancem no prompt de comando a partir de qualquer
diretrio.
Isso adiciona o caminho do diretrio do arquivo cabealho MPLAB C18 para a varivel
ambiente MCC_INCLUDE. Se a varivel no existir, ela criada. MCC_INCLUDE uma
lista de diretrios delimitada por ponto-e-vrgula onde o MPLAB C18 ir procurar pelo
arquivo cabealho, se no puder encontrar o arquivo no diretrio especificado na lista a
opo I na linha de comando.
Selecionando esta opo de configurao significa que os usurios devero usar a
opo I na linha de comando quando incluir um arquivo de cabealho padro.
Esta opo aparece apenas se o MPLAB IDE estiver instalado no seu sistema.
Selecionada, esta opo configura o MPLAB IDE para usar o MPLAB C18 recminstalado. Isto inclui usar o diretrio da biblioteca MPLAB C18 como caminho padro de
bibliotecas para projetos MPLAB C18 no MPLAB IDE.
Esta opo aparece apenas se o MPLAB IDE est instalado em seu sistema.
Selecionada, esta opo configura o MPLAB IDE para usar o MPLINK linker recminstalado.
Pgina 60
www.picminas.com.br
Copyright
8) Na janela Star Installation, clique no boto Next e aguarde a instalao dos componentes do
compilador.
9) Ao finalizar a instalao dos componentes, clique em Finish.
Descrio
bin
cpp
doc
example
Contm aplicaes exemplos para auxiliar o usurio a comear a usar o MPLAB C18.
lib
lkr
mpasm
scr
Pgina 61
www.picminas.com.br
Copyright
Procedimento
1) D dois cliques no arquivo Microchip Application Libraries v2009-07-24.EXE.
Na primeira janela que aparece, Welcome, contm as aplicaes que sero instaldas no seu
computador, clique em Next. (Figura 3.13)
2) A janela seguinte License Agreement, clique na opo I Accept, indicando que voc est de acordo
com os termos da licena do software. (Figura 3.14)
Pgina 62
www.picminas.com.br
Copyright
3) Na janela Chosse Destination Location, deixe o diretrio padro (C:\Microchip Solutions) e clique no
boto Next. (Figura 3.15)
Pgina 63
www.picminas.com.br
Copyright
4) A janela Backup Replaced Files, deixe as marcaes padres e clique em Next. (Figura 3.16)
5) Na janela seguinte, Star Installation, clique no boto Next e ir comear a instalao. (Figura 3.17)
Pgina 64
www.picminas.com.br
Copyright
Procedimento
1) Aparecer uma janela de instalao do driver para o reconhecimento do gravador, selecione a opo
No, no agora e clique no boto Avanar (Figura 3.19).
Pgina 65
www.picminas.com.br
Copyright
3) Feito isso, espere a instalao do driver e na janela que ir aparecer, clique em Concluir. (Figura 3.21)
Pgina 66
www.picminas.com.br
Copyright
Observao: Caso voc conectar o mdulo de gravao em outra porta de comunicao USB,
ter que fazer o procedimento de instalao do driver novamente. S necessrio fazer o procedimento
uma vez por porta.
Procedimento
1) Abra o projeto do bootloader (MCHPUSB.mcp) na pasta C:\MCHPFSUSB\fw\Boot (Diretrio padro de
instalao).
2) Sem alterar nada no cdigo, v no menu Programmer -> Select Programmer -> 2 MPLAB ICD2.
(Figura 3.22)
3) Caso o Mplab no reconhea o mdulo de gravao, exibindo uma mensagem de aviso (Auto-connect
not enabled - Not connecting (Try enabling auto-connect on the ICD2 settings pages.). Siga os
passos abaixo, caso contrrio v para o item 4.
Clique no menu Programmer -> MPLAB ICD2 Setup Wizard. (Figura 3.23)
Pgina 67
www.picminas.com.br
Copyright
Pgina 68
www.picminas.com.br
Copyright
Na janela seguinte, Connection, marque a opo MPLAB IDE automatically connects to the
MPLAB ICD2, e clique em Avanar. (Figura 3.26)
Na janela seguinte, Download, deixe marcada a opo MPLAB ICD2 automatically downloads
the required operating system, e clique em Avanar. (Figura 3.27)
Pgina 69
www.picminas.com.br
Copyright
Na janela final clique em Concluir. Repita o passo 2 e verifique se o mdulo de gravao foi
reconhecido, caso ainda no seja, entre em contato com o fabricante do mdulo.
4) Se tudo correr bem, voc poder ver uma srie de cones habilitados na barra de ferramentas. (Figura
3.28)
Hold in Reset
5) Para gravar o firmware desejado, clique no boto Erase target device, em seguida clique em Program
target device. importante apagar o contedo do dispositivo primeiro para depois gravar o novo
firmware.
6) O MPLAB exibir uma mensagem de Programao feita com sucesso. (Figura 3.29)
Pgina 70
www.picminas.com.br
Copyright
Outro exemplo seria um programa para controlar as funes de um forno de microondas. Este
seria um software ou firmware? Para respondermos a esta pergunta vamos nos fazer a seguinte pergunta:
seria possvel gravar o programa responsvel pelo funcionamento de um forno de microondas da marca LG
em outro forno de microondas da marca Consul? Provavelmente no, pois esses programas so
desenvolvidos para a montagem especfica de cada modelo de microondas, pensando em seus dispositivos
eletrnicos como, por exemplo, tipo de teclado e quantidade de botes no mesmo, nmero de
funcionalidades, tipo de display (LCD, 7 segmentos e outros), caractersticas eltricas do motor que gira o
prato e at mesmo do microcontrolador utilizado para controlar todos esses perifricos. Desta forma, fica
fcil concluir que o programa gravado em um modelo especfico de forno de microondas da marca LG foi
desenvolvido especificamente para aquele eletrodomstico, no sendo possvel grav-lo nem em outros
modelos de microondas da marca LG nem to pouco de outras marcas. Isso nos permite afirmar que este
programa trata-se de um firmware e no de um software.
Firmware
Software
Outro conceito importante que devemos abordar antes de falarmos do Bootloader so os tipos de
gravao que um microcontrolador pode ter, ou seja, as formas possveis nas quais podemos armazenar
(carregar) o programa desenvolvido para um determinado microcontrolador dentro de sua memria novoltil (geralmente uma memria FLASH). Este programa ir controlar todas as funcionalidades do
microcontrolador para uma determinada tarefa. Iremos cham-lo de Firmware de Aplicao. O modo mais
comum de gravar o Firmware de Aplicao chamado de gravao offboard, que como o prprio nome
diz, necessrio que o microcontrolador seja retirado da sua plataforma de aplicao (placa de circuito
impresso que liga os perifricos do microcontrolador aos dispositivos externos que ele ir controlar, por
exemplo: botes, rels, LEDs, display, etc.) e colocado em outro dispositivo, chamado Gravadora, para
que o Firmware de Aplicao seja gravado em sua memria interna no-voltil, como visto no item 3.4. O
outro mtodo e conhecido como gravao in-circuit, onde o microcontrolador gravado no seu prprio
circuito, ou seja, na sua prpria plataforma de aplicao. Neste caso razovel falarmos que o prprio
microcontrolador ir se programar. Isso possvel porque em uma pequena parte de sua memria interna
no-voltil (FLASH) foi gravado previamente outro firmware que ir coordenar a transferncia do Firmware
de Aplicao do computador para a memria interna no-voltil do microcontrolador. Esse firmware
chamado de Bootloader, expresso em ingls que significa Rotina de Partida.
Desta forma, podemos que o Firmware Bootloader (previamente gravado em uma pequena parte
da memria no-voltil do microcontrolador pelo mtodo off-board) o programa que inicia a gravao (o
carregamento) de Firmwares de Aplicao no microcontrolador pelo mtodo in-circuit. No caso do
PIC18F4550 isso feito atravs da porta USB que comunica com o computador por meio do programa
PDFSUSB fornecido gratuitamente pela empresa Microchip. Maiores detalhes sobre este procedimento so
vistos na seo 3.7. A maior vantagem de sistemas que possuem essa funcionalidade que s
necessria a gravao pelo mtodo off-board apenas uma nica vez, para a gravao do BootLoader. Isso
porque, para o carregamento de novos firmwares de aplicao, ou para atualizao de firmwares j
Pgina 71
www.picminas.com.br
Copyright
existentes, utilizado o mtodo in-circuit, sem haver a necessidade de retirar o microcontrolador de sua
plataforma de aplicao.
O Bootloader est usando a memria do endereo 0x000h at o endereo 0x800h. Este o nico
programa que deve ser gravado na memria interna do PIC, por meio de um circuito de gravao externo
(uma gravadora PIC).
Uma vez que o Bootloader est armazenado nos endereos supracitados da memria interna,
no-voltil do PIC, ele passa a comunicar com o PC via USB, por onde ser possvel inserir outros cdigos
(aplicaes, exemplos) por meio da porta de comunicao USB.
O firmware Bootloader um programa que vai gerenciar o boot do microcontrolador. Ele o
primeiro programa dentro da memria do seu microcontrolador. Ele est alocado no endereo 0x000 at o
endereo 0x800. E assim define duas formas de inicializao do kit de desenvolvimento:
1: apertando o boto Reset.
2: apertando o boto Boot, segurando-o e apertando o boto de Reset.
A primeira forma de inicializao faz com que o microcontrolador execute tudo aquilo que est
gravado a partir da linha 0x800. E a segunda faz com que o microcontrolador execute a partir da linha
0x000.
Procedimento
1) Conecte o kit de desenvolvimento em uma das portas de comunicao USB do seu computador;
2) Faa o processo de inicializao do kit, clique e segure o boto de BOOT, clique no boto de RESET (
importante seguir a ordem dos botes). Esse processo importante para identificar o modo de reset
que o microcontrolador ir executar, ou seja, a partir de qual rea da memria o microcontrolador ir
executar (ou da 0x000 ou 0x800)
3) Uma janela de instalao do driver ir abrir, selecione a opo No, no agora e clique no boto
Avanar. (Figura 3.30)
Pgina 72
www.picminas.com.br
Copyright
4) Na janela seguinte, marque a opo Instalar de uma lista ou local especfico (avanado). Clique em
Avanar. (Figura 3.31)
5) Na janela seguinte, selecione a opo incluir este local na pesquisa e digite o diretrio C:\Microchip
Solutions\USB Tools\MCHPUSB Custom Driver\MCHPUSB Driver\Release, ou se preferir clique no
boto Procurar e v at o diretrio que possui o driver (C:\Microchip Solutions\USB Tools\MCHPUSB
Custom Driver\MCHPUSB Driver\Release). Clique em Avanar. (Figura 3.32)
Pgina 73
www.picminas.com.br
Copyright
7) Espere a instalao do driver e na ltima janela, clique no boto Concluir. (Figura 3.34)
Pgina 74
www.picminas.com.br
Copyright
8) Esse procedimento faz com que o kit seja reconhecido como uma porta de comunicao. (Mais detalhes
sero dados mais pra frente)
Observao: Caso voc conectar o kit de desenvolvimento em outra porta de comunicao USB,
ter que fazer o procedimento de instalao do driver novamente. S necessrio fazer o procedimento
uma vez por porta.
Procedimento
1) Abra o programa PDFSUSB. Execute o processo de inicializao do kit de desenvolvimento (clique no
boto de BOOT segure e em seguida clique no boto de RESET). Na janela que ir se abrir possvel
selecionar o dispositivo que deseja fazer a gravao. (Figura 3.35)
Pgina 75
www.picminas.com.br
Copyright
Figura 3.35: Janela do programa PICDEM FS USB, usando para gravao do firmware no Microcontrolador.
2) Aps a seleo do dispositivo vamos carregar o cdigo a ser gravado. Usaremos um projeto exemplo
da Microchip disponvel no endereo C:\Microchip Solutions\USB Precompiled Demos\Picdem
fsusb\MCHPUSB Bootloadable. Clique no boto Load HEX File. V no diretrio C:\Microchip
Solutions\USB Precompiled Demos\Picdem fsusb\MCHPUSB Bootloadable (Figura 3.36a). Selecione o
arquivo hexadecimal disponvel nesse diretrio (no exemplo USB Device - HID - Mouse - C18 - PICDEM
FSUSB - MCHPUSB Bootload.hex) (Figura 3.36b). Clique em abrir.
Pgina 76
www.picminas.com.br
Copyright
5) O interessante nesse processo que ao apagar a memria do C, o software faz isso a partir do
endereo de memria 0x800 (final do programa Bootloader) e o processo de gravao tambm, o
Pgina 77
www.picminas.com.br
Copyright
software grava a partir do endereo 0x800. Assim o firmware Bootloader permanece gravado na
memria do microcontrolador sem dados.
6) Aps gravar aparecer a mensagem de programao completada (Figura 3.38).
7) Aps isso, voc pode executar o programa apertando o boto Execute do software, ou o boto de
RESET do kit de desenvolvimento.
8) Para esse exemplo especifico aparecer uma janela de instalao de driver (Mouse). E o cursor do
mouse comear a rodar.
9) Para parar de rodar desconecte o kit do computador ou ento faa o procedimento de inicializao do
kit de desenvolvimento.
Pgina 78
www.picminas.com.br
Copyright
www.picminas.com.br
Copyright
executados numa ordem prescrita; outro dinmico, no que se refere aos efeitos provocados pela sua
execuo (resultado final).
Para elaborar um bom algoritmo necessrio relembrar alguns conceitos bsicos de
programao, tais como linguagem estruturada, fluxogramas, variveis, dados e operadores.
A programao pode ser colocada como a traduo do pensamento lgico necessrio para a
execuo e cumprimento de uma tarefa especfica, organizadas em uma sequncia de comandos
interpretadas e executadas por uma mquina. Ento o programa est ligado ao ordenamento lgico do
raciocnio humano. (PEREIRA, 2008)
A construo de um programa um processo de levantamento e soluo de problemas, seguindo
um conjunto de procedimentos genricos, listados abaixo: (PEREIRA, 2008)
1) Exposio do problema: descrever detalhadamente o problema a ser resolvido;
2) Anlise da soluo: elaborar soluo (es) que podem resolver o problema em questo;
3) Codificao da soluo: descrio sequencial passo a passo da soluo que melhor resolve
o problema. (Montagem do algoritmo)
4) Traduo do cdigo: traduo do algoritmo em comandos que sero corretamente
interpretados pela linguagem de programao utilizada.
5) Depurao (em ingls DEBUG): o processo de verificao e teste do programa de forma a
localizar e solucionar todas as eventuais falhas e erros de codificao que tenham acontecido em
quaisquer fases anteriores.
Para facilitar a execuo das tarefas listadas e achar uma soluo ideal so usados diagramas e
fluxogramas, que permitem uma melhor visualizao do problema.
www.picminas.com.br
Copyright
4.1.2 FLUXOGRAMAS
Fluxogramas so ferramentas de representao grfica que auxiliam a tarefa de codificao de um
programa, s vezes a soluo de um problema fica bem mais clara com a criao de fluxograma do mesmo.
Basicamente, fluxogramas so elementos grficos utilizados para estabelecer a sequncia de
operaes necessrias para o cumprimento de determinada tarefa e consequentemente, a resoluo de um
problema. Eles permitem esquematizar e visualizar os sistemas de forma racional, clara e concisa,
facilitando seu entendimento geral por todos os envolvidos.
Alguns elementos bsicos para a construo de um fluxograma esto listados abaixo:
Smbolo
Descrio
Incio ou Terminao: este tipo de smbolo utilizado para representar o
incio ou trmino do programa ou algoritmo.
Processamento: este smbolo utilizado para descrever a realidade de uma
determinada tarefa.
Dados: normalmente este smbolo utilizado para descrever um processo de
uma determinada tarefa.
Tomada de deciso: este smbolo utilizado para representar um ponto de
tomada de deciso, ou teste condicional. A tomada de deciso pode conduzir
sempre a um resultado: verdadeiro ou falso. Em um dos casos o fluxo do
programa desviado e no outro, normalmente, o programa seguir na sua
sequncia normal.
Os smbolos utilizados nos fluxogramas tm por objetivo evidenciar origem, processo e destino da
informao componente de um sistema. possvel utilizar smbolos diferentes dos convencionais, desde
que no ofeream dificuldade de compreenso para o leitor e desde que sejam definidos previamente.
Um fluxograma fornece uma compreenso detalhada de um processo e procura apresentar o
processo passo a passo, ao por ao.
O primeiro exemplo mostra um problema simples de somar dois nmeros (A e B) e armazenar o
resultado em C. (PEREIRA, 2008)
Pgina 81
www.picminas.com.br
Copyright
Incio
Pega o primeiro
nmero (A)
Pega o segundo
nmero (B)
Soma A + B e
guarda em C
Fim
Contagem = 0
Soma 1 contagem
Contagem = 10?
No
Sim
Fim
Pgina 82
www.picminas.com.br
Copyright
de valores possveis. Varivel ento pode ser entendida como um identificador que representa ou identifica
um dado qualquer. (PEREIRA, 2008)
Para criao de variveis existem algumas regras que devem ser seguidas:
4.1.4 OPERADORES
Sempre que precisamos relacionar ou modificar um ou mais elementos como variveis ou dados
de um programa, utilizamos operadores. Eles so elementos ou smbolos grficos utilizados ento para
relacionar ou modificar dados ou variveis. (PEREIRA, 2008)
So cinco categorias de operadores:
Matemticos: utilizados para efetuar determinada operao matemtica em relao a um ou
mais dados. (Adio, subtrao e outras);
Relacionais: utilizados para relacionar dois elementos ou dados. (Maior, menor, igual);
Lgicos: utilizados para efetuar operaes lgicas booleanas entre dois ou mais elementos
ou dados. Este tipo de operao somente pode chegar a um dos resultados: verdadeiro (1) ou
falso (0), e so frequentemente utilizados na criao de testes condicionais com mltiplas
variveis. (E lgico, OU lgico, NO lgico);
Lgicos bit a bit: utilizados para realizar operaes lgicas bit a bit entre um ou mais
elementos ou dados.
Memria: so operadores utilizados para efetuar operaes em relao memria do
dispositivo. (Atribuio (=), & e *)
Pgina 83
www.picminas.com.br
Copyright
TIPO PONTO-FLUTUANTE
O tipo ponto-flutuante de 32 bits nativo para o MPLAB C18 usado ou o tipo de dados Double ou
o Float. A faixa do ponto-flutuante est documentada na tabela 6:
Pgina 84
www.picminas.com.br
Copyright
MODIFICADORES DE TIPO
A linguagem C admite comandos especiais para modificar os tipos bsicos, de forma a obtermos
outros tipos de dados. Esses modificadores so: signed, unsigned, shot e long. (PEREIRA, 2008)
O modificador signed pode ser utilizado para modificar um tipo base de dados de forma que ele
possa representar tanto nmeros positivos como nmeros negativos. (PEREIRA, 2008)
O modificador unsigned define um tipo sem sinal. (PEREIRA, 2008)
O modificador short utilizado para definir uma varivel com tamanho menor que o tipo
modificado, ou seja, uma verso reduzida do tipo especificado. Assim, se especificarmos uma varivel como
sendo do tipo short int, ela ser uma verso reduzida do tipo int. (PEREIRA, 2008)
Finalmente, o modificador long, utilizado para ampliar a magnitude de representao do tipo
especificado. Um tipo de dados long int, por exemplo, ter um tamanho de 32 bits, ou seja, ocupar mais
espao na memria RAM do PIC. (PEREIRA, 2008)
MODIFICADORES DE ARMAZENAMENTO
Os modificadores de armazenamento so elementos especiais utilizados para controlar a forma
como o compilador ir lidar com o armazenamento da varivel. (PEREIRA, 2008)
Pgina 85
www.picminas.com.br
Copyright
MPLAB C18 suporta os modificadores de armazenamento ANSI (auto, extern, register, static e
overlay), alm desse tipos de classes/funes ele tambm tem outros dois tipos:
AUTO
utilizado para definir o mbito ou escopo da varivel local ou funo/classe definida. No
necessrio escrever o modificador, pois ele usado como padro na linguagem C. (PEREIRA, 2008)
EXTERN
utilizado para definir varivel ou funes/classes externas ao programa. Isto muito utilizado na
criao de programas grandes e complexos, utilizando diversos mdulos separados e que so depois
ligados por meio de um programa especial chamado linker. (PEREIRA, 2008)
REGISTER
utilizado para instruir ao compilador que tente armazenar a varivel diretamente em um
registrador da CPU. (PEREIRA, 2008)
STATIC
As variveis ou funes/classes declaradas como static funcionam como globais no sentido que
no sero destrudas ao trmino da execuo. Static utilizado quando necessitamos manter uma varivel
ou funo/classe em uma posio permanente na memria. O parmetro static vlido apenas quando o
compilador est operando em modo Non-extended. (PEREIRA, 2008) O padro de classe de uma funo
auto. Isso pode ser modificado explicitamente com a palavra static antes da funo.
OVERLAY (Superposio)
O compilador MPLAB C18 introduziu um armazenamento de classe do overlay. O Tipo overlay
aplicado somente quando o compilador est operando no modo Non-extended (ver arquivo
MPLAB_C18_Users_Guide_51288c.pdf seo 1.2.5 Selecting the Mode). O overlay deve ser aplicado
em variveis locais (mas no em parmetros formais, definio de funes ou variveis globais). O overlay
ir atribuir os smbolos associados uma funo especfica, uma seo esttica de overlay. Mais informaes
esto no arquivo MPLAB_C18_Users_Guide_51288c.pdf, disponvel na rea do Aluno.
4.2.3 PRAGMAS
Cada aplicao em C suporta algumas caractersticas nicas para a sua mquina ou sistema
operacional. Alguns programas, por exemplo, necessitam de exercer um controle preciso sobre reas da
memria onde os dados so colocados ou ento controlar a maneira como certas funes recebem
parmetros. A diretiva #pragma uma maneira para cada compilador oferecer para a mquina ou o sistema
operacional especfico recursos compatveis com a linguagem C para fazer esse controle.
Atravs da diretiva #pragma, o programa pode definir diretivas que podem ser passadas ao
compilador. Se o compilador no identificar o nome da diretiva, ele simplesmente ignora #pragma sem
qualquer aviso ou mensagem de ERRO. Pragmas podem ser usados em declaraes condicionais, para
Pgina 86
www.picminas.com.br
Copyright
Uma seo diretiva pragma sem nome redefine a alocao dos dados do tipo associado para uma
seo padro do mdulo corrente. Por exemplo:
Pgina 87
www.picminas.com.br
Copyright
SECTION
NAME=config
START=0x300000
NAME=CONFIG
ROM=config
END=0x30000D
PROTECTED
A diretiva #pragma romdata CONFIG usada para definir a seo atual romdata para a seo
nomeado CONFIG. A configurao do dispositivo pode ser especificado usando a macro _CONFIG_DECL e
o #define localizado no arquivo cabealho especfico do porcessador. O exemplo abaixo mostra um
configurao especfica explicada na tabela 7:
#include <p18f4550.h>
#pragma romdata CONFIG
_CONFIG_DECL (_CP_ON_1L,
_OSCS_ON_1H & _OSC_LP_1H,
_PWRT_ON_2L & _BOR_OFF_2L & _BORV_42_2L,
_WDT_OFF_2H & _WDTPS_1_2H,
_CCP2MUX_OFF_3H,
_CONFIG4L_DEFAULT);
#pragma romdata
void main (void)
{
...
}
Pgina 88
www.picminas.com.br
Copyright
Descrio
mcc18.exe
mcc18-extended.exe
mcc18-traditional.exe
cpp18.exe
Esse o pr-processador C.
mplink.exe
Esse o programa driver para o linker. Ele pega a entrada do linker script,
arquivos objetos e arquivos de bibliotecas e passa-os para o _mplink.exe. Ele
ento leva o arquivo de sada COFF pelo _mplink.exe e passa-o para
mp2cod.exe e mp2hex.exe.
_mplink.exe
Esse o linker. Ele pega o linker script de entrada (por exemplo pic18f4550.lkr),
o arquivo objeto (.o) e os arquivos bilbiotecas e o output executvel COFF (por
exemplo file.out ou file.cof). Esse arquivo COFF o resultado no atribudo dos
endereos de dados e o cdigo para a entrada de arquivos objeto e arquivos de
referncia a arquivos objetos e bibliotecas. _mplink.exe tambm
opcionalmente produz o arquivo map (Por exemplo file.map) que contm
informaes detalhadas da alocao do cdigo e dados.
mp2cod.exe
mp2hex.exe
mplib.exe
mpasm.exe
Pgina 89
www.picminas.com.br
Copyright
www.picminas.com.br
Copyright
fechar s o projeto, sem se preocupar em fechar todas as janelas abertas no ambiente integrado.
importante lembrar que o MPLAB se integra ao ambiente Windows, permitindo cpia de arquivos, de textos
de um aplicativo para outro de uma forma bem simplificada.
Ao executar o MPLAB, dever visualizar uma janela como a da figura abaixo:
A barra de ttulo ir conter o nome do projeto aberto. A janela Workspace ir mostrar a estrutura
dos arquivos associados ao nosso projeto. A janela Output vai ser a janela informativa sobre os resultados
de buscas de variveis e resultado de compilao.
O prximo passo criar um projeto usando o PROJECT WIZARD. Um projeto o caminho onde
os arquivos so organizados para serem compilados e montados. Para criar o primeiro projeto clique no
menu Project e em seguida selecione a opo Project Wizard.
A partir da janela Welcome, que ir aparecer, clique em Avanar para avanar (Figura 4.4):
Pgina 91
www.picminas.com.br
Copyright
Na janela seguinte, Step One, permite a seleo do dispositivo (No nosso curso usaremos o
PIC18F4550) (Figura 4.5). Aps ter certeza que escolheu o dispositivo certo, clique em Avanar:
Na prxima janela, Step Two, devemos escolher a linguagem (compiladores) que ser usada(os)
no projeto. Na opo Active Toolsuite, selecione Microchip C18 Toolsuite (voc estar escolhendo o
compilador C18 que permite programar em C). Em Toolsuite Contents, esto os arquivos usados pelo
Pgina 92
www.picminas.com.br
Copyright
Na janela Step Three permite escolher o diretrio a ser salvo e o nome do projeto. Ao escolher o
diretrio tome cuidado para no escolher um caminho muito longo, no mximo 62 caracteres, caso o
caminho seja acima desse limite vai dar erro de compilao do projeto. Clique em Browser e escolha o
diretrio do projeto. Depois de escolher o diretrio d um nome ao projeto. Aps isso, clique em Avanar.
(Figura 4.7)
Pgina 93
www.picminas.com.br
Copyright
A janela Step Four permite adicionar arquivos ao seu projeto. Caso haja um arquivo para ser
adicionado selecione o arquivo e clique em ADD, para remover algum arquivo adicionado selecione-o e
clique em REMOVE. (Figura 4.8)
Ao adicionar um arquivo existente, voc ter algumas opes de modos de adio de arquivos.
Esse modos afetam se o projeto vai referenciar o arquivo pelo caminho relativo ou absoluto, o qual impacta
diretamente na portabilidade do projeto e no comportamento do Save Project As.
Caminhos relativos tipicamente melhoram a portabilidade do projeto, quando o caminho absoluto
tende a fazer o projeto menos porttil. Save Project As usa caminhos relativos para os arquivos a serem
copiados, quando o projeto salvo em um novo diretrio. Save Project As usa caminhos absolutos,
apenas para ajustar o caminho do arquivo, quando o projeto salvo em um novo diretrio.
O significado de cada opo est descrita abaixo:
[A] Auto Permite o MPLAB IDE adivinhar se o caminho do arquivo pode ser relativo ou
absoluto baseando na localizao do arquivo. Se o diretrio do projeto contm o arquivo, a
referncia um caminho relativo. Caso contrrio, a referncia um caminho absoluto.
[U] User Referencia um arquivo com caminho relativo. Esta a maneira preferida para
adicionar arquivos criados especificamente para esse projeto.
[S] System Referencia um arquivo com caminho absoluto. Existem casos quando esse
modo muito til, mas esses caminhos muitas vezes exigem correo quando o projeto
mudado de um sistema para outro.
[C] Copy Copia o arquivo para o diretrio do projeto e adiciona um caminho relativo para o
arquivo copiado. Opcionalmente, editar o nome para renomear a copia local do arquivo. Este
modo fornece uma maneira conveniente de adicionar arquivos linkers scripts e modelos de
cdigo fonte no projeto, sem introduzir o caminho absoluto.
Aps adicionar os arquivos necessrios, clique em AVANAR. Caso no tenha ainda nenhum
arquivo para ser adicionado, clique em AVANAR.
Na janela seguinte Summary contm o resumo do projeto criado, estando tudo em ordem, clique
em CONCLUIR. (Figura 4.9)
Pgina 94
www.picminas.com.br
Copyright
Procedimento
1) Selecione o tipo de arquivo que voc deseja adicionar (Source,
Header files, Object files, Library files, Linker scripts ou Other files);
2) Clique com o boto direito na opo selecionada Add Files... (Figura 4.11)
Pgina 95
www.picminas.com.br
Copyright
3) Na janela Add Files to Project, adicione o arquivo desejado, no caso estamos adicionando o arquivo
main.c. (Figura 4.12)
Pgina 96
www.picminas.com.br
Copyright
7) Nessa janela, com o contedo do arquivo, voc pode editar conforme for necessrio para o seu projeto.
www.picminas.com.br
Copyright
Procedimento
1) Conforme aprendido anteriormente, crie um novo projeto chamado exemplo01 no MPLAB IDE e no
adicione arquivo algum.
2) Crie um arquivo em branco:
Voc pode fazer isso de duas maneiras:
Clicando no menu File e escolhendo a opo New (Ctrl+N);
Ou na barra de ferramentas clicando no boto .
Salve o arquivo, nomeando-o como desejar (principal.c, teste.c, main.c etc), porm a extenso
deve ser .c, como padro da boa programao vamos nome-lo de main.c. Clicando no menu File e
escolhendo a opo Save As, possvel salv-lo.
O arquivo criado e salvo ainda no faz parte do nosso projeto, pois ele no est adicionado na
janela do projeto (Workspace). Adicione o arquivo na seo Source Files, conforme ensinado anteriormente.
3) Feito o segundo passo, hora de montar o cdigo que conter dentro do arquivo main.c criado
anteriormente. De acordo com a figura 4.14 abaixo, monte seu cdigo (para auxiliar faa o download do
arquivo exemplos em C disponvel no site na rea do Aluno e use o arquivo main.c dentro da pasta
Exemplo01).
Pgina 98
www.picminas.com.br
Copyright
www.picminas.com.br
Copyright
Ao alterar o processador utilizado no programa, pode ser necessrio tambm, alterar a famlia
do processador na opo disponvel clicando no menu Configure e escolhendo a opo
Select Device. (Figura 4.15)
www.picminas.com.br
Copyright
7) Agora vamos detalhar a funo main( ), a figura 4.17 mostra detalhes da funo main( ):
8) Dentro da funo main ( ) que faremos nosso primeiro exemplo. Faa um cdigo em C conforme a
figura 4.18:
www.picminas.com.br
Copyright
ii. Variveis;
iii. Comando de Controle;
iv. Funes:
e. A primeira linha dentro do bloco de comandos uma declarao de duas variveis do tipo
inteiro.
f. As duas linhas seguintes so atribuies de valores as essas duas variveis criadas.
g. Note que ao final de cada linha de comando o ltimo caractere um ponto-e-vrgula (;),
elemento usado para delimitar o final de um comando. (PEREIRA, 2008)
h. Na linha seguinte, encontramos um while (maior < menor). Esse um comando de controle,
utilizado para repetio de um determinado bloco de instrues. Um while fica em loop
enquanto a condio for satisfeita (na exemplo enquanto a varivel maior tiver um valor menor
que a varivel menor). O bloco de comandos do while tambm encontra-se entre chaves.
i. Em seguinte, vem dois comandos: o primeiro para somar uma unidade varivel maior e o
outro para diminuir uma unidade a varivel menor.
9) Voc pode acompanhar a simulao do programa criado e verificar se realmente est funcionando
corretamente. Para isso clique no menu Debugger e escolha a opo Select Tool, provavelmente vai
estar selecionada a opo None, selecione a opo 3 MPLAB SIM (esse o simulador integrado ao
MPLAB). (Figura 4.19)
10) Ao selecionar o simulador ir aparecer uma srie de cones adicionais na barra de ferramentas do
MPLAB (Figura 4.20).
A tabela 8 mostra mais detalhadamente cada um dos botes, com suas respectivas teclas de
atalho:
Pgina 102
www.picminas.com.br
Copyright
11) Aparecer uma aba MPLAB SIM na janela Output. (Figura 4.21)
12) A barra de status indicar que o MPLAB est no modo de Simulao. (Figura 4.22)
13) Alm de observar a simulao passo-a-passo, atravs do MPLA SIM, possvel acompanhar o valores
das variveis criadas pelo usurio e tambm dos SFRs (Special Function Registers Registradores
com funes especiais). Clique no menu View e escolha a opo Watch (Figura 4.23). A janela que ir
abrir possvel visualizar o contedo das variveis ou dos SFRs. (Figura 4.24)
Pgina 103
www.picminas.com.br
Copyright
No combo de seleo de variveis, selecione a varivel maior, clique no boto Add Symbol, depois
selecione a varivel menor, clique no boto Add Symbol e acompanhe os valores de cada uma quando
clicar. O valor por padro estar em base hexadecimal, para alterar a base clique com o boto direito sobre
a varivel e selecione Properties..., na janela que ir se abrir selecione no campo Format a opo Decimal
(Figura 4.25). Clique em OK.
14) Aps feito isso, voc poder acompanhar os valores das variveis criadas no seu primeiro exemplo em
linguagem C. (Figura 4.26)
Pgina 104
www.picminas.com.br
Copyright
15) Por ltimo, possvel colocar pontos de parada no cdigo, basta clicar com o boto direito no ponto que
deseje adicionar uma parada e selecionar a opo Set Breakpoint, para remover s clicar com o
boto direito na linha que contm o ponto de parada e selecionar a opo Remove Set Breakpoint.
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
4.4.3 IDENTIFICADORES
Identificadores so nomes dados pelo programador a variveis, funes e outros elementos da
linguagem C. Identificadores podem ter nmeros, letras e o nico outro caractere que pode ser utilizado o
sublinhado _ (No use nenhum tipo de acento). Alm disso, um identificador pode somente ser iniciado
por um letra ou sublinhado, nunca por um nmero. (PEREIRA, 2008)
Dicas quanto aos nomes de identificadores (variveis):
uma prtica tradicional do C, usar letras minsculas para nomes de variveis e maisculas
para nomes de constantes. Isto facilita na hora da leitura do cdigo;
Quando se escreve cdigo usando nomes de variveis em portugus, evita-se possveis
conflitos com nomes de rotinas encontrados nas diversas bibliotecas, que so em sua maioria
absoluta, palavras em ingls.
A tabela 10 mostra alguns exemplos de identificadores vlidos e invlidos:
variavel
Vlido
variavel1
Vlido
1abc
Invlido
varivel
Invlido
_teste_2
Vlido
return
Invlido
Pgina 105
www.picminas.com.br
Copyright
COMANDO IF
O comando if (em portugus se) utilizado em teste condicionais, sua sintaxe simples:
if (condio) comando;
A expresso, na condio, ser avaliada, isso significa que se a condio for verdadeira, ento ir
executar o comando especificado. Caso contrrio no executar o comando. Esta condio pode ser
qualquer expresso que possa ser avaliada como verdadeira ou falsa, ou seja, uma proposio booleana.
(PEREIRA, 2008)
O if pode ser complementado com comando else e sua sintaxe fica dessa maneira:
if(condio)comando_1;
else comando_2;
Caso a condio seja verdadeira, executar a comando_1, caso contrrio executar a
comando_2.
No caso de dentro do if ou do else existir um bloco de comandos, a sintaxe deve ser dessa
maneira:
if(condio)
{
comando_1;
comando_2;
}
else
{
comando_3;
comando_4;
}
EXEMPLO 02
1) Para exercitar vamos criar um novo projeto no MPLAB com o nome de exemplo02.
2) Clique no menu View e selecione as opes Project e Output.
3) Crie o arquivo main.c e adicione-o ao projeto (Cuidado para no adicionar o arquivo do exemplo
anterior, pois o MPLAB guarda o ltimo caminho usado para essa ao).
4) Crie o cabealho, include e os outros conforme ensinado anteriormente.
5) Crie a funo void main ( ).
6) Dentro da funo void main ( ), digite o cdigo abaixo (Figura 4.27):
Pgina 106
www.picminas.com.br
Copyright
COMANDO SWITCH
O comando switch usado para tomada deciso, quando a comparao de uma varivel feita
com diversos valores, o que se for feito com if torna o cdigo bem confuso e pouco eficiente.
Abaixo segue a sintaxe do switch:
switch (varivel)
{
case constante_1:
comando_1;
break;
case constante_2:
comando_2;
break;
.
.
.
case constante_n:
comando_n;
break;
default
comando_default;
}
O switch aceita apenas valores constantes especificados na clusula case. No caso se a varivel
e a constante possuem o mesmo valor, ento os comandos da clusula case sero executados. Sempre
aps a sequncia de comandos da clusula case necessrio usar a clusula break. Se no usarmos esta
clusula, todos os comandos seguintes ao case especificado sero executados at que encontre uma
clusula break ou o final do bloco switch. (PEREIRA, 2008)
EXEMPLO 03
1) Para exercitar vamos criar um novo projeto no MPLAB com o nome de exemplo03.
Pgina 107
www.picminas.com.br
Copyright
COMANDO WHILE
Com j foi visto no primeiro exemplo, o comando while (em portugus enquanto), usado para
especificar uma estrutura ou lao de repetio, em que um ou mais comandos so repetidamente
executados enquanto a condio de validao for verdadeira. (PEREIRA, 2008) Sua sintaxe simples:
while(condio) comando;
Cada vez que o comando dentro do while executado a condio testada novamente, e o loop
executado at o momento em que a condio se torna falsa. Essa condio pode ser qualquer expresso
que possa assumir o valor verdadeiro ou falso (expresso booleana). possvel fazer um loop infinito, para
tanto basta colocar uma expresso eternamente verdadeira na condio.
Quando o bloco de comandos do while possui mais de um comando necessrio o uso de
chaves e a sintaxe fica dessa maneira:
while(condio)
{
Comando1;
Comando2;
}
Pgina 108
www.picminas.com.br
Copyright
EXEMPLO 04
1) Para exercitar vamos criar um novo projeto no MPLAB com o nome de exemplo04.
2) Clique no menu View e selecione as opes Project e Output.
3) Crie o arquivo main.c e adicione-o ao projeto (Cuidado para no adicionar o arquivo do exemplo
anterior, pois o MPLAB guarda o ltimo caminho usado para essa ao).
4) Crie o cabealho, include e os outros conforme ensinado anteriormente.
5) Crie a funo void main ( ).
6) Dentro da funo void main ( ), digite o cdigo abaixo (Figura 4.29):
COMANDO FOR
O lao for uma estrutura de repetio das mais comuns. O for usado para repetir um comando
ou um bloco de comandos por diversas vezes. A sintaxe do for :
for (inicializao ; condio ; incremento) comando;
Quando o bloco de comandos do for possui mais de um comando necessrio o uso de chaves e
a sintaxe fica dessa maneira:
for (inicializao ; condio ; incremento)
{
comando1;
comando2;
...
}
Pgina 109
www.picminas.com.br
Copyright
Podemos ver, ento, que o for executa a inicializao incondicionalmente e testa a condio. Se a
condio for falsa ele no faz mais nada. Se a condio for verdadeira ele executa o comando ou o bloco de
comandos dentro dele, faz o incremento e volta a testar a condio. Ele fica repetindo estas operaes at
que a condio seja falsa. Um ponto importante que podemos omitir qualquer um dos elementos do for,
isto , se no quisermos uma inicializao poderemos omiti-la.
Cada uma das trs sees do comando for possui uma funo distinta conforme descrita abaixo:
Inicializao: esta seo conter uma expresso vlida utilizada normalmente para
inicializao da varivel de controle do lao for.
Condio: esta seo pode conter a condio a ser avaliada para decidir pela continuidade
ou no do lao de repetio. Enquanto a condio for avaliada como verdadeira, o lao for
permanecer em execuo.
Incremento: esta seo pode conter uma ou mais declaraes para incremento da varivel de
controle do lao.
EXEMPLO 05
1) Para exercitar vamos criar um novo projeto no MPLAB com o nome de exemplo05.
2) Clique no menu View e selecione as opes Project e Output.
3) Crie o arquivo main.c e adicione-o ao projeto (Cuidado para no adicionar o arquivo do exemplo
anterior, pois o MPLAB guarda o ltimo caminho usado para essa ao).
4) Crie o cabealho, include e os outros conforme ensinado anteriormente.
5) Crie a funo void main ( ).
6) Dentro da funo void main ( ), digite o cdigo abaixo (Figura 4.30):
EXEMPLO 06
1) Para exercitar vamos criar um novo projeto no MPLAB com o nome de exemplo06.
2) Clique no menu View e selecione as opes Project e Output.
Pgina 110
www.picminas.com.br
Copyright
3) Crie o arquivo main.c e adicione-o ao projeto (Cuidado para no adicionar o arquivo do exemplo
anterior, pois o MPLAB guarda o ltimo caminho usado para essa ao).
4) Crie o cabealho, include e os outros conforme ensinado anteriormente.
5) Crie a funo void main ( ).
6) Dentro da funo void main ( ), digite o cdigo abaixo (Figura 4.31):
EXEMPLO 07
1) Para exercitar vamos criar um novo projeto no MPLAB com o nome de exemplo07.
2) Clique no menu View e selecione as opes Project e Output.
3) Crie o arquivo main.c e adicione-o ao projeto (Cuidado para no adicionar o arquivo do exemplo
anterior, pois o MPLAB guarda o ltimo caminho usado para essa ao).
4) Crie o cabealho, include e os outros conforme ensinado anteriormente.
5) Crie a funo void main ( ).
6) Dentro da funo void main ( ), digite o cdigo abaixo (Figura 4.32):
Pgina 111
www.picminas.com.br
Copyright
COMANDO DO-WHILE
A ltima estrutura de repetio disponvel na linguagem C o comando do (em portugus faa).
O comando do utilizado juntamente com o comando while para criar uma estrutura de repetio com
funcionamento ligeiramente diferente do while e for tradicionais. (PEREIRA, 2008)
De fato, a diferena entre a estrutura while tradicional e a estrutura do-while que a ltima
realiza a avaliao da condio de teste no final de cada ciclo. O do-while garante que o bloco de
comandos ser executado pelo menos uma vez. (PEREIRA, 2008)
. Sua sintaxe descrita abaixo:
do
{
comandos;
} while (condio);
EXEMPLO 08
1) Para exercitar vamos criar um novo projeto no MPLAB com o nome de exemplo08.
2) Clique no menu View e selecione as opes Project e Output.
3) Crie o arquivo main.c e adicione-o ao projeto (Cuidado para no adicionar o arquivo do exemplo
anterior, pois o MPLAB guarda o ltimo caminho usado para essa ao).
4) Crie o cabealho, include e os outros conforme ensinado anteriormente.
5) Crie a funo void main ( ).
6) Dentro da funo void main ( ), digite o cdigo abaixo (Figura 4.33):
Pgina 112
www.picminas.com.br
Copyright
COMANDO GOTO
Vamos mencionar o goto (em portugus v para) apenas para que voc saiba que ele existe,
pois em linguagem de alto nvel, no muito recomendvel o seu uso (ele muito usado em linguagem de
baixo nvel como o Assembly, Basic). O goto o ltimo comando de controle de fluxo. Ele pertence a uma
classe parte: a dos comandos de salto incondicional. O goto realiza um salto para um local especificado.
Este local determinado por um rtulo. Um rtulo, na linguagem C, uma marca no programa. Voc d o
nome que quiser a esta marca. Sua sintaxe : (PEREIRA, 2008)
nome_do_rtulo:
....
goto nome_do_rtulo;
....
EXEMPLO 09
1) Para exercitar vamos criar um novo projeto no MPLAB com o nome de exemplo09.
2) Clique no menu View e selecione as opes Project e Output.
3) Crie o arquivo main.c e adicione-o ao projeto (Cuidado para no adicionar o arquivo do exemplo
anterior, pois o MPLAB guarda o ltimo caminho usado para essa ao).
4) Crie o cabealho, include e os outros conforme ensinado anteriormente.
5) Crie a funo void main ( ).
6) Dentro da funo void main ( ), digite o cdigo abaixo (Figura 4.34):
www.picminas.com.br
Copyright
numero;
char
ch, letra;
float
pi;
numero=10;
char
4.4.6 CONSTANTES
Constantes so valores (numricos ou no) mantidos fixos e no podem ser alterados pelo
programa durante sua execuo. (PEREIRA, 2008)
Sua sintaxe :
const nome_da_constante = valor;
Por exemplo:
const contador = 10
const val2 = -5
De maneira geral, qualquer tipo de dado pode ser utilizado para definir uma constante, cabendo
apenas ao programador representar o valor dela adequadamente. Assim, qualquer constante pode ser
declarada simplesmente especificando o nome do identificador e o seu valor.
Pgina 114
www.picminas.com.br
Copyright
Cdigo
\b
\f
\n
\t
\"
\'
\0
\\
\v
\a
\r
\N
\xN
Significado
Retrocesso ("back")
Avano de formulrio ("form feed")
Nova linha ("new line")
Tabulao horizontal ("tab")
Aspas
Apstrofo
Nulo (0 em decimal)
Barra invertida \
Tabulao vertical
Sinal sonoro ("beep")
Retorno de carro (Enter)
Constante octal (N o valor da constante)
Constante hexadecimal (N o valor da constante)
Tabela 11: Cdigo de barra invertida.
Base numrica
99
Decimal
099
Octal
0x99
Hexadecimal
0b99999999
Binrio
valor1;
valor1 = 50;
// decimal
valor1 = 0x50;
// hexadecimal
valor1 = 050;
// octal
valor1 = 0b01010000;
// binrio
4.4.7 OPERADORES
A linguagem C possui uma srie de operadores, que podem ser classificados em: atribuio,
aritmticos, relacionais, lgicos, lgicos bit a bit, de memria e outros.
Esta caracterstica um dos pontos positivos da linguagem, j que o C agrega aos operadores
comumente encontrados nas linguagens de alto nvel, os operadores encontrados frequentemente em
linguagem de baixo nvel como o Assembly.
Pgina 115
www.picminas.com.br
Copyright
ATRIBUIO
Em C o operador de atribuio o =, usado para atribuir um determinado valor a uma varivel.
(PEREIRA, 2008) Por exemplo:
x = 10;
y = x;
Repare que a atribuio sempre avaliada da direita para a esquerda e no possvel realizar
uma atribuio no sentido inverso. (PEREIRA, 2008)
ARITMTICOS
So utilizados para determinar ao compilador que efetue determinada operao matemtica em
relao a um ou mais dados (PEREIRA, 2008). So eles (tabela 13):
Operador
Ao
Adio
Multiplicao
Diviso
++
Incremento
--
Decremento
Uma ateno especial deve-se ter com os operadores aritmticos incremento e decremento, Eles
servem para somar 1 e diminuir 1 de uma varivel, respectivamente.
A forma geral para utilizao destes dois operadores :
varivel ++; ou varivel --;
Ou ainda por meio de uma atribuio:
variavel_1 = variavel_2 ++; ou variavel_1 = variavel_2 --;
Observe que em ambos os casos, atribuio ocorre da seguinte forma: o valor da varivel
variavel_2 armazenado em variavel_1 e aps isso, incrementado ou decrementado. (PEREIRA,
2008)
No entanto, em C tambm possvel escrever:
variavel_1 = ++ variavel_2; ou variavel_1 = -- variavel_2;
Nestes casos, a operao de incremento/decremento realizada antes da atribuio.
RELACIONAIS
So utilizados em testes condicionais para determinar a relao existente entre os dados. Esses
operadores servem para construir expresses condicionais (PEREIRA, 2008). So eles (tabela 14):
Pgina 116
www.picminas.com.br
Copyright
Operador
Ao
>
Maior que
>=
Maior ou igual a
<
Menor que
<=
Menor ou igual a
==
Igual a
!=
Diferente
LGICOS BOOLEANOS
So utilizados para realizar conjunes, disjunes ou negaes entre elementos em um teste
condicional. Os operadores lgicos somente podem resultar em um dos valores: verdadeiro ou falso. Eles
so de suma importncia na construo de testes condicionais. Com esses operadores podemos relacionar
diversas condies diferentes em um mesmo teste lgico. (PEREIRA, 2008). So eles (tabela 15):
Operador
Ao
&&
AND (E)
||
OR (OU)
NOT (NO)
Ao
&
AND (E)
OR (OU)
>>
Deslocamento direita
<<
Deslocamento esquerda
www.picminas.com.br
Copyright
c = c<<1;
c = c<<2;
c = c<<3;
c = c>>1`;
MEMRIA
Tambm chamados de operadores de ponteiros, so elementos de grande importncia na
linguagem C. De fato, os ponteiros so considerados um dos pilares da linguagem C, pois permitem o
acesso direto da memria do sistema (PEREIRA, 2008). So eles (tabela 17):
Operador
&
*
Ao
Endereo do operando
Contedo do endereo apontado pelo operando
Tabela 17: Operadores de memria.
O operador unrio & utilizado para retornar o endereo de memria do seu operando. Isto
significa que se escrevermos: (PEREIRA, 2008)
endereco_a = &a;
Teremos que a varivel endereco_a conter o endereo em que est armazenada a variavel
a. (PEREIRA, 2008)
O operador unrio * utilizado para retornar o contedo da posio de memria endereada pelo
operando que o segue. Vejamos o exemplo: (PEREIRA, 2008)
a = *endereco_a;
O que far com que o valor armazenado no local apontado pela varivel endereco_a seja
atribudo varivel a. (PEREIRA, 2008)
OUTROS OPERADORES
Alm de todos esses operadores citados anteriormente, existem outros no to conhecidos em C.
(PEREIRA, 2008). So eles (tabela 18):
Operador
Ao
Separador de expresses
Separador de estruturas
->
(tipo)
sizeof
O operador ternrio ? utilizado para substituir uma expresso condicional baseada no comando
IF e tem esse nome devido ao fato de ser composto por trs expresses. (PEREIRA, 2008)
Sua sintaxe :
Varivel = Expresso1? Expresso2; Expresso3;
Pgina 118
www.picminas.com.br
Copyright
O que significa: avalie a expresso 1 se ela for verdadeira atribua varivel a expresso 2; caso
contrrio, atribua a expresso 3. (PEREIRA, 2008) Por exemplo:
int
x, y;
x = 5;
o operador sizeof utilizado para retornar a quantidade de memria utilizada por uma
determinada varivel ou determinado tipo de dado. (PEREIRA, 2008)
A principal aplicao deste tipo de operador permitir ao programador controlar a ocupao de
memria pelo programa, auxiliando assim a portabilidade do programa. (PEREIRA, 2008)
ASSOCIAO DE OPERADORES
A linguagem C admite associar operadores e montar uma espcie de expresso abreviada
equivalente a expresso original. Na tabela 19, podemos encontrar os tipos de abreviaes admitidas em C.
Expresso Original
x=x+k;
x=x-k;
x=x*k;
x=x/k;
x=x&k;
x=x|k;
x=x^k;
x=x>>k;
x=x<<k;
x=x&k;
Expresso Equivalente
x+=k;
x-=k;
x*=k;
x/=k;
x&=k;
x|=k;
x^=k;
x>>=k;
x<<=k;
x&=k;
Associatividade
esq-dir
dir-esq
esq-dir
esq-dir
esq-dir
esq-dir
esq-dir
esq-dir
esq-dir
esq-dir
esq-dir
esq-dir
dir-esq
dir-esq
esq-dir
Pgina 119
www.picminas.com.br
Copyright
Pgina 120
www.picminas.com.br
Copyright