Você está na página 1de 16

Capı́tulo 1

Introdução às ferramentas básicas para a


implementação de sistemas
microcontrolados

Neste capítulo se apresenta uma introdução aos procedimentos utilizados para a resolução de pro-
blemas através do uso de microcontroladores. Além do uso de microcontorladores, serão apresen-
tados neste capítulo algumas ferramentas utilizadas para a resolução de problemas. Uma destas
ferramentas é um procedimento que, quando seguido à risca pode ser utilizado para a resolução de
qualquer problema, não somente os relacionados à programação de microcontroladores ou com-
putadores pessoais, mas a qualquer problema mais complexo e que necessite de vários passos para
ser solucionado. Outra ferramenta apresentada aqui são os fluxogramas que são representações
visuais de um fluxo de ações e que podem ser elaborados para ilustrar qualquer procedimento, não
somente os relacionados à programação. A última ferramenta apresetada é a representação em
máquina de estados finitos, ou somente máquina de estados. Uma máquina de estados é uma re-
presentação de estados bem definidos que ocorrem de acordo com algumas situações predefinidas.
Estas ferramentas são apresentadas em seções dedicadas a cada uma das técnicas com exem-
plos de aplicação para auxiliar na compreensão.

1.1 Introdução
Os microcontroladores são dispositivos integrados que possuem uma unidade de processamento,
memória e dispositivos de entrada e saída e são utilizados para controlar equipamentos que neces-
sitam de um controle automático digital.
As ferramentas utilizadas na programação de microcontroladores serão apresentadas ao longo
deste texto e está organizada da seguinte maneira.
Neste capítulo se apresenta uma breve discussão a respeito da resolução de problems de forma
geral, com foco na elaboração de programas, na seção 1.2.
Os fluxogramas são ferramentas importantes pois permitem uma visualização dos passos para
a resolução de um problema, principalmente quando o mesmo envolve programação. Na seção
1.3 são apresentados os blocos básicos utilizados na elaboração de fluxogramas.
No capítulo ?? se apresenta um breve histórico da evolução dos microprocessadores e mi-
crocontroladores. Neste capítulo também se apresenta uma descrição geral da estrutura de um
microcontrolador.
O capítulo ?? apresenta o PIC16F84A, seus periféricos e algumas características do micro-
controlador. Neste capítulo se apresentam os periféricos com suas funções e com as configurações

1
2 Introdução às ferramentas básicas para a implementação de sistemas microcontrolados

para que os mesmos possam operar corretamente. O capítulo traz vários exemplos de utilização
do PIC16F84A para melhor ilustrar o conteúdo apresentado.
O capítulo ?? apresenta o PIC16F628A, seus periféricos e algumas características do micro-
controlador. Este capítulo tmabém traz uma comparação deste microcontrolador com o PIC16F84A.
Neste capítulo se apresentam os periféricos com suas funções e com as configurações para que os
mesmos possam operar corretamente. O capítulo traz vários exemplos de utilização do PIC16F628A
para melhor ilustrar o conteúdo apresentado.

1.2 Passos para a resolução de um problema


Para a resolução de um problema qualquer, não somente os problemas relacionados a microcontro-
ladores ou a programação em geral se podem seguir os seguintes passos para orientar a resolução
dos problemas. Apesar de que os passos são direcionados para o desenvolvimento de programas
para computador ou para microcontroladores.
Estes passos tem por finalidade orientar o aluno com dificuldades de entendimento para que o
mesmo possa superar as dificuldades e resolver os problemas usando uma metodologia definida e
preestabelecida. Estes passos são listados abaixo e serão descritos com mais detalhe a continuação.

1. Entender o enunciado;

2. Entender os problemas embutidos no enunciado;

3. Elaborar soluções para cada um dos problemas identificados no enunciado;

4. Sequenciar as soluções elaboradas de maneira a resolver o problema principal do enunciado;

5. Elaborar um fluxograma;

6. Revisar o fluxograma, corrigindo possíveis erros de lógica ou de notação;

7. Elaborar o programa, baseando-se no fluxograma elaborado;

8. Testar e depurar o programa realizado.

