O documento apresenta uma introdução aos sistemas embarcados, microcontroladores PIC e programação embarcada, descrevendo as características e aplicações dos PICs, memória, registradores, pilha e programação em C.
"O QUE ÉPROGRAMAÇÃO EMBARCADA?"
A computação embarcada estuda os
computadores embutidos que são encontrados
nos mais diversos equipamentos
eletroeletrônicos
3.
Introdução
Os microcontroladores PICsão dispositivos fabricados
pela Microchip
São de arquitetura RISC com clock de até 40MHz, até
2048kword de memória de programa e até 3968 bytes
de memória RAM
Podem ter até 4 temporizadores/contadores, memória
EEPROM interna, gerador/comparador/amostrador
PWM, conversores A/D de até 12 bits, interface de
barramento CAN, 12C, SPI entre outros
4.
INTRODUÇÃO
Existem 3famílias de PICs, de 12, 14 e 16 bits de memória
de programa
Todos possuem barramento interno de dados de 8 bits
Quanto maior a palavra de programa, maior o número de
instruções
12 bits = 33 instruções;
14 bits = 35 instruções;
16 bits = 77 instruções.
5.
A arquiteturados PICs é otimizada para a
execução de um pequeno conjunto de
instruções, mas com velocidade muito alta.
Exemplo: PIC da série 16 executa 5 MIPS
(Milhões de Instruções por Segundo) a
20MHz ou 10 MIPS a 40 MHz.
6.
Diferentes dispositivosPIC são semelhantes em sua
arquitetura interna, o que facilita a migração entre
microcontroladores.
Os princípios gerais da arquitetura PIC são:
Registrador de intercâmbio geral, ou registrador de
trabalho (W);
Registrador de armazenamento de flags (STATUS)
Registrador de controle de interrupção (INTCON);
Registrador de manipulação de dados nas portas
(PORT ou GPIO).
7.
MEMÓRIA DE PROGRAMA
Nas séries 12, 14 e 16 está embutida na pastilha
Alguns dispositivos das séries 17 e 18 suportam
memórias de programa externas
Tecnologias de implementação de memória de
programa:
ROM – programada de fábrica;
OTP (PROM) – Virgens de fábrica;
EPROM;
FLASH – pelo menos 1000 ciclos de
gravação/apagamento.
8.
MEMÓRIA RAM EREGISTRADORES
A RAM é utilizada para abrigar os registradores internos.
Divide-se em duas partes:
Para abrigar registradores de funções especiais (SFR - Special
Function Register);
Para abrigar registradores de propósitos gerais (GPR – General
Purpose Register).
Registradores SFR são utilizados para controlar periféricos e
dispositivos internos, flags de estado do processador, entre outras
funções;
Registradores GPR são utilizados para armazenamento temporário
de dados do usuário.
9.
Os registradoressão muitas vezes
referenciados pela letra f (file register)
A forma de implementação das instruções
limita o endereçamento a um máximo de
7 bits ou 128 registradores
Para contornar tal limitação, criou-se o
esquema de paginação também na
memória RAM, de modo que existem
bancos de memória de 128 posições
10.
Alguns registradoresSFR podem ser
encontrados em dois ou até mesmo nos
quatro bancos de memória RAM
(registradores espelhados), permitindo a
otimização de acesso de registradores
muito usados (STATUS, INTCON, etc.)
Alguns dispositivos PIC permitem o
espelhamento de registradores GPR
Alguns dispositivos permitem ainda
espelhamento completo dos registradores
GPR
11.
REGISTRADOR W
Características:
Usadoem operações lógicas ou aritméticas;
Não pode ser utilizado como fonte de dados
em operações de CPU (rotação de dados,
incremento, decremento, etc.);
Não está mapeado na memória RAM;
Sua utilização principal é como ponte entre
registradores f.
NÃO É POSSÍVEL TROCAR DIRETAMENTE
INFORMAÇÕES ENTRE OS REGISTRADORES
MOVF (Copia de f para w) e MOVWF (Copia de w
para f).
12.
CONTADOR DE PROGRAMA- PC
Responsável pelo controle da sequência de execução das
instruções
O registrador PC aponta para a próxima instrução a ser executada
pela CPU
PC é dividido em dois registradores básicos:
PCL, responsável pelos 8 bits menos significativos;
PCH, responsável pelos 5 bits mais significativos.
Somente PCL é diretamente acessível, podendo ser lido ou escrito
pelo programa do usuário
PCH pode ser alterado somente por intermédio do registrador
PCLATH
13.
PILHA
Estrutura dedados com apenas um ponto de acesso (o topo da pilha)
A principal função da pilha é armazenar endereços de retorno para sub-
rotinas
Alguns dispositivos permitem também o armazenamento de dados de
usuário
Operações básicas:
PUSH – a CPU armazena informação na pilha;
POP - a CPU busca informação no topo da pilha.
A pilha não está localizada na área de memória RAM, e sim em uma
região separada (inacessível diretamente ao usuário) dedicada
14.
Normalmente apilha tem capacidade de 8 palavras do tamanho de PC.
O endereço do topo não é acessível ao usuário.
Utiliza-se uma estrutura de memória LIFO (Last IN – First Out) circular.
O programador deve ter muito cuidado para não sobrescrever dados na
pilha.
Não há instruções para manipulação direta da pilha (isso é feito
inderetamente através das instruções CALL, RETURN, RETLW e RETFIE).
15.
O QUE ÉPROGRAMAÇÃO EMBARCADA?"
Desenvolvimento de software embarcado é
uma modalidade de desenvolvimento na qual
se desenvolve os programas e aplicativos que
irão fazer parte de dispositivos eletrônicos que
possam funcionar independentes de estarem
ou não ligadas a um computador central.
16.
"O QUE SÃOSISTEMAS ELETRÔNICOS
EMBARCADOS?"
Sistema eletrônico embarcado ou sistema
eletrônico embutido é um sistema eletrônico
que tem como base um microprocessador que
possui um software completamente dedicado
ao dispositivo ou sistema que ele controla.
17.
"EXEMPLOS DE SISTEMASELETRÔNICOS
EMBARCADOS:"
Telefones celulares e centrais telefônicas;
• Equipamentos para a montagem de redes de computadores, como roteadores, hubs,
switches, firewalls e Access Point WiFi;
• Modems ADSL e de PLC (Power Line Communication);
• Controlador de injeção eletrônica de combustíveis para motores à explosão, a gasolina,
a óleo Diesel ou bio-Diesel ou sistemas multicombustível (Flex Fuel);
• Controladores da tração, acionadores de air bags e sistemas anti-bloqueio dos freios
(freios ABS) em automóveis, motocicletas, ônibus e caminhões;
• Equipamento de geolocalização (GPS) e de rastreamento de veículos e cargas;
• Calculadoras eletrônicas e agendas eletrônicas de bolso;
• Controladores eletrônicos de eletrodomésticos, como fornos microondas, máquinas de
lavar e também dos refrigeradores e aparelhos de ar condicionado mais modernos;
• Aparelhos de TV com controle remoto, CD players, DVD players e Blue-Ray Disc players;
• Equipamentos médicos;
• Alarmes programáveis para residências e comércio;
• Videogames;
• Receptores de TV por satélite e de TV por cabo coaxial;
• Televisores digitais com telas a LCD ou plasma e monitores de computador de LCD;
• Robôs industriais.
18.
"Breve histórico dosSistemas Eletrônicos
Embarcados:"
Nos primeiros anos dos computadores digitais na
década de 1940, os computadores eram por vezes
dedicados a uma única tarefa. Eram, entretanto,
muito grandes para serem considerados
embarcados. O conceito de controlador programável
foi desenvolvido algum tempo depois. O primeiro
sistema embarcado reconhecido mundialmente foi
o Apollo Guidance Computer
19.
UM POUCO DEHISTORIA
O primeiro sistema eletrônico embarcado
que foi produzido em grande quantidade foi o
computador guia do míssil nuclear norte-
americano LGM-30 (Míssil Minuteman), lançado
em 1961, que possuía um disco rígido para a
memória principal. Quando a segunda versão do
míssil entrou em produção em 1966, o
computador guia foi substituído por um novo, sem
o disco rígido, que constituiu o primeiro uso em
grande volume de circuitos integrados.
20.
Atualmente, com adisponibilidade de
microcontroladores a um custo menor que US$ 1,
tornou-se viável substituir componentes analógicos
caros como potenciômetros e capacitores por
eletrônica digital controlada através de pequenos
microcontroladores. Assim sendo, o público leigo
não sabe que sua vida é repleta de
microcontroladores, embutidos em dispositivos
corriqueiros.
21.
Por exemplo, oacionamento do
relógio de um forno microondas é feito
por um pequeno microcontrolador, que
recebe, interpreta e aciona o
equipamento a partir dos comandos
do teclado. Também o aparelho de TV
moderno possui pelo menos um
microcontrolador, que recebe os
comandos do controle remoto e aciona
as várias funções.
22.
Nos automóveis, alémdo sistema de injeção
eletrônica, encontram-se microcontroladores no
equipamento de som, nas centrais de alarme, no
sistema anti-bloqueio dos freios (freios ABS) e no
sistema de acionamento dos airbags.
Assim sendo, os veículos mais sofisticados
fazem uso de uma grande quantidade de
microcontroladores; uma fonte consultada afirma
que o automóvel BMW 850i possui mais de 100
microcontroladores em seu interior.
23.
Um episódio curiosoocorreu em uma das
primeiras conferências em que se discutiu o
impacto dos microcontroladores na eletrônica,
realizado em 1975 no Hotel Hilton na cidade de
Nova Iorque (EUA). Um dos palestrantes, Danny
Hillis da empresa ThinkingMachines Corporation,
previu que o mercado mundial de
microcontroladores seria em poucos anos na
faixa de milhões de unidades produzidos a cada
ano.
24.
Um dos participantesdo auditório
manifestou-se contra esta ideia, afirmando que
nunca seriam necessários tanto
microcontroladores no mundo. Segundo este
participante não identificado, o futuro descrito
pelo palestrante seria como se tivéssemos “um
microcontrolador em cada quarto deste hotel”.
25.
De fato, poucosanos depois outro evento
realizou-se no mesmo Hotel Hilton, que nesta
época acabara de instalar fechaduras
eletrônicas nos apartamentos, acionadas por
um cartão magnético entregue ao hóspede.
Ou seja, havia um microcontrolador em cada
quarto do hotel, embutido na fechadura das
portas dos apartamentos.
Está ai um gostinho de história
26.
Introdução ao funcionamentodas máquinas
digitais.
As máquinas digitais operam apenas em uma
única linguagem, a “linguagem binária”.
Comumente chamada de linguagem de
máquina, pois contém instruções (numéricas,
geralmente expressadas em hexadecimal) que
somente uma máquina ou uma família
especifica é capaz de entender.
Antes de tentarmos entender como funcionam
essas características. vejamos um diagrama de
blocos de uma máquina digital genérica.
28.
PROGRAMANDO
MICROCONTROLADORES PIC
Na atualidadeuma diversidade de microcontroladores
esta presente no mercado exigindo a efetiva busca por
atualização, para fins aplicativos operacionais e/ou
didáticos
Mais uma vez, este resumo do livro
S586p Silva, Renato A.
Programando microcontroladores PIC : Linguagem “C” /
Renato A. Silva.
– São Paulo : Ensino Profissional, 2006. 172p.
dedica-se ao aprendizado da tecnologia de automação
e robótica, utilizando microcontroladores para executar
tarefas específicas.
29.
Programando Microcontroladores PIC
Maisuma vez, este resumo dedica-se
ao aprendizado da tecnologia de
automação e robótica, utilizando
microcontroladores para executar
tarefas específicas.
30.
Finalmente, cabe aoleitor sempre, o
esforço para aprender a programar
microcontroladores e usa-los com
criatividade e imaginação para o
desenvolvimento de novos projetos
31.
Aqui reforçamos opedido do autor
no sentido de ter uma boa dose de
paciência no aprendizado e não
desistir frente às dificuldades, pois
com certeza, é uma caminhada de
enriquecimento de conhecimentos.
32.
E para aquelesque felizmente
encontra-se em um degrau mais
elevado, espera-se que a obra venha
somar algo mais a sua carreira.
33.
Introdução:
O desenvolvimento atualda tecnologia nas
áreas de automação e robótica deve-se
principalmente ao desenvolvimento dos
microcontroladores e processadores
digitais de sinais (DSP).
34.
Os DSP possuimemórias e estrutura que
lembra os microcomputadores atuais,
executando um software escrito para uma
determinada finalidade, sendo extremamente
robustos, baratos e confiáveis
35.
Os microcontroladores PIC,reúne em
um único chip todos os circuitos
necessários para o desenvolvimento de
um sistema digital programável,
37.
O que significaPIC?
É o nome que a Microchip adotou
para a sua família de
microcontroladores, sendo que a
sigla significa Controlador Integrado
de Periféricos.
O PIC é um circuito integrado
produzido pela Microchip Technology
Inc
38.
Possui:
Uma serie deLINHAS de I/O para controlar
dispositivos externos
Uma serie de dispositivos auxiliares ao
funcionamento, ou seja, gerador de clock, bus,
39.
O PIC estadisponível em uma ampla gama de
modelos.
Diferenciando-se pelo numero de linha de I/O e
pelo conteúdo do dispositivo.
Sigla PIC12Cxx dotado de 8 pinos, até chegar a
modelos maiores com sigla PIC17Cxx dotados de
40 pinos.
40.
Uma descrição detalhadada tipologia do
PIC é disponível no site da Microchip
Para o nosso curso usaremos
um modelo de PIC o PIC16F877.
Este é dotado de 40 pinos.
41.
Componente integrado queem um único
dispositivo contem todos os circuitos
necessários para realizar um completo sistema
digital programável.
42.
Internamente dispõe detodos os
dispositivos típicos de um sistema micro-
processado, ou seja:
Uma CPU (Central Processor Unit ou seja
Unidade de Processamento Central)
Uma memória PROM
Uma memória RAM
Uma unidade ULA
Varias unidades de registradores
43.
Programação do PIC
Comoo PIC é um dispositivo
programável, o programa tem como objetivo
deixar instruções para que o mesmo possa
fazer atividades definidas pelo programador.
Para poder programar um PIC precisaremos
de um Editor (Mplab ou o PCWH), um
compilador (PCWH) e um programador
(PICStar Plus).
44.
O que éo MpLab?
O MpLab é um ambiente integrado de
desenvolvimento (I.D.E.: Integrated
Development Environment).
Edição
O MpLab possui um editor de texto para
seus programas que possui diversas
ferramentas de auxílio como localizar,
substituir, recortar, copiar e colar.
Simulação
O MpLab possuiferramentas para simulação
do programa no próprio computador
Gravação
Para que o programa seja executado no
microcontrolador, o arquivo hexadecimal
deve ser gravado no PIC. O MpLab oferece
suporte aos gravadores fabricados pela
Microchip.
47.
Emulação
A emulação éum recurso de
desenvolvimento que possibilita
testes em tempo real.
48.
O PIC 16F877A
Microcontroladorde 40 pinos
33 portas configuráveis como entrada ou
saída.
• 15 interrupções disponíveis.
• Memória de programação
49.
E²PROM FLASH, quepermite a gravação
rápida
Memória de programa com 8K Word, com
capacidade de escrita e leitura pelo próprio
código interno;
• Memória E²PROM (não volátil) interna com
256 bytes;
• Memória RAM com 368 bytes;
• Três timers (2x8bits e 1x16 bits);
50.
Comunicações seriais: SPI,I²C e
USART;Conversores analógicos de
10 bits (8x) e comparadores analógicos
(2x);
• Conversores analógicos de 10 bits (8x)
e comparadores analógicos (2x);
• Dois módulos CCP: Capture, Compare
e PWM;
60.
História do transistore do microchip
1.1 O Transistor
Antes de “PICarmos” um pouco, faz-se
necessário uma pequena visão do
desenvolvimento, iniciando no final dos anos 40,
com a construção do primeiro transistor nos
laboratórios da BELL em 23 de dezembro de
1947 por John Bardeen, Walter Houser Brattain,
e William Bradford Shockley, os quais ganharam
o prêmio Nobel de física 1956.
61.
O transistor éa contração das palavras
transfer resistor, resistência de
transferência. É um dispositivo
eletrônico semicondutor, componente
chave em toda a eletrônica moderna
62.
O transistor éum dispositivo
semicondutor de estado sólido,
ele foi assim chamado pela
propriedade de trocar a
resistência pela corrente elétrica
entre o emissor e o coletor.
.
63.
É um sanduíchede diferentes
materiais semicondutores em
quantidade e disposição diferentes
intercalados. Pode-se obter assim
transistores PNP e NPN
64.
Estas três partessão: Uma que
emite elétrons (emissor) uma
outra que recebe e os coleta
(coletor) e uma terceira (base) que
está intercalada entre as duas
primeiras, regula a quantidade
desses elétrons.
65.
Tipos de transistor
Existemdiversos tipos de
transistores, mais a classificação
mais acertada consiste em dividi-
los em transistores bipolares e
transistor de efeito de campo FET.
66.
O FET, estádividida em JFET,
MOSFET, MISFET, etc. A diferença
básica entre os diversos tipos de
transistores está na forma em que
controla o fluxo de corrente.
67.
O Nascimento doMicrochip
Apenas treze anos após a invenção do
transistor, houve outro grande salto
tecnológico, a invenção do circuito
integrado ou microchip, por Jack S.
Kilby da Texas Instruments e Robert N.
Noyce da Fairchild Semicondutor.
68.
PORTAS LÓGICAS, NÚMEROSBINÁRIOS E HEXADECIMAIS
As Portas Lógicas
As portas lógicas formam a base da
eletrônica digital iniciando um novo
compêndio na eletrônica e o seu estudo
é essencial ao entendimento e
aprendizado dos microcontroladores e
microprocessadores.
69.
Ao agrupar circuitosativos e passivos em
blocos, os cientistas criaram blocos que
executavam uma determinada função lógica.
Estas funções são AND (E), NAND (NÃO E),
OR (OU), XOR (OU EXCLUSIVO), XNOR (NÃO
EXCLUSIVO) e NO (NÃO).
70.
Para trabalharmos comas portas
lógicas faz-se o uso de uma tabela
verdade, a qual cada função tem a sua.
72.
nível alto emsua saída se as suas entradas
tiverem nível baixo.
73.
As portas lógicasdo tipo OR terão nível
alto em sua saída se uma “OU” outra
entrada tiver nível alto.
74.
As portas lógicastipo NOR, ao contrário da função OR,
somente terá nível alto ou 1 em sua saída se as
entradas forem zero. Observe a diferença básica entre
a função OR e a NOR.
75.
As portas lógicasXOR, garantem o nível alto
em sua saída se uma entrada tiver em nível
alto e outra em nível baixo. Observe que
diferentemente da AND se tivermos 1 e 1 a
saída será 0.
76.
As portas XNORapresentam princípio
semelhante à função XNOR, apenas
com o detalhe de ter saídas invertidas.
77.
As portas lógicasNOT, são as mais fácil de todas,
apresenta nível alto em sua saída se sua entrada for
nível baixo, invertendo assim os níveis lógicos.
78.
Como já sabemoso nível alto
(normalmente 5 volts) é representados pôr
1 e o nível baixo (zero volts) pôr 0, assim a
combinação de 1 e 0 em grupos de 8,
formão um conjunto denominado “byte”.
Veremos agora as várias representações
de conjuntos numéricos e as suas formas
de conversão.
79.
Números Decimais
Desde cedoaprendemos a raciocinar com números
decimais, onde o conjunto matemático contém 10
elementos [0..9], este sistema de numeração baseia-se em
potencia de 10 onde cada dígito corresponde ao número 10
(base) elevado a uma potência (expoente) de acordo com
sua posição.
80.
Números Binários
Da mesmaforma os números que os números
decimais, os números binários, são assim
chamados porque o seu conjunto contém
apenas 2 elementos [0,1]. Este conjunto
numérico representa os estados lógicos 0 e 1.
Ao organizarmos os bits 0 e 1 em grupos de 8
temos um byte de oito bits, em grupos de 16
temos um byte de 16 bits e assim
sucessivamente.
81.
A escrita donúmero binário sempre é feita da
direita para a esquerda, dizemos que a parte da
esquerda é a mais significativa ou MSB (most
significative bit) e a parte da direita a menos
significativa ou LSB (low significative bit), dai
devemos elevar 2 ao expoente da casa
correspondente ao 1 do bit.
82.
Observe na tabelade
expoentes da figura que o
primeiro expoente da
direita é 1, portanto 20 =
1 e o quarto expoente da
direita para a esquerda é o
3, portanto 2 𝟑 = 8 agora
fazemos a soma de todos
os resultados, neste caso
1 + 8 = 9.
Tudo é uma questão de
prática, ao praticar um
pouco você entenderá
melhor esta relação.
83.
Você já deveter
percebido, aqui, que
existe uma relação,
uma forma de
representar o 0 e o 5
volts dos circuitos
digitais em números,
desta forma,
podemos “conversar”
facilmente com as
máquinas digitais
utilizando números e
realizar operações
com eles.
84.
Para convertemos
uma representação
decimalem binária,
fazemos sucessivas
divisões por 2 e
anotamos os
resultados. Depois
ordenamos de forma
lógica da direita para
a esquerda
85.
Número Hexadecimal
A numeraçãohexadecimal que como as
anteriores tem seu conjunto matemático
representado por 16 números, facilita e
acelera a decodificação de dados,
economizando espaço em armazenamento de
dados. Neste conjunto temos 16 números
sendo [0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F].
Utilizamos basicamente o conjunto de
números decimais (com10 elementos) e
lançamos mãos das letras (A,B,C,D,E,F)
86.
A conversão Hexadecimalpara decimal multiplica o valor do digito pela potência
de 16, fazendo a somatória. Ex: 8AB1 = 35.505
87.
Para convertermos hexadecimalem
binário, a forma mais prática é termos
em mente a tabela de números de A
até F em binário e depois agrupar os
dígitos binários, veja 1A fica com 1
(primeiro dígito) e 1010 da tabela.
Outro exemplo 3C convertido dá
11(referente ao 3) e 1100(referente
ao C).
89.
Numeração Octal
O sistemade numeração octal é
um conjunto matemático onde
temos oito elementos
[0,1,2,3,4,5,6,7] que apresenta
grande importância
principalmente pela facilidade de
conversão de binário para octal.
90.
A metodologia deconversão é
semelhante as anteriores, para
conversão de numeração decimal para
numeração octal, faz-se divisões
sucessivas por 8 até encontrar o menor
quociente e posteriormente pegamos o
resto da divisão em ordem inversa.
Para conversão de octal para decimal,
multiplicamos o numeral por 8 elevado
a potencia correspondente.
92.
Para conversão deoctal para decimal,
multiplicamos o numeral por 8 elevado a
potencia correspondente.
93.
uso da tabelaoctal onde temos o correspondente
binário de cada número octal, depois agrupamos os
bytes correspondentes ao octal da direita para a
esquerda.
94.
DECIMAL HEXADECIMAL BINÁRIOOCTAL
0 0 0000 0000
1 1 0001 0001
2 2 0010 0002
3 3 0011 0003
4 4 0100 0004
5 5 0101 0005
6 6 0110 0006
7 7 0111 0007
8 8 1000 0010
9 9 1001 0011
10 A 1010 0012
11 B 1011 0013
12 C 1100 0014
13 D 1101 0015
14 E 1110 0016
15 F 1111 0017
Tabela de conversão entre diversas bases
95.
As funções lógicasbooleanas são
utilizadas quase que na totalidade das
aplicações com microcontroladores.
96.
No capítulo anterioro leitor viu as
diversas funções (portas lógicas), veja
agora exemplo de aplicação destas
funções em numeração binário e
hexadecimal.
97.
Neste capítulo, tivemosuma visão
geral da relação, conversão e
utilização dos diversos conjuntos
numéricos e sua indiscutível e
relevante importância para os
sistemas computacionais. No
próximo capítulo veremos os
diversos tipos de memórias e a suas
utilizações.
100.
OU SE OVALOR VIER EM DECIMAL DEVERÁ
SER TRANSFORMADO EM BINÁRIO REALIZAR
A OPERAÇÃO COM AS PORTAS LOGICAS E
ESCREVER O RESULTADO EM HEXADECIMAL
TURMA 528 TURMA 529
Ao fazer a operação logica o resultado
deverá ser convertido em hexadecimal
101.
Memórias
A memória éa capacidade de reter, recuperar,
armazenar e evocar informações disponíveis,
neste caso em forma binária de 0 e 1.
102.
Transistores, portas lógicase flip-flops
são utilizados na implementação de
memórias eletrônicas, sendo as
principais tecnologias definidas como
memórias ROM, PROM, EPROM,
EEPROM, FLASH e RAM.
103.
MEMÓRIAS E MICROCONTROLADORES
SENDO AS PRINCIPAIS
TECNOLOGIAS
DEFINIDAS COMO
MEMÓRIAS
ROM,
PROM
EPROM
EEPROM
FLASH
RAM. 525 turma 523
104.
Memórias ROM,memória somente de
leitura, é uma memória onde os dados
gravados não podem ser modificados
ou cancelados.
Memórias PROM, memória somente
de leitura programável é aquela onde
os dados podem ser inseridos pôr
meio de gravadores específicos uma
única vez
105.
Memórias EPROM,memória somente de
leitura apagável, esta sem dúvida é bem
mais comum dos que a PROM, pode ser
apagada se exposta à luz ultravioleta
através de uma janelinha de quartzo
(transparente a radiações ultravioletas) e
programada novamente
pôr meio de gravadores específicos, pôr
muitas vezes.
MEMÓRIAS E MICROCONTROLADORES
106.
Memórias EEPROM,memória somente de
leitura apagável eletricamente, pode ser
apagada eletricamente e regravadas milhares
de vezes, utilizando gravadores específicos,
não precisando expô-la a radiação
ultravioleta, sendo muitas vezes menores que
as EPROM, já que não tem a janelinha de
quartzo.
MEMÓRIAS E MICROCONTROLADORES
107.
MEMÓRIAS E MICROCONTROLADORES
Memória FLASH, parecida em tudo com as do
tipo EEPROM, podendo ser apaga e gravada
eletricamente e gravada novamente, podendo
ter até 100.000 ciclos de apagamentos
108.
Memória RAM,Constituída de transistores
ou flip-flop, podem armazenar dados
somente quando tiverem tensão, quando
não houver tensão estarão zeradas, sendo
voláteis, tem seu uso no processo auxiliar
ao processador armazenando informações
temporárias.
MEMÓRIAS E MICROCONTROLADORES
109.
MEMÓRIA RAM
Basicamentesão constituídas de dois tipos:
estáticas e dinâmicas.
As memórias RAM estáticas, muito utilizada no
final dos anos 80, tinham como principal
desvantagem o tamanho
110.
MEMÓRIA RAM
Asmemórias RAM dinâmicas, ao contrário
tinham alta densidade podendo armazenar por
chip 1 megabyte facilmente, porém estas
memórias necessitam de refresh constante e
conseqüentemente circuitos de apoio
111.
MICROCONTROLADOR
Microcontrolador é umcircuito integrado
programável que contém todos os
componentes de um computador como CPU
(unidade central de processamento), memória
para armazenar programas, memória de
trabalho, portas de entrada e saídas para
comunicar-se com o mundo exterior, sistema de
controle de tempo interno e externo,
conversores analógico digital, uart de
comunicação e outros.
112.
MICROCONTROLADOR
Pode-se controlar qualquercoisa ou estar incluído
em unidades de controle para:
- máquinas pneumáticas,
- hidráulicas comandadas
- máquinas dispensadoras de produtos
- motores, temporizadores
- sistemas autônomos de controle, incêndio,
umidade temperatura
- telefonia, automóveis, medicina, ...etc
Estamos rodeados por máquinas que realizam algum
trabalho ajudado por sensores e atuadores que
recolhem as informações.
113.
APRESENTANDO O PIC16F62X
O microcontrolador PIC 16F62x, reúne em
uma pastilha todos os elementos de uma CPU
RISC de alta performance, sendo fabricado
em encapsulamento DIP (18 Pinos), SOIC (18
pinos) ou SSOP (20 pinos). Onde
encontramos:
114.
CARACTERÍSTICAS DO PIC16F62X
Conforme vemos no diagrama em blocos do PIC
16F627 e 16F628, podemos ressaltar as seguintes
características:
memória de programa EEPROM de 1Kb x 14 bits no
16F627.
memória de programa EEPROM de 2Kb x 14 bits no
16F628.
Memória de dados EEPROM de 64 bytes.
memória de dados RAM com 224 bytes dividida em 4
bancos.
115.
Registrador de propósitoespecífico (SFR) com 32
posições.
Registrador de propósito geral (GPR) com 224 posições.
ALU de 8 bits e registro de trabalho W que normalmente
recebe um operando que pode ser qualquer registrador,
porta de entrada/saída ou o próprio código de instrução.
Pilha (Stack) de 8 níveis.
Contador de programa (PC) de 13 bits (o que permite
endereçar até 8 KB de memória).
116.
Recursos conectados albus de dados:
PortA de 8 bits <RA0:RA7>
PortB de 8 bits <RB0:RB7>
Temporizadores / contadores TMR0, TMR1,
TMR2
Comparadores
Captura , Comparação e PWM
Voltagem de referencia
USART para comunicação serial
Memória EEPROM
117.
SSOP (20 pinos).Onde encontramos:
- Set (conjunto) de instruções com 35 funções
- 200 nanosegundos por instrução @ 20 Mhz.
- Clock de até 20 Mhz.
- 1024 bytes de memória de programa (16F627)
- 2048 bytes de memória de programa (16F628)
- Stack com 8 níveis
-
118.
16 registradores especiaisde funções
- Capacidade de interrupção
- 16 portas de entrada / saídas independente
- Alta corrente de saída, suficiente para acender um LED
- Comparador analógico.
- Timer0 de 8 bits com prescaler, postscaler
- Timer1 de 16 bits com possibilidade de uso de cristal
externo
- Timer2 de 8 bits com registro de período, prescaler e
postscaler
119.
- Captura com16 bits e resolução máxima
de 12,5 nS.
- Comparação com 16 bits e resolução
máxima de 200 nS.
- PWM com resolução máxima de 10 bits.
- USART para comunicação serial
- 16 bytes de memória RAM comum
120.
- Power OnReset (POR)
- Power Up Timer (PWRT)
- Oscillator start-up (OST)
- Brow-out Detect (BOD)
- Watchdog Timer (WDT)
- MCLR multiplexado
- Resistor pull-up programáveis no PORTB
- Proteção de código programável
- Programação em baixa voltagem
- Power save SLEEP
- Oscilador
121.
- Resistor externo– ER
- Resistor interno - INTRC
- Clock externo – EC
- Cristal alta velocidade - XT
- Cristal baixa velocidade – HS
- Cristal – LP
- Programação “in-circuit”
- Baixo consumo
- < 2.0 mA 5.0V, 4 Mhz.
- 15 uA 3.0V, 32 Khz.
- < 1 uA em repouso 3.0V.
- Quatro localizações para ID de usuário
122.
Alimentação
Normalmente o PICé alimentado com uma tensão 5,0 volts
provenientes de uma fonte DC com regulação positiva, um
regulador 7805 ou 78L05 podem ser utilizados para tal função,
lembrando aqui que o 78L05 tem capacidade de suprir até
100ma, não devendo exceder 80% deste consumo pois
aumenta muito o aquecimento do regulador.
O consumo de corrente do microcontrolador é mínimo,
consumindo menos de 2,0 mA com 5 volts, trabalhando a 4Mhz
ou 15,0 micro amp com 3 volts, trabalhando
123.
Programando Microcontroladores PIC
a32 Khz. Quando em modo StandBy,
consome menos de 1,0 micro amper.
com 3.0V, porém devemos ver o consumos
dos outros componentes do circuito.
- PIC 16F62x - 3.0V a 5.5V
- PIC 16LF62x - 2.0V a 5.5V
124.
DEFINIÇÃO DA CPU
CISC: (Complex Instruction Set Computer)
RISC: (Reduced Instruction Set Computer)
SISC.(Specific Instruction Set Computer)
125.
CISC: (Complex InstructionSet Computer)
processadores com conjunto de
instruções complexas, dispõe de um
conjunto com elevado número de
instruções algumas sofisticadas e
potentes. Em contrapartida requerem
muitos ciclos de máquina para executar
as instruções complexas.
126.
RISC: (Reduced InstructionSet Computer)
processadores com conjunto de
instruções reduzidos, em nosso caso são
35 instruções simples que executam em
1 ou 2 ciclos de máquina com estrutura
pipeline onde todas as instruções
executam na mesma velocidade.
127.
ARQUITETURA INTERNA
Entende-sepor arquitetura interna a forma
como o circuito é construído, representada por
blocos, isto é como suas partes internas se
interligam, podemos definir os PICs como
sendo “Arquitetura Harvard”, onde a CPU é
interligada à memória de dados (RAM) e a
memória de programa (EPROM) por um
barramento específico.
128.
Tradicionalmente os microprocessadorestêm
como base à estrutura de Von Neumann, que se
caracteriza por dispor de uma única memória
principal em que se armazenam dados e
instruções. O acesso à memória é feito através de
um sistema de uma única via (bus de dados,
instruções e de controle).
A arquitetura interna do PIC é do modelo Harvard,
ORGANIZAÇÃO DA MEMÓRIA
O PIC contém um registrador denominado PC
(Program Counter) que é implementado com
13 bits, capaz de endereçar até 8K de
programa, mas que somente 1k é
implementado fisicamente no 16F627 (0000h
à 03FF) e 2K são implementados no 16F628
(0000H à 07FFh).
132.
Este registradorestá ligado diretamente a
“Pilha” (stack) armazena o endereço da
instrução que vai ser executada.
Ao incrementar ou alterar o conteúdo do PC, o
microcontrolador tem um mapa seguro de
onde esta e para onde ir.
A pilha éuma memória independente da memória
de programa e da memória de dados, com estrutura
LIFO (Last In First Out) último dado a entrar
será o primeiro dado a sair com oito níveis de
profundidade ou armazenamento com 13 bits cada
um.
Sua função é guardar o valor do PC quando ocorre
um salto do programa principal para o endereço de
um subprograma a ser executado,
fazendo assim com que o microcontrolador tenha
total controle as chamadas de rotinas.,
136.
A pilha.
Seu funcionamentoé como um buffer
circular onde o endereço da última
chamada é o primeiro a retornar em uma
chamada RETUR, RETLW ou RETIE
137.
ORGANIZAÇÃO DA MEMÓRIADE DADOS
Os registros que afetam a CPU são: STATUS,
OPTION, INTCON, PIE1, PIR e PCON. Veremos
agora descrição destes e outros registros.
138.
REGISTRADORES DE FUNÇÕESESPECIAIS
Registro de STATUS endereços 03h, 83h,103h
e 183h, contém o estado da Unidade Lógica
Aritmética ALU (C, DC, Z), estado de RESET (TO,
PD) e os bits para seleção do banco de
memória (IRP, RP1, RP0).
139.
ORGANIZAÇÃO DA MEMÓRIADE DADOS
A memória de dados divide-se em quatro bancos,
contendo os registros de propósitos gerais (GPR),
registros de funções especiais (FSR). A seleção do
banco de memória é feita através dos bits RP1 (STATUS
<6>) e RP0 (STATUS <5>) conforme a seguinte tabela:
RP1, RP0 BancoEndereço
0 0 0 000h - 07Fh
0 1 1 080h - 0FFh
1 0 2 100h - 17Fh
1 1 3 180h - 1FFh
140.
REGISTRO OPTION OUOPTION_REG ENDEREÇO
81H E 181H
É um registro de leitura e escrita que contém
vários bits de controle para configurar o
funcionamento do prescaler ao timer0 e ao
WDT, interrupção externa ao timer0 e os
resistores de pull-up do PORTB.
141.
REGISTRO INTCON -ENDEREÇO 0BH, 8BH, L0BH E 18BH
É UM REGISTRO DE LEITURA E ESCRITA QUE CONTÉM OS BITS DE HABILITAÇÃO DAS VÁRIAS
INTERRUPÇÕES (EXCETO DO COMPARADOR), INCLUSIVE POR MUDANÇA DE ESTADO NO
PORTB.
142.
REGISTRO PIE1 -ENDEREÇO 8CH.
Este registro contém os bits individuais de
interrupções dos periféricos, sendo que para
seu funcionamento o bit PEIE (INTCON <6>)
deve estar habilitado.
bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
EEIE CMIE RCIE TXIE - CCP1IE TMR2IE
TMR1IE
143.
bit descrição
EEIE flagde interrupção de escrita na EEPROM completada
1 = habilita interrupção de término de escrita
0 = desabilita interrupção de término de escrita
CMIE interrupção do comparador habilitada
1 = habilita interrupção do comparador
0 = desabilita interrupção do comparador
RCIE interrupção de recebimento de caractere no USART
1 = habilita interrupção de recebimento do USART
0 = desabilita interrupção de recebimento do USART
TXIE interrupção de envio de caractere no buffer do USART
1 = habilita a interrupção de transmissão do USART
0 = desabilita a interrupção de transmissão do USART
CCP1IE interrupção do CCP1 para captura, comparação e PWM
1 = interrupção habilitada
0 = interrupção desabilitada
TMR2IE interrupção
1 = habilita interrupção
0 = desabilita interrupção
TMR1IE flag de overflow
1 = habilita interrupção para estouro de TMR1
0 = desabilita interrupção de estouro de TMR1
144.
LINGUAGEM “C”
Alinguagem “C” nasceu na Bell Labs, divisão
da AT&T, a famosa companhia americana de
telecomunicações desenvolveu em seus
laboratórios o sistema operacional Unix,
posteriormente desenvolveu também a
linguagem “C” em 1969 por Dennis Ritchie,
que também é um dos principais criadores do
Unix, à partir da linguagem “B” de Ken
Thompson.
145.
LINGUAGEM “C”
Seupropósito era gerar uma linguagem de alto
nível, em oposição à linguagem de máquina
(Assembly), conhecida como de baixo nível. O
“C” é uma linguagem para uso geral, ou seja,
desenvolvimento dos mais diversos tipos de
aplicação
146.
LINGUAGENS DE MAQUINA.
Nósvimos como as máquinas digitais entendem
o assembly, agora vamos subir mais degrau e
entender como a mesma máquina pode entender
uma linguagem estruturada, como o C, Pascal ou
Basic, Mas antes precisamos entender as
diferenças entre essas linguagens.
147.
O assembly éum exemplo de linguagem
puramente imperativa, ou seja, possui ações
(comandos), que alteram estados (espaços de
memória), essa linguagem facilita muito a
programação, pela sua semelhança com a
linguagem humana, ações e conseqüências.
148.
Mas o assemblynão é uma linguagem
estruturada, o programador possui liberdade para
“montar” seus blocos de programa cada um de
uma forma diferente, podemos criar saltos para
qualquer parte da memória de maquina. Essa
característica que nos permite flexibilidade
também atrapalha a analise de códigos, e
cooperação entre diversos programadores.
149.
LINGUAGEM ESTRUTURADA
Jáno caso da linguagem estrutura podemos
reduzir as inúmeras formas de pensar,
Em três estruturas básicas:
Estruturas de seqüência
Estrutura de decisão
Estrutura de repetição
150.
LINGUAGEM ESTRUTURADA
Estruturasde seqüência: As tarefas são executadas
seqüencialmente, uma após a outra. Segundo o
raciocínio lógico do programador.
· Estrutura de decisão: O resultado de um teste lógico
define se um trecho do código deve ser executado.
Existem estruturas para uma única decisão, ou
múltiplas decisões.
Estrutura de repetição: Determina se um trecho de
código será repetido até que certa condição lógica seja
satisfeita
151.
Essa forma depensar nos aproxima mais
ainda da linguagem humana, pois uma única
linha de código estruturado pode conter mais de
uma ordem explicita. Por exemplo: “Faça
enquanto isso for verdadeiro!”. Este é um típico
comando de linguagem estruturada. Temos uma
ordem “Faça”, um laço de repetição “Enquanto” e
uma comparação lógica “enquanto for verdadeiro
Essa facilidade tambémnos traz um
empecilho. A maquina digital não consegue
seguir ordem complexas. Portanto temos um
“gap”, um espaço que precisa ser preenchido
conectando a linguagem estruturada. Também
chamada de linguagem de alto nível, até a
linguagem de máquina, também chamada de
linguagem de baixo nível. É neste momento que
entra em cena os compiladores.
155.
OBSERVAÇÃO.
Diferente dos montadoresque apenas
trocam um mnemônico por um equivalente código
hexadecimal, o compilador precisa traduzir uma
linguagem de alto nível para outra linguagem
equivalente em seu conceito e algoritmo, mas
não exatamente em seus comandos
156.
Logo a compilaçãoé um processo mais
complexo, e suas tarefas são bem divididas e
definidas.
Uma vez que o código em alto nível está pronto
e é submetido a um compilador este realiza
uma analise, neste primeiro processo o
compilador interpreta o código e verifica itens
básicos de sua linguagem e estrutura, a analise
pode ser subdividida em três partes.
157.
Analise Léxica:
Processo tambémconhecido como
“Scanner”, pois verifica se algum caractere do
algoritmo está fora dos caracteres permitidos da
linguagem. Sempre que for encontrado
caracteres válidos o analisador procura trocar
esse caractere por um símbolo. Este símbolo
pode ser interpretado mais facilmente no
restante do processo. Neste ponto todos os
caracteres inúteis de um programa são
retirados, tais como comentários, espaços em
branco, linhas em branco etc.
158.
Analise Sintática: Aanalise sintática
(“parsing” em inglês), recebe os caracteres recém
filtrados pelo analisador léxico e cria uma
estrutura de dados. Está é na verdade uma
grande tabela, capaz de organizar os dados e
futuramente realizar comparações e otimizações
do mesmo. Estes dados estão separados pelos
símbolos criados no analisador léxico.
159.
Analise Semântica:
As outrasetapas de analise, focam os
caracteres ou conjuntos de caracteres de forma
quase que individual, sem olhar o “sentido” das
ações. Erros como comparações entre uma
numero e uma string não são observados nas
analises anteriores.
O analisador Semântico garante a coerência do
programa
161.
INTRODUÇÃO DA LINGUAGEM“C”
Programa: forma de se comunicar com um
computador Linguagem máquina
Programas são ‘traduzidos’ através de outros
programas “especiais”:
compiladores e interpretadores.
Processo:
Fonte → objeto → executável
ESTRUTURA BÁSICA DE UM PROGRAMA C
Consiste em uma coleção de funções
Forma geral
162.
LNGUAGEM “C”
Opré-processador do compilador, reconhece
os comandos e todos os símbolos definidos
pelo comando #define, sendo pouco
inteligentes fazem basicamente substituição.
163.
LINGUAGEM “C”
Temcomo características
a modularidade,
Portabilidade
recursos de “baixo” e “alto” nível,
geração de código eficiente
confiabilidade
regularidade,
além de conter um número pequeno de comandos
164.
VERIFICADOR LÉXICO
Overificador léxico ou “reconhecedor de
palavras” passam pelo programa trocando
palavras-chaves e símbolos orientados para
humanos por valores numéricos mais
compactos orientados para máquina.
165.
Na verdade “reconhecedorde palavras” é
uma grande tabela de pesquisa onde a palavra-
chave é trocada por um código ou token, a
grande maioria das mensagens de erro
reportadas acontecem neste estágio.
166.
Depois vemo analisador o grande perito em
“C”. Ele sabe a sintaxe e quase toda a
semântica da linguagem. Este possui a
responsabilidade principal pela análise
contextual, um erro se seja reconhecido
apenas depois de dois ou três comandos terem
sido analisados será descoberto
167.
COMPILADORES
Após utilizardiversos compiladores existentes
atualmente, optei pelo uso do CCS por apresentar
uma gama de vantagens sobre os demais. O
compilador CCS pode ser adquirido diretamente
no site do fabricante no endereço
www.ccsinfo.com onde se encontra também vários
exemplos de utilização e outras informações
referentes ao compilador.
A instalação do compilador é bem simples, basta
executar o aplicativo e seguir as instruções das
telas.
168.
EX DE PROGRAMAEM “C”
#include <16F628A.h>
void main() {
while( true )
{ //repetição infinita
output_high( PIN_B0 ); //coloca o bit led em 1
delay_ms( 1000 ); //aguarda 1 segundo
output_low( PIN_B0 ); //coloca o bit led em 0
delay_ms( 1000 ); //aguarda um segundo
};
170.
MODELO BÁSICO DEUM PROGRAMA EM C
Quatro elementos estão presentes em um
programa C:
Comentários
Diretivas de compilação
Definições de dados
Blocos com instruções e funções
171.
COMENTARIOS
Os comentáriosno programa fonte não têm
função nenhuma para o compilador e serve
apenas para aumentar a legibilidade e clareza
do programa, podem ser inseridos com “//”
que valem de onde começam até o fim da linha
ou com “/*” e “*/”, sendo considerado
comentário tudo entre “/*” e “*/”.
172.
IDENTIFICADORES
Um identificadoré um símbolo definido pelo
usuário que pode ser um label, uma constante,
um tipo, uma variável, um nome de programa
ou subprograma (procedimento ou função).
Normalmente devem começar com um
caractere alfabético e não podem conter
espaços em branco, podendo ter no máximo
32 caracteres, não havendo distinção entre
maiúsculas e minúsculas.
173.
ENDENTAÇÃO
A endentaçãotambém não tem nenhuma
função para o compilador e serve para tornar a
listagem do programa mais claro dando
hierarquia e estrutura ao programa.
174.
CONSTANTES
Constantes sãovalores declarados no início do
programa e que não se alteram na execução
do programa. Podem ser expressas em
qualquer base,
Para criar uma constante existe o
comando #define que, em geral é colocado no
início do programa-fonte.
175.
EXEMPLO
#define LARGURA_MAXIMA50 // Não se coloca ponto-e-vírgula
após o valor
#define NRO_DE_DIAS_DA_SEMANA 7
#define NRO_DE_HORAS_DO_DIA 24
#define VALOR_DE_PI 3.1415
void main ()
{
int TotalDeHoras;
TotalDeHoras = 10 * NRO_DE_DIAS_DA_SEMANA *
NRO_DE_HORAS_DO_DIA;
......
}
176.
VARIÁVEIS
Uma declaraçãode variável consiste do nome
do tipo de dado seguido do nome da variável.
Todas as variáveis devem ser declaradas antes
de serem usadas. As variáveis devem ser
declaradas no início de cada função,
procedimento ou início do programa.
177.
DECLARAÇÃO DE VARIAVEIS
Declaração de Variáveis
Todas as variáveis tem que ser declaradas antes de serem usadas;
Não há uma inicialização implícita na declaração
// Exemplo de programa em C
#include <stdio.h> // Arquivo de cabeçalho (header)
void main()
{
int contador; // declarações simples
float PrecoDoQuilo;
double TaxaDeCambio;
char LetraDigitada;
int IdadeManoel, IdadeJoao, IdadeMaria; // Pode colocar mais de uma variável na
// na mesma linha
178.
Em C, comona maioria das linguagens, os dados são divididos em tipos: inteiro, real,
caracter, etc. Esta divisão se deve basicamente ao número de bytes reservados para
cada dado. Cada tipo de dado possui um intervalo de valores permitidos.
•Todas as variáveis em C tem um tipo;
•Cada tipo define os valores que a variável pode armazenar;
•Cada tipo ocupa certa quantidade de memória.
TIPOS DE DADOS
Tipos básicos:
Tipo Tamanho Intervalo Uso
char 1 byte -128 a 127 número e caracter ASCII
int 2 bytes -32768 a 32767 contador, controle de laço
float 4 bytes 3.4e-38 a 3.4e38 real (precisão de 7 dígitos)
double 8 bytes 1.7e-308 a 1.7e308 científico (precisão 15 dígitos)
179.
(alfanuméricasLetras )Aa até Zz
; Dígitos (numéricos) - 0 até 9;
Operadores;
Tipos de dados.
TIPOS DE DADOS
Um Tipo de Dado define o conjunto de valores
que uma variável pode assumir e as operações
que podem ser feitas sobre ela.
Toda variável em um programa deve ser
associada a um tipo de dado, conforme a
tabela abaixo.
183.
O conceitodo “C” é que existe uma função
principal chamada “main” que controla o bloco
principal do programa, logicamente ficaria assim:
#include <16F628A.h>
void main()
{
...declarações
};
184.
A chave ({)abre uma estrutura de bloco
de declarações, onde temos comandos,
chamadas de funções ou blocos em
assembler. Para cada chave aberta
deve-se ter outra chave (}), indicando o
fechamento do bloco de declarações.
185.
void main( )
{
while(true )
{ //repetição infinita
output_high( PIN_B0 ); //coloca o bit led em
1
delay_ms( 1000 ); //aguarda 1 segundo
output_low( PIN_B0 ); //coloca o bit led em 0
delay_ms( 1000 ); //aguarda um segundo
};
};
186.
Normalmente o compiladordá uma ajudinha
na hora de escrever o código fonte alertando
para essas particularidades. O modo de
escrever é livre, você pode utilizar letras
maiúsculas, minúsculas ou combinadas,
somente não pode haver espaço entre o label
ou a variável.
187.
assim a seguintedeclaração de
variável “Int variável 1 ;” apresenta
dois erros graves. Um deles é o uso de
acentuação no “á” o outro é a
presença de espaço. O correto para
esta declaração seria o seguinte “int
variavel_1;”.
188.
Os caracteres acentuadosfazem
uso do oitavo bit do byte de caracteres o
que não é suportado pelos compiladores
uma vez que na língua inglesa não existe
acentuação fazendo uso, portanto dos
caracteres de até 7 bits ou até o
caractere 127.
189.
No apêndice encontra-seuma tabela
de caracteres ASCII com os caracteres
básicos de 0 a 127 e uma tabela de
caracteres estendido de 127 a 255.
190.
Os comandos são:
IF,WHILE, DO, FOR, SWITCH, CASE,
RETURN, GOTO, LABEL, BREAK,
CONTINUE.
191.
Este comando deestrutura
condicional pode estar sozinho ou
em conjunto com “else” ou “else
if”, na construção de blocos de
estruturas condicionais muito
eficazes. Sempre recebe um ou
mais parâmetros, pois sempre
comparamos alguma coisa com al-
guma coisa, e conforme o
resultado da comparação faz algo
192.
COMANDO “IF”
Estecomando de estrutura condicional pode
estar sozinho ou em conjunto com “else” ou
“else if”, na construção de blocos de estruturas
condicionais muito eficazes. Sempre recebe
um ou mais parâmetros, pois sempre
comparamos alguma coisa com alguma coisa,
e conforme o resultado da comparação faz
algo diferente. Vejamos:
COMANDO “IF”
Noexemplo acima vemos o operador de
igualdade/comparação (==) que indica se o
operando da direita é igual ao da esquerda, e logo
abaixo tempo o operando de atribuição (=), onde o
operando da direita atribui-se ao da esquerda.
Neste caso, houve a necessidade de se verificar a
outra fase da condição, e atribuir-lhe valor.
No caso acima se fez uma comparação e tomou-
se uma decisão, se após a decisão houvesse mais
de uma declaração, abriríamos um bloco de
controle assim:
- COMANDO “WHILE”
Este comando pode ser utilizado sozinho ou
em conjunto com o comando “DO” construindo
blocos de controle extremamente eficazes.
“while” ou “enquanto” sempre avalia uma
expressão enquanto ela é verdadeira podendo
ou não executar uma declaração em conjunto.
197.
while ( input(PIN_B0 ) ); //aguarda o
pino Rb0 descer
output_high( PIN_B1 ); //coloca o pino
Rb1 em 1
while ( ! input( PIN_B0 ) ); //aguarda o
pino Rb0 subir
output_low( PIN_B1 ); //coloca Rb1
em 0
198.
Depois de compilado,foi gerado o
seguinte código:
00BF: BTFSC PORTB.0
00C0: GOTO 0BF
00C1: BSF PORTB.1
00C2: BTFSS PORTB.0
00C3: GOTO 0C2
00C4: BCF PORTB.1
199.
Comentário do código
Nestecaso, o comando While irá
aguardar até que o pino Rb0 mude de 1 para
0, veja, que o compilador colocou na linha
00BF a instrução para testar a flag Rb0 e
saltar se estiver limpa, caso contrário na linha
00CD têm um salto para a linha 00BF,
criando um loop até termos Rb0 igual a 0.
Quando a condição a ser avaliada não muda
de estado temos um loop infinito como
normalmente acontece dentro da função
“main”. No exemplo abaixo criamos nosso
pisca_led.
200.
void main(){ //funçãoprincipal
while( TRUE ){ //execute sempre, loop infinito
output_high( PIN_B1 ); //pino B1 = 1, led aceso
delay_ms( 1000 ); //aguarda 1 segundo
output_low( PIN_B1 ); //pino B1 = 0, led apagado
}; //fecha o bloco while
}; //fecha a função principal
201.
COMANDO “DO”
Estecomando “execute” sempre é executado
em conjunto com o comando “while” formando
um bloco “execute... enquanto (verdadeiro)”.
Com a diferença que a condição é avaliada
posteriormente a execução, ou seja, primeiro
executa o bloco depois avalia se continua
executando, ao contrário do “while”
202.
STRINGS
Uma Stringé uma seqüência de caracteres
entre aspas duplas:
"exemplo de uma string em C".
203.
A FUNÇÃO PRINTF
A função printf exibe um ou mais dados na
tela. Para tanto ele deve receber pelo menos
dois parâmetros, separados por vírgula:
Um string de formato que define, através de
caracteres especiais, os tipos dos dados a
serem impressos e suas posições na linha de
impressão;
Um dado a ser impresso. Este dado pode ser
qualquer um dos dados visto anteriormente
204.
POR EXEMPLO:
printf("%s","teste");
"%s" : é a string de formato
"teste" : é o dado a ser impresso.
A string de formato define quais os tipos dos
dados a serem impressos. O símbolo %s será
substituído pelo dado que vem após a vírgula.
Os dados definem quais os valores a serem
impressos.
205.
STRING
Se fornecessário, uma string de formato pode
definir que mais de um dado será impresso.
Para tanto, dentro da string de formato deve
haver mais de um %, um para cada dado a ser
impresso.
Neste caso, os dados devem vir após a string
de formato separada por vírgulas.
206.
Por exemplo:
printf("%s %s","teste1","outra string");
Isto irá imprimir o string teste1 deixar 1 espaço
em branco e imprimir ao lado o string outra
string, assim :
teste1 outra string
207.
EXEMPLO
#include <stdio.h> //Necessário para usar a
função printf
// A função printf exibe um ou mais
dados na tela
void main ()
{
printf("%s","Isto é uma string ....n"); // note o 'n' no
final da string;
printf("%s","Outra string ....");
printf("%s","Terceira stringn");
//Depois de Executar o programa, tecle ALT-F5 para ver
o resultado na tela
}
208.
IMPRESSÃO DE INTEIROSCOM "PRINTF"
Para imprimir um inteiro com printf usa-se o
símbolo %d
209.
IMPRESSÃO DE INTEIROSCOM "PRINTF"
// Impressão de Variáveis Inteiras
#include <stdio.h>
#include <conio.h> // necessário para as funções clrscr e getch
void main ()
{
int Contador;
int NroDeFilhos;
clrscr(); // Limpa a tela
Contador = 10;
printf("Valor da Variável: %dn", Contador); // No momento da execução sinal %d vai
// ser substituído pelo valor da
// variável Contador
NroDeFilhos = 3;
printf("Maria tem %d filhos", NroDeFilhos); // o inteiro pode ficar no meio da string
getch(); // espera que o usuário pressione uma tecla
}
210.
IMPRESSÃO DE EXPRESSÕESARITMÉTICAS
// Impressão de Expressões aritméticas
#include <stdio.h>
#include <conio.h> // necessário para as funções clrscr e getch
void main ()
{
int NroDeAndares;
int AlturaPorAndar;
clrscr(); // Limpa a tela
NroDeAndares = 7;
AlturaPorAndar = 3;
printf("Altura Total do Prédio: %d metros", NroDeAndares*AlturaPorAndar);
// No momento da execução sinal %d vai ser substituído
// pelo valor da multiplicação
getch(); // espera que o usuário pressione uma tecla
}
211.
IMPRESSÃO DE NÚMEROSREAIS
// Impressão de números reais
#include <stdio.h>
#include <conio.h> // necessário para as funções clrscr e getch
void main ()
{
float NotaDaP1, NotaDaP2;
float Media;
clrscr(); // Limpa a tela
NotaDaP1 = 6.6; // Atribuição do Valores das médias
NotaDaP2 = 8.2;
Media = (NotaDaP1 + NotaDaP2) / 2.0;
printf("Média Final : %f", Media);
// No momento da execução sinal %f vai ser substituído
// pelo valor da variável Media com SEIS casas decimais
// Média Final : 7.400000
getch(); // espera que o usuário pressione uma tecla
}
212.
FORMATO DE IMPRESSÃODOS NÚMEROS REAIS
No exemplo acima o resultado da média (7.4)
foi impresso com 6 casas decimais
(7.400000).
Isto sempre acontece quando se manda
imprimir um float da forma como foi feito no
exemplo acima. Isto acontece, pois o padrão da
função printf é completar o número com zeros
à direita, até que fique com seis casas
decimais.
213.
Para formatarde maneira diferente usar-se,
junto com o %f uma especificação de quantas
casas decimais se deseja que o número tenha.
Especifica-se também o número total de
caracteres do número a ser impresso.
214.
Por exemplo: %6.3fespecifica que
se quer imprimir
um float com 3 casas decimais e com
um tamanho total de 6 caracteres no
total.
215.
#include <stdio.h>
#include <conio.h>
void main()
{
float NotaDaP1, NotaDaP2;
float Media;
clrscr(); // Limpa a tela
NotaDaP1 = 6.6; // Atribuição do Valores das médias
NotaDaP2 = 8.2;
Media = (NotaDaP1 + NotaDaP2) / 2.0;
printf("Média Final : %6.3f", Media);
// No momento da execução sinal %6.3f vai ser substituído
// pelo valor da variável Media
// Média Final : 7.400
getch(); // espera que o usuário pressione uma tecla
}
216.
Regras para impressãode um número real
o número de casas decimais é sempre
respeitado. Se for preciso, zeros serão
acrescentados à direita do número.
o tamanho total significa o número de
caracteres do número incluindo o ponto
decimal e um eventual sinal de menos (-),
se for o caso;
217.
Se a somado número de caracteres da parte
inteira, mais o ponto decimal, mais a parte
fracionária, mais um eventual sinal de
menos ainda for menor do que o tamanho total
especificado no formato, então, espaços em
branco serão acrescentados à esquerda da parte
real do número.
218.
Se a somado número de caracteres
da parte inteira, mais o ponto
decimal, mais a parte fracionária,
mais um eventual sinal de menos for
maior do que o tamanho total
especificado no formato, então,
apenas o número de casas decimais é
respeitado.
VARIÁVEIS DO TIPOSTRING
Uma variável capaz de
armazenar uma string deve
ser declarada informando-
se qual o número máximo
de caracteres que ela
poderá armazenar
Exemplo:
char Nome[30]; // isto
define que a variável
poderá armazenar uma
string de até 29
caracteres.
221.
ATRIBUIÇÃO COM STRINGS
Atribuição com strings
As atribuições de valores a strings devem ser
feitas através da função strcpy
222.
// EXEMPLO COMSTRINGS
#include <stdio.h>
#include <conio.h>
#include <string.h> // arquivo de cabeçalho para trabalhar com strings
void main()
{
char Nome[30]; // declara uma string que poderá armazenar até 29 caracteres !!
clsrscr();
strcpy(Nome, "Jose da Silva"); // atribui "Jose da Silva" para a variável Nome
printf("O funcionário %s foi transferido", Nome); // no lugar de %s aparecerá o
// conteúdo da variável Nome
getch();
}