Escolar Documentos
Profissional Documentos
Cultura Documentos
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. Entender o enunciado;
5. Elaborar um fluxograma;
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.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.
Símbolo Descrição
Início
Terminal: Utilizado para a marcação de INÍCIO e
FIM de uma rotina expressa no fluxograma.
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
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
ini
f o r ( i n i ; cond ; i n c ) {
inc
...
F }
cond
...
Início
Providenciar
uma lâmpada
Não
Subir na
escada
Descer da
escada
Guardar a
escada
Fim
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.
01
Clock Clock
00 10
Clock Clock
11
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.
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.
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.
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.
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
Positivo = 0 Positivo = 1
S S
Positivo =1?
N
Insira um valor
Resto = Valor % 2
numérico
Resto = 0?
Valor N
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.
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
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.
Notas.