1.2.1 Entender o enunciado.


O entendimento do enunciado de um problema é fundamental para que se possa chegar a uma
solução para qualquer disciplina, não somente para as disciplinas que envolvem programação.
Caso o aluno não compreenda alguma palavra no enunciado, este deve procurar o significado
da mesma, no contexto do enunciado para que possa compreender os problemas declarados.
Em alguns casos, o enunciado pode descrever um problema principal, sem muita descrição da
forma como a solução deste problema deve ser conduzida. Em outros casos, o enunciado descreve
o problema principal a ser trabalhado e direciona a solução para uma determinada implementação.
Existe ainda a situação onde o enunciado descreve boa parte da solução, devendo o aluno simples-
mente implementar as soluções descritas, da maneira mais coerente e clara possível, realizando as
conexões entre as distintas etapas do trabalho.

1.2.2 Entender os problemas embutidos no enunciado


Uma vez entendido o enunciado, os problemas dever ser retirados do mesmo. Caso algum pro-
blema seja muito grande ou seja muito complexo, este pode ser dividido em dois ou mais proble-
mas para facilitar a elaboração das soluções.
Este passo está muito atrelado ao passo anterior e muitas vezes podem ser confundidos pois
no primeiro passo o enunciado deve ser estudado com o fim de entender o que é solicitado e os
1.2. Passos para a resolução de um problema 3

problemas identificados. Neste passo, os problemas identificados no primeiro passo devem ser
trabalhados de forma a dividi-los, se for o caso ou identificá-los melhor para que uma solução
possa ser elaborada para cada um dos problemas.
Esta análise pode ser realizada iniciando-se do último problema para o primeiro, sem pro-
blema, pois as soluções elaboradas vão ser localizadas para cada um dos subproblemas identifica-
dos. A ordem de execução será verificada no passo de sequenciamento da solução.

1.2.3 Elaborar soluções para cada um dos problemas identificados no enunciado


Neste passo, se deve elaborar uma solução para cada um dos problemas identificados no passo
anterior. Esta solução deve ser uma solução elaborada sem os formalismos de um fluxograma ou
de um programa. A solução deve ser expressa em termos de ações a serem tomadas, indepente-
mente de qual será a implementação da solução. Seja ela um programa, um circuito lógico, um
procedimento de cálculo, etc.
Nesta etapa deve-se elaborar também a implementação física, no caso de microcontroladores,
pois a solução de programação estará intimamente relacionada à implementação física da solu-
ção. Neste caso a implementação da solução física deve ser elaborada antes da implementação
de progrmação pois assim as entradas e as saídas estarão definidas antes da impelemantação do
programa.
Uma vez elaborada a solução de cada um dos problemas, se deve observar se o objetivo final
do problema foi atendido. Este passo é importante para que se tenha certeza de que todos os
problemas foram identificados no passo anterior. Caso o problema não tenha sido resolvido, uma
nova iteração do passo de identificação de problemas será necessária para que se possa identificar
a necessidade e gerar uma nova solução que complete o problema.
Uma vez terminadas todas as soluções, estas devem ser identificadas para facilitar o passo
seguinte.

1.2.4 Sequenciar as soluções elaboradas de maneira a resolver o problema princi-


pal do enunciado
Uma vez terminadas as soluções de cada um dos problemas identificados no enunciado, se deve
sequenciar as soluções para que a solução final atenda aos requisitos do enunciado.
Esta etapa é muito importante porque através dela se organizam as soluções de modo a alcançar
o objetivo final. Atenção especial deve ser tomada às soluções que dependem de resultados de
soluções anteriores, neste caso se pode organizar de maneira a conseguir um resultado e depois
trabalhar com este resultado para gerar novos resultados.

1.2.5 Elaborar um fluxograma


