Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

ARA0301 PROGRAMAÇÃO DE MICROCONTROLADORS
Aula 5: Linguagem C e Microcontroladores
Prof. Dr. Roney L. de S. Santos
RONEY.LIRASALE@professores.estacio.br
MICROCONTROLADORES
2
• Devido a restrições de custo, tamanho e consumo, em sistemas
embarcados são usados microcontroladores com pouca memória
e baixa velocidade.
• Deve ser notado que o custo de programação é um custo não
recorrente, e que o custo de um microcontrolador maior se
refletirá em um custo maior por cada unidade fabricada.
– Além disso, deve ser notado ainda que um tempo maior de
desenvolvimento aumenta o custo e diminui o tempo de mercado de um
produto
LINGUAGENS PARA MICROCONTROLADORES
3
• Entre as linguagens usadas ou projetadas para uso em sistemas
embarcados, destacam-se:
– Assembly
– C
– C++
– Java
– Ada
– Esterel
LINGUAGENS PARA MICROCONTROLADORES
4
• Entre as linguagens usadas ou projetadas para uso em sistemas
embarcados, destacam-se:
– Assembly
• Possibilita código mais eficiente em termos de velocidade e uso de memória, mas é
inerentemente não portável e exige tempo muito grande de desenvolvimento.
– C
– C++
– Java
– Ada
– Esterel
LINGUAGENS PARA MICROCONTROLADORES
5
• Entre as linguagens usadas ou projetadas para uso em sistemas
embarcados, destacam-se:
– Assembly
– C
• Permite tempo menor de desenvolvimento, mas exige uma disciplina do programador,
similar a exigida em Assembly.
– C++
– Java
– Ada
– Esterel
LINGUAGENS PARA MICROCONTROLADORES
6
• Entre as linguagens usadas ou projetadas para uso em sistemas
embarcados, destacam-se:
– Assembly
– C
– C++
• Permite o uso de técnicas de programação orientada a objetos, mas apresenta
problemas de tamanho de memória e de velocidade.
• Para diminuir estes problemas existe uma versão mais enxuta, chamada Embedded
C++ que impede o uso de mecanismos que aumentam demasiadamente o consumo de
memória, ou tornam o comportamento temporal difícil de prever.
– Java
– Ada
– Esterel
LINGUAGENS PARA MICROCONTROLADORES
7
• Entre as linguagens usadas ou projetadas para uso em sistemas
embarcados, destacam-se:
– Assembly
– C
– C++
– Java
• Embora tenha sido inicialmente planejada para sistemas embarcados, a demanda por
memória é excessiva para a maior parte das aplicações.
• O fato de o comportamento no tempo não ser previsível é devido ao garbage
collector, que impede o seu uso em certas aplicações.
– Ada
– Esterel
LINGUAGENS PARA MICROCONTROLADORES
8
• Originalmente, os sistemas embarcados eram desenvolvidos em
Assembly.
– Com o aumento de complexidade destes sistemas e a pressão por
tempos menores de desenvolvimento, o uso exclusivo de Assembly tem
diminuído, e hoje alcança apenas cerca de 8% dos projetos.
• A linguagem C representa um excelente compromisso entre
eficiência e facilidade de programação.
– Devido a facilidade de se construir um compilador C, e o fato de que a
linguagem implementa um nível de abstração bastante próximo ao
hardware
LINGUAGENS PARA MICROCONTROLADORES
9
• Atualmente, a absoluta maioria, cerca de 90% dos sistemas são
desenvolvidos em C/C++
– As vezes com alguma parte pequena em Assembly.
• O uso do Embedded C++ é crescente mas ainda representa
uma parte menor do uso do C.
LINGUAGEM C
10
• A linguagem C é uma das mais usadas atualmente e é base
para várias outras linguagens como C++, Java e C#.
• No entanto, é no desenvolvimento de sistemas embarcados que
são, por natureza, mais próximos as intenções originais da
linguagem que ele é mais usado
– Representado uma alternativa ao uso de linguagens de montagem
(Assembly) com resultados muito bons.
LINGUAGEM C
11
• A diferença de tamanho de código gerado e de desempenho
devido ao uso do C ou do assembly é dependente da
arquitetura do microprocessador alvo.
– Em algumas arquiteturas, com conjunto de instruções mais adequados, a
diferença pode ser da ordem de 10%, em outras de até 300%.
• O uso do C implica na necessidade de disciplina por parte do
programador. Dois erros são muito comuns:
– Usar uma área que já foi liberada, mas que o ponteiro ainda aponta
para lá (dangling pointers)
– Usar além da área alocada (memory overflow)
LINGUAGEM C
12
• As características principais da linguagem C são:
– Estrutura simples com poucas palavras chave.
– Operações de entrada e saída são feitas por meio de biblioteca.
• #include stdio.h
– Flexibilidade de implementação.
– Manuseio de memória por meio de apontadores.
– Operadores incremento e decremento.
– Portabilidade.
LINGUAGEM C
13
• A estrutura básica de um programa em C para
microcontroladores é a seguinte
LINGUAGEM C
14
• A linguagem C é case sensitive
– Diferencia as letras maiúsculas das minúsculas
• Palavras reservadas
LINGUAGEM C
15
• Representação Numérica
LINGUAGEM C
16
• Toda variável usada em um programa deve ser declarada como
de um determinado tipo, que define seu tamanho (em número
de bits) e suas características. As variáveis podem ser:
LINGUAGEM C
17
• Modificadores de Tipos de Dados
Determinam o modo como as variáveis podem
ser acessadas e, além disso, especificam se a
variável pode ser alterada ou não.
LINGUAGEM C
18
• Tipos de Dados Inteiros
LINGUAGEM C
19
• Constantes
– Servem para criar símbolos de valor constante que auxiliam na
programação. No momento da compilação, o compilador se encarrega
de atribuir os valores corretos aos símbolos criados.
LINGUAGEM C
20
• Definições
– Atribuições de outros nomes a símbolos já existentes no microcontrolador.
Por exemplo, imagine que você tenha
um LED ligado ao bit 0 da porta A do
seu microcontrolador, além de um
motor DC ligado ao bit 1 dessa
mesma porta. Para facilitar a
programação, pode-se fazer:
LINGUAGEM C
21
• Definições
– Atribuições de outros nomes a símbolos já existentes no microcontrolador.
LINGUAGEM C
22
• Variáveis: devem ser declaradas da seguinte forma:
• Exemplos:
• Podem ser locais ou globais
– Escopo da variável por todo o programa
LINGUAGEM C
23
• Funções
– Trechos de códigos que são repetidos várias vezes
• Pode-se isolar estes trechos em funções.
– Assim, podemos chamar uma função em diferentes pontos do programa
principal, evitando reescrever aquele trecho de código repetidamente
LINGUAGEM C
24
• Funções
LINGUAGEM C
25
• Funções
LINGUAGEM C
26
• Operadores
LINGUAGEM C
27
• Operadores: Aritméticos
LINGUAGEM C
28
• Operadores: Relacionais
LINGUAGEM C
29
• Operadores: Relacionais
LINGUAGEM C
30
• Operadores: Booleanos
– usados para realizar testes booleanos entre elementos em um teste
condicional
LINGUAGEM C
31
• Operadores: Booleanos
– usados para realizar testes booleanos entre elementos em um teste
condicional
LINGUAGEM C
32
• Operadores: Lógicos
– usados para realizar testes lógicos bit a bit
LINGUAGEM C
33
• Operadores: Lógicos
– usados para realizar testes lógicos bit a bit
se PORTA.B0 for igual a um E PORTA.B1
for igual a um, então cont é incrementado
em uma unidade
LINGUAGEM C
34
• Operadores: Lógicos
– usados para realizar testes lógicos bit a bit
se PORTA.B0 for igual a um E PORTA.B1
for igual a um, então cont é incrementado
em uma unidade
se PORTA.B0 for igual a um OU PORTA.B1
for igual a um, então o valor de cont é
deslocado para a esquerda
LINGUAGEM C
35
• Operadores: Lógicos
– usados para realizar testes lógicos bit a bit
se PORTA.B0 for igual a um E PORTA.B1
for igual a um, então cont é incrementado
em uma unidade
se PORTA.B0 for igual a um OU PORTA.B1
for igual a um, então o valor de cont é
deslocado para a esquerda
se PORTA.B0 for igual a um E PORTA.B1
não for igual a um, então o valor de cont é
decrementado de uma unidade
LINGUAGEM C
36
• Estruturas Condicionais: if
LINGUAGEM C
37
• Estruturas Condicionais: if
Em C, qualquer número diferente de zero
é considerado verdadeiro, o que significa
que a condição if só será falsa se o teste
lógico aplicado resultar em zero (0).
Qualquer outrovalor, mesmo que
negativo, é considerado verdadeiro (1).
LINGUAGEM C
38
• Estruturas Condicionais: if
IMPORTANTE:
= -> ATRIBUIÇÃO
== -> COMPARAÇÃO
(operador booleano)
LINGUAGEM C
39
• Estruturas Condicionais: if-else
LINGUAGEM C
40
• Estruturas Condicionais: if-else-if
LINGUAGEM C
41
• Estruturas Condicionais: switch
• O comando switch testa o valor de uma
variável e executa os comandos
correspondentes a casos (cases) pré-
estabelecidos.
• Cada case define uma série de comandos que
serão executados até chegar na instrução
break.
• Quando nenhum caso correspondente for
encontrado, a cláusula default será executada.
Porém, o uso da cláusula default é opcional.
LINGUAGEM C
42
• Estruturas Condicionais: switch
LINGUAGEM C
43
• Estruturas de Repetição: for
• Exemplo:
LINGUAGEM C
44
• Estruturas de Repetição: for e o comando break
O comando break é utilizado para
encerrar o laço for antes de se completar
todas as iterações. Quando o laço é
quebrado, o programa pula para a
próxima instrução após o laço
LINGUAGEM C
45
• Estruturas de Repetição: while
LINGUAGEM C
46
• Estruturas de Repetição: while
LINGUAGEM C
47
• Estruturas de Repetição: do-while
LINGUAGEM C
48
• Estruturas de Repetição: do-while
• Diferença para o while?
– while: comandos executados depois do teste – pré-teste
– do-while: comandos executados antes do teste – pós-teste
ARA0301 PROGRAMAÇÃO DE MICROCONTROLADORES
49
• Dúvidas?
• Fiquem à vontade para entrar em contato no 
RONEY.LIRASALE@professores.estacio.br
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40
	Slide 41
	Slide 42
	Slide 43
	Slide 44
	Slide 45
	Slide 46
	Slide 47
	Slide 48
	Slide 49
	Slide 50

Mais conteúdos dessa disciplina