Uma vez terminado o sequenciamento, a lista de soluções ordenadas resultante do passo de se-
quenciamento de soluções pode ser implementado em em um fluxograma. Esta implementação
fica facilitada pelo fato de que as soluções listadas estão em ordem e os alunos necessitam apenas
traduzir as soluções apresentadas para as representações utilizadas em fluxogramas.
Para a implementação do fluxograma, utilize as figuras representadas na seção 1.3 que repre-
sentam as funções básicas e as estruturas de controle normalmente utilizadas na programação na
linguagemC.
Dependendo da implementação pode ser mais interessante a implementação de uma máquina
de estados que represente o programa devido a suas características específicas. Em outros casos
pode ser interessante que se represente uma máquina de estados representando estados ou mo-
dos de funcionamento do sistema e um fluxograma representativo de cada estado ou modo de
funcionamento. Esta última possibilidade é usada quando se requer a execução de um sistema
4 Introdução às ferramentas básicas para a implementação de sistemas microcontrolados

que se assemelhe a um sistema operacional no microcontrolador. Neste caso, os estados repre-


sentam tarefas que se executam de maneira ordenada e cada tarefa pode ser representada por um
fluxograma.

1.2.6 Revisar o fluxograma, corrigindo possíveis erros de lógica ou de notação


Após a elaboração do fluxograma, deve-se revisar o fluxograma gerado para identificar erros de
notação, como linhas não orientadas, saídas de testes não identificadas, etc.
Erros de lógica também devem ser buscados, pois neste caso podem gerar erros de execução
do programa que deverão ser identificados posteriormente.
Com a prática os erros na elaboração dos fluxogramas serão menos comuns e as estruturas
apresentadas na seção 1.3 serão melhor compreendidas e já começarão a fazer parte do fluxograma
desde o seu princípio, facilitando o processo de correção e também de tradução do fluxograma em
programa na linguagem C.

1.2.7 Elaborar o programa, baseando-se no fluxograma elaborado


Com o fluxograma elaborado e revisado se pode passar à elaboração do programa que imple-
menta a solução. Esta elaboração deve seguir o fluxograma à risca pois o fluxograma faz parte da
documentação do programa.
Atenção especial deve ser tomada com as variáveis representadas no fluxograma pois o fluxo-
grama não exige inicialização de variáveis e pode ser necessária no programa final. As variáveis
também não são formalmente declaradas no fluxograma, como são no programa, exigindo atenção
no momento de declarar as variáveis do programa retirado do fluxograma.
Para a implementação do programa à partir do fluxograma as figuras representadas no fluxo-
grama devem ser convertidas em código, de acordo com as indicações da seção 1.3.

1.2.8 Testar e depurar o programa realizado


Uma vez elaborado o programa, se pode passar ao teste do mesmo e depuração, nos casos onde
este não funciona corretamente.
Este passo deve ser repetido até que o programa funcione sem erros e atenda a todos os requi-
sitos do enunciado. Caso a estrutura do mesmo necessite ser modificada para corrigir algum erro,
o fluxograma deve ser corrigido também pois ele faz parte da documentação do programa.

1.3 Fluxogramas
O foco principal desta revisão é a elaboração de fluxogramas para a solução de problemas. Estes
fluxogramas serão utilizados como base para a elaboração dos programas a serem implementados
nos microcontroladores.
Um fluxograma é a descrição de um fluxo de ações ou atividades que tem por objetivo gerar
algum resultado prático. No caso da programação, o fluxograma representa o fluxo de ações a
serem executadas pelo programa com o fim de resolver um problema.
Existem diferentes conjuntos de símbolos que podem ser utilizados na elaboração de diagra-
mas para a representação de informação. Os blocos mais utilizados em fluxogramas estão descritos
na seção 1.3.1. Em outras situações como na elaboração de diagramas relacionais de bancos de
dados, os símbolos são diferentes e não serão tratados neste texto.
Para a elaboração dos fluxogramas neste texto foi utilizado o programa Dia, disponibilizado
gratuitamente sob licença GPL (Gnu Public Licence)1 podendo ser instalado e distribuído livre-
1 Mais
informações a respeito do programa Dia, como manuais e pacotes de instalação para as plataformas Linux e
WindowsTM estão disponíveis no endereço eletrônico www.gnome.org/projects/dia/
1.3. Fluxogramas 5

mente.

1.3.1 Componentes de um fluxograma


Os fluxogramas são formados por blocos que representam uma determinada entidade em um fluxo
de informação. Estas entidades possuem uma forma padronizada e são utilizadas para representar
um fluxo de maneira lógica e de fácil entendimento.
Os símbolos mais utilizados na criação de fluxogramas estão definidos na tabela 1.1. Note que
dentro de cada um dos símbolos deve-se descrever a ação a ser executada pelo bloco. A forma do
bloco somente informa o tipo de ação a ser tomada, mas não informa as variáveis envolvidas na
ação.

Tabela 1.1: Símbolos utilizados na criação de fluxogramas.

Símbolo Descrição

Início
Terminal: Utilizado para a marcação de INÍCIO e
FIM de uma rotina expressa no fluxograma.

Ação Processamento: Utilizado para descrever um proces-


samento, por exemplo, uma assignação de valor.

Teste? Teste: Utilizada quando se necessita realizar testes


de valor envolvendo variáveis do programa.

Entrada de dado Manual: Utilizada quando uma en-


Entrada Manual trada por parte do usuário é requerida para o prosse-
guimento do programa.

Exibição: Utilizada quando o programa deve exibir


Exibição
uma informação do processo através de algum dis-
positivo de saída.

Existem outros símbolos definidos para a geração de fluxogramas, mas os mais usuais utiliza-
dos na elaboração de fluxogramas como ferramenta para a elaboração de programas são os listados
na tabela 1.1.
As conexões entre os blocos são realizadas utilizando-se linhas com flechas que indicam o
fluxo de execução das tarefas.
Conexões entre blocos de um fluxograma sem as flechas que indicam o fluxo, tornam o mesmo
ilegível, já que se torna impossível saber a direção do fluxo nele representado. Outra observação
para a elaboração de um fluxograma está na correta colocação das condições dos testes. Como um
bloco de teste pode apresentar mais de uma saída, as condições que caracterizam cada uma das
saídas deve ser corretamente indicada ao lado das saídas correspondentes. Se estas condições não
estiverem corretamente indicadas, o fluxograma também torna-se ilegível.
A tabela 1.2 representa algumas das estruturas de programação na forma de fluxogramas e a
sua tradução em programa, utilizando a linguagem C.
6 Introdução às ferramentas básicas para a implementação de sistemas microcontrolados

Tabela 1.2: Representação de algumas estruturas de programação na forma de fluxograma e


também na forma de programa, na linguagem C.

Exibição p r i n t f ( " Mensagem " ) ;

s c a n f ( "%d " ,& v a r ) ; / / ou


Entrada Manual var=getch ( ) ; / / ou
var=getche ( ) ;

F
cond

i f ( cond ) {
V
...
... }

F i f ( cond ) {
cond
...
V }
else {
... ... ...
}

F
w h i l e ( cond ) {
cond ...
}
V

...

do {
...
...
} w h i l e ( cond ) ;

F
cond
V

Continua na próxima página.


1.3. Fluxogramas 7

Tabela 1.2 – Continuação da página anterior.

ini

f o r ( i n i ; cond ; i n c ) {
inc
...
F }
cond

...

default switch ( var ){


var
case 1:
1
...
...
break ;
case 2:
2 ...
... break ;
case 3:
3 ...
...
break ;
default :
...
...
break ;
}

1.3.2 Exemplo de um fluxograma:


Um exemplo básico de fluxograma será apresentado a seguir. Para tal utilizaremos uma atividade
cotidiana: trocar uma lâmpada. Apesar de parecer uma tarefa simples, se comprovará que vários
passos descritos são realizados mas não os consideramos imporantes em um primeiro momento.
Antes de iniciar a troca da lâmpada é preciso conseguir uma lâmpada nova. Conseguida a
lâmpada, verificaremos se precisamos de uma escada, se precisarmos deveremos conseguir uma,
se não, podemos prosseguir.
Seguramos a lâmpada com uma das mãos e a giramos no sentido horário para desparafusar
a mesma. Em seguida, enroscamos a nova lâmpada no bocal, girando a mesma, desta vez, no
sentido anti-horário. Se utilizamos a escada, devemos descer da mesma. Finalizada a substituição,
se deve descartar a lâmpada usada corretamente e guardar a escada em seu devido lugar.
Os passos descritos acima estão representados na figura 1.1.
Como se pode observar no fluxograma da figura 1.1, apesar da rotina aparentemente simples,
o número de operações que devem ser executadas é relativamente grande. Isso evidencia a neces-
sidade de um correto planejamento das ações a serem tomadas no momento de encarar a solução
de um problema, seja ele uma atividade no trabalho, nos estudos ou na vida cotidiana.
Os fluxogramas citados neste texto podem ser utilizados para a elaboração de planos de ativi-
dades, programas de computador, programas para microcontroladores e qualquer outra atividade
que necessite uma ordenação de ações para a sua execução. Ao longo do texto serão apresen-
tados os fluxogramas dos programas de exemplos em conjunto com os mesmos para auxiliar a
interpretação dos mesmos.
Um fluxograma bem elaborado torna a elaboração de programas uma tarefa relativamente
simples, uma vez que os passos necessários na execução do programa já foram identificados e
8 Introdução às ferramentas básicas para a implementação de sistemas microcontrolados

Início

Providenciar
uma lâmpada

Presiso de Sim Providenciar


uma escada? uma escada

Não

Subir na
escada

Segurar a lâmpada Segurar a lâmpada


e girá-la no sentido e girá-la no sentido
horário horário

Encaixar a nova lâmpada Encaixar a nova lâmpada


e girá-la no sentido e girá-la no sentido
anti-horário anti-horário

Descer da
escada

Descartar corretamente Descartar corretamente


a lâmpada usada a lâmpada usada

Guardar a
escada

Fim

Figura 1.1: Fluxograma para a troca de uma lâmpada.

corretamente planejados, conforme ilustrado na seção 1.2. A correta interpretação dos blocos do
fluxograma em instruções ou rotinas correspondentes na linguagem de programação utilizada no
computador ou microcontrolador (assembly, ou linguagem de máquina ou uma linguagem de alto
nível como C ou Basic) permite a elaboração rápida de soluções para os mais diversos problemas.

1.4 Máquinas de estado


Outra ferramenta importante para a elaboração de programas são as máquinas de estado. As
máquinas de estado são representações de transições entre estados. Os estados podem representar
configurações de saídas ou estados internos. As máquinas de estado são normalmente utilizadas
quando um procedimento, ou programa possui estados intermediários em sua execução e as saídas
1.5. Resolução de problemas utilizando as técnicas apresentadas 9

dependem destes estados internos.


Existem dois tipos básicos de máquinas de estado: As máquinas onde as saídas estão relacio-
nadas ao estado e as máquinas onde as saídas estão relacionadas à mudança de um estado a outro.
Dependendo do processo envolvido se pode construir máquinas de estado com basicamente duas
configurações. Com as saídas associadas aos estados, também chamadas de máquinas Moore e as
máquinas de estado nas quais as saídas estão associadas à transição de um estado a outro, tam-
bém chamadas de máquinas Meele. Em uma máquina de estado o sinal de relógio não interfere
nas mudanças de estados, apenas as estradas e os estados influenciam diretamente na mudança
de estado, o sinal de relógio apenas permite que a mudança ocorra. Uma máquina de estados
não necessariamente envolve temporização e está muito mais associada à execução sequencial de
tarefas.
A figura 1.2 representa uma máquina de estados para um contador binário de 2 bits, disparado
por uma entrada. A saída desta máquina está representada no interior dos círculos que representam
os estados.

01

Clock Clock

00 10

Clock Clock

11

Figura 1.2: Máquina de estados para um contador de 2 bits.

As máquinas de estado são muito estudadas em eletrônica digital para a implementação de


circuitos temporizados e para a implementação de comportamentos específicos em dispositivos
digitais.
Outra aplicação muito comun d emáquinas de estados é na implementação de sistemas opera-
cionais de pequeno porte embarcados em microcontroladores ou sistemas informáticos de pequeno
porte utilizados em aplicações de controle de dispositivos ou em aparelhos domésticos microcon-
trolados.
Em algumas situações a implementação de uma máquina de estados auxilia na visualização do
processo a ser implementado antes da elaboração do fluxograma do processo.
Nas aplicações de controle em tempo real onde o microcontrolador implementa um sistema
operacional baseado em uma máquina de estados, cada estado onde o microcontrolador perma-
nece um determinado tempo pode ser representado por um fluxograma, uma vez que cada estado
representa uma tarefa a ser executada pelo sistema.

1.5 Resolução de problemas utilizando as técnicas apresentadas


Nesta seção se apresentam um exemplo de implementação utilizando as técnicas apresentadas nas
seções 1.2, 1.3 e 1.4.
10 Introdução às ferramentas básicas para a implementação de sistemas microcontrolados

1.5.1 Problema 1
Se deseja implementar um programa de computador que receba um número, calcule se o mesmo
é par, ímpar ou zero; diga se o mesmo é positivo ou negativo; mostre na tela estes resultados e saia.

Vamos seguir os passos para a resolução de problemas apresentado na seção 1.2:

Passo 1 – Entender o enunciado


O enunciado nos diz que o programa deve receber um número, ou seja, ele deve esperar uma
resposta do usuário para que o mesmo forneça um valor numérico para que possa prosseguir
com as ações. O programa deve apenas receber valores numéricos, ignorando ou descartando
valores não numéricos. O programa deve realizar uma série de cálculos para determinar algumas
características deste número digitado. Após realizar os cálculos, o programa deve mostrar os
resultados encontrados e sair do programa.

Passo 2 – Entender os problemas


Uma vez entendido o enunciado se pode listar uma série de problemas, como os enumerados
abaixo2 :

1. Mostrar os resultados na tela do PC e sair do programa;

2. Armazenar na memória do programa um valor digitado pelo usuário do mesmo;

3. Solicitar interação do usuário;

4. Calcular se o número é par ou ímpar;

5. Determinar se o número é zero ou não;

6. Determinar se o número é positivo ou negativo.

Uma vez identificados os problemas, se deve entender os mesmos para que este entendimento dos
problemas sirvam de base para a elaboração das soluções, que serão elaboradas no seguinte passo.

Passo 3 – Elaborar soluções para os problemas individuais


Uma solução individualizada deve ser elaborada para cada um dos problemas identificados no
passo anterior, procure manter uma correlação entre os números que identificam os problemas e
as soluções:

1. Mostrar os resultados na tela do PC e sair do programa:


Escrever na tela do PC ou na impressora os resultados dos cálculos realizados, utilizando
alguma função disponibilizada pelo pacote do compilador com esta finalidade;

2. Armazenar na memória do programa um valor digitado pelo usuário do mesmo:


Utilizar alguma função disponível para que os dados fornecidos pelo usuário possam ser
armazenados na memória do PC para posteriores cálculos;

3. Solicitar interação do usuário:


Exibir mensagem na tela solicitando que o usuário insira um valor numérico a ser utilizado
para os cálculos;
2A ordem de execução da solução dos problemas será objeto de outro passo
1.5. Resolução de problemas utilizando as técnicas apresentadas 11

4. Calcular se o número é par ou ímpar:


Determinar através do cálculo do resto da divisão por 2, se um número é par (divisível por
2) ou ímpar (não divisível por 2). Esta determinação envolve o cálculo do resto da divisão
inteira do número digitado por 2, caso este resto seja 0 (zero), o número é divisível por 2,
portanto, par. Caso contrário o número é ímpar;

5. Determinar se o número é zero ou não:


Determinar através de um teste de igualdade se o número armazenado é ou não zero;

6. Determinar se o número é positivo ou negativo:


Determinar através de um teste se o número armazenado é maior ou menor que zero.

No caso apresentado aqui, as soluções são bastante simples e pode parecer exagerado que se sigam
os passos, mas é importante que se sigam todos eles para que se possa chegar a uma solução final
ótima.

Passo 4 – Sequenciar as soluções elaboradas

O sequenciamento garante que as soluções serão executadas em uma ordem determinada que
favorece o cálculo otimizado das soluções dos problemas.
Para gerar o sequenciameto, se deve observar a característica de pré-requisito de uma solução
para a outra ou de conclusão de uma solução para outra. Por exemplo, não se pode mostrar
resultados antes de calculá-los. Deste modo, a solução seria dada por uma das sequências lógicas
apresentadas abaixo:
3⇒2⇒5⇒6⇒4⇒1
3⇒2⇒5⇒4⇒6⇒1
Note que a segunda solução difere da primeira apenas nas penúltima e antepenúltima ações
que podem ser executadas em qualquer ordem. Alguns podem se perguntar porque não se pode
trocar a solução 5 de posição conjuntamento com as opções 4 e 6. Esta troca acarretaria múltiplas
execuções da solução 5 pois um número pode ser par, ímpar ou zero e também pode ser positivo,
negativo ou zero.

Passo 5 – Elaborar um fluxograma de acordo com o sequenciamento de soluções

A figura 1.3 ilustra a implemetação em fluxograma da sequência 3 ⇒ 2 ⇒ 5 ⇒ 6 ⇒ 4 ⇒ 1.


Se observa na figura 1.3 que a implementação utilizou duas variáveis auxiliares utilizadas
apenas para armazenar as características do valor armazenado e que poderiam não ser utilizadas
se as saídas fossem dadas logo que se calcula o resultado. Esta melhoria pode ser implementada
no passo de revisão do fluxograma, caso se queira.

Passo 6 – Revisar o fluxograma

Através da revisão do fluxograma se pode observar que a mesma pode ser alterada para permitir
uma implementação mais econômica em termos de uso de memória através da implementação da
sequência 3 ⇒ 2 ⇒ (5 + 1) ⇒ (6 + 1) ⇒ (4 + 1) onde as expressões (5 + 1), (6 + 1) e (4 + 1)
representam as soluções 5 e 1, 6 e 1 e 4 e 1 respectivamente, conforme ilustrado na figura 1.4.
12 Introdução às ferramentas básicas para a implementação de sistemas microcontrolados

Inicio

Insira um valor
Resto = Valor % 2
numérico

Resto = 0?
Valor N

Valor=0? Par = 0 Par = 1


N

Zero = 1 Valor > 0?


N

Positivo = 0 Positivo = 1

Zero =1? Par =1?


N N

S S

O valor é Zero O valor é Par O valor é Ímpar

Positivo =1?
N

Fim O valor é Positivo O valor é Negativo

Figura 1.3: Fluxograma para a solução do exemplo 1.


Inicio

Insira um valor
Resto = Valor % 2
numérico

Resto = 0?
Valor N

Valor=0? O valor é Par O valor é Ímpar


N

O valor é Zero Valor > 0?


N

Fim O valor é Positivo O valor é Negativo

Figura 1.4: Fluxograma para a solução do exemplo 1 de forma reduzida.


1.5. Resolução de problemas utilizando as técnicas apresentadas 13

Passo 7 – Elaborar o programa, baseado no fluxograma

Tomando por base o primeiro fluxograma apresentado se pode gerar o programa a continuação:
 
# i n c l u d e < s t d i o . h>
# i n c l u d e < s t d l i b . h>
i n t main ( v o i d ) {
i n t V a l o r , Par , P o s i t i v o , Zero , R e s t o ;

p r i n t f ( " D i g i t e um v a l o r n u m é r i c o : " ) ;
s c a n f ( "%d " ,& V a l o r ) ;
i f ( V a l o r ==0){
Zero = 1 ;
}
else {
Resto = Valor % 2;
i f ( R e s t o ==0){
Par =1;
}
else {
Par =0;
}
i f ( Valor >0){
P o s i t i v o =1;
}
else {
P o s i t i v o =0;
}
}
i f ( Z e r o ==1){
p r i n t f ( "O v a l o r d i g i t a d o eh z e r o ! \ n " ) ;
}
else {
i f ( Par =1){
p r i n t f ( "O v a l o r d i g i t a d o eh P a r ! \ n " ) ;
}
else {
p r i n t f ( "O v a l o r d i g i t a d o eh I m p a r ! \ n " ) ;
}
i f ( P o s i t i v o ==1){
p r i n t f ( "O v a l o r d i g i t a d o eh P o s i t i v o ! \ n " ) ;
}
else {
p r i n t f ( "O v a l o r d i g i t a d o eh N e g a t i v o ! \ n " ) ;
}
}
system ( " pause " ) ;
return 0;
}


Por outro lado, se tomarmos o fluxograma revisado como base para a realização do programa,
chegaremos à solução apresentada no código abaixo.
Se pode observar que o segundo programa possui menos linhas de código, o que o torna
menor. Além disso, precisa de menos variáveis na memória, o que o torna menor na memória do
PC durante a execução. Esta diferença é pequena, na verdade, quase insignificante para um PC.
Porém, quando se passa a programar um microcontrolador com uma quantidade de memória
14 Introdução às ferramentas básicas para a implementação de sistemas microcontrolados
 
# i n c l u d e < s t d i o . h>
# i n c l u d e < s t d l i b . h>
i n t main ( v o i d ) {
i n t Valor , Resto ;

p r i n t f ( " D i g i t e um v a l o r n u m é r i c o : " ) ;
s c a n f ( "%d " ,& V a l o r ) ;
i f ( V a l o r ==0){
p r i n t f ( "O v a l o r d i g i t a d o eh z e r o ! \ n " ) ;
}
else {
Resto = Valor % 2;
i f ( R e s t o ==0){
p r i n t f ( "O v a l o r d i g i t a d o eh P a r ! \ n " ) ;
}
else {
p r i n t f ( "O v a l o r d i g i t a d o eh I m p a r ! \ n " ) ;
}
i f ( Valor >0){
p r i n t f ( "O v a l o r d i g i t a d o eh P o s i t i v o ! \ n " ) ;
}
else {
p r i n t f ( "O v a l o r d i g i t a d o eh N e g a t i v o ! \ n " ) ;
}
}
system ( " pause " ) ;
return 0;
}


disponível limitada, qualquer quantidade de memória economizada pode fazer a diferença entre
um programa funcionar ou não.

Passo 8 – Testar e depurar o programa

Os programas apresentados acima foram testados e funcionam corretamente. Os códigos aqui


apresentados podem ser compilados para que o aluno possa testar a validade e a funcionalidade
dos códigos aqui apresentados.

A etapa de teste e depuração deve ser realizada para validar o funcionamento do programa
e deve ser realizada apresentando inclusive situações não desejadas ao programa. No exemplo
anterior as verificações de erros por parte do usuário não estão implementadas. Em outras palavras,
se uma letra for digitada no lugar de um número, o programa deixará de funcionar.

Existem ferramentas para tratar estas situações, mas estas não serão apresentadas aqui pois
fogem do contexto desta revisão.
1.6. Exercícios propostos: 15

1.6 Exercícios propostos:


1. Elabore um fluxograma para a realização de uma rotina que recebe uma série de 5 valo-
res e armazena estes valores nas variáveis correspondentes. Após o preenchimento das 5
variáveis, a rotina deve parar.

2. Elabore um fluxograma para a realização de uma rotina que calcule o quadrado de um valor
dado. Este valor deve ser entregue à rotina de cálculo via teclado.

3. Elabore um fluxograma para uma rotina que acione uma saída de acordo com o valor de
uma entrada. A saída deve ser acionada sempre que a entrada mudar de 0 para 1.

4. Escreva o fluxograma de um programa que lê um valor N qualquer fornecido pelo usuário,


verificar os seguintes itens e apresenta uma mensagem indicando: se o número é zero, par
ou ímpar; se o número é positivo ou negativo; se o numero é ou não primo.

5. Elabore um fluxograma de um programa que recebe os 15 elementos do vetor X de inteiros.


Calcula e imprime a soma dos números ímpares digitados. Se o vetor não possuir nenhum
número com esta propriedade, o programa deve mostrar uma mensagem indicando esta
situação e terminar.
16 Introdução às ferramentas básicas para a implementação de sistemas microcontrolados

Notas.

Você também pode gostar