IFCE – Campus Cedro
Mecatrônica Microcontroladores
Prof. Eng. Derig Almeida Vidal
Mestrando em Computação Aplicada, Engenheiro de Produção e Tecnólogo em Automática
Aula 06
Introdução a Linguagem C para PIC
Prof. Derig Almeida Vidal IFCE - Cedro
Sumário
• Introdução • Tradução • Fluxograma • Álgebra Booleana • Variáveis • OperadoresProf. Derig Almeida Vidal IFCE - Cedro
Introdução
• A criação de programas para microcontroladores e microprocessadores pode ser uma tarefa
desgastante à medida que aumenta a
complexidade da aplicação sendo desenvolvida. • Os primeiros dispositivos programáveis tinham
seus programas escritos em linguagem de máquina e inseridos através de teclado, leitora de cartões, fitas perfuradas, etc. Ou seja, bastante complicada.
Prof. Derig Almeida Vidal IFCE - Cedro
Introdução
• Devido a demanda crescente por programação de sistemas, foi natural o surgimento de uma nova forma de programação de sistemas, o Assembly; • Esta consiste em uma forma alternativa de
representação dos códigos de máquina usando mnemônicos (abreviações de termos usuais).
• A tradução do mnemônico em código de máquina é realizada por um programa chamado Assembler (montador).
Prof. Derig Almeida Vidal IFCE - Cedro
Introdução
Assembler
Código de Máquina
0011000010001100
Assembly
MOVLW 0x8C
Prof. Derig Almeida Vidal IFCE - Cedro
Introdução
• Apesar de mais simples o Assembly não resolveu todos os problemas dos programadores.
• Ela é uma linguagem de baixo nível, não
possuindo nenhum comando, instrução ou função além daqueles definidos no conjunto de instruções do processador utilizado, implicando em um
trabalho extra do programador que teria que desenvolver diversas rotinas que não fazem parte do conjunto de instruções do processador.
Prof. Derig Almeida Vidal IFCE - Cedro
Introdução
• Então surgiram as chamadas linguagens de alto
nível.
• Elas são criadas para permitir a programação utilizando comandos de alto nível e que são
posteriormente traduzidos para linguagem de baixo nível do processador utilizado.
Assembler Código de Máquina 0011000010001100 Assembly MOVLW 0x8C Assembler Compilador Linguagem de Alto Nível
Prof. Derig Almeida Vidal IFCE - Cedro
Introdução - História
• A primeira linguagem de alto nível com grande aceitação foi o FORTRAN (FORmula TRANslator), uma linguagem voltada para a análise e resolução de problemas matemáticos criada na metada da década de 50, por pesquisadores da IBM
• Em seguida vieram o COBOL (COmmon Business Oriented Language) em 1959, e o ALGOL
(ALGOrithmic Language) em 1960, que originou diversas outras como o PASCAL e o C.
Prof. Derig Almeida Vidal IFCE - Cedro
Introdução - História
• Já a linguagem C foicriada por Dennis
Ritchie em 1972 na
Bell Laboratories e consiste em uma linguagem de nível intermediário entre o Assembly (tão eficiente e rápida quanto) e as linguagens de alto nível (tão estruturada e lógica quanto).
Prof. Derig Almeida Vidal IFCE - Cedro
Introdução - História
• Origens da linguagem C:– ALGOL
– BCPL (Basic Combined Programming Language) derivada da CPL (que por sua vez foi derivada do ALGOL)
– B: linguagem desenvolvida por Ken Thompson da Bell Laboratories em 1970.
Prof. Derig Almeida Vidal IFCE - Cedro
Introdução
• Até o desenvolvimento do C os SO (Sistemas Operacionais) eram desenvolvidos em Assembly.
– Vantagens do Assembly:
• Eficiência: é extremamente eficiente devido à proximidade com o hardware da máquina;
• Velocidade: devido a sua grande eficiência eles são bem mais rápidos;
– Desvantagens do Assembly:
• Complexidade: demanda que o programador possua um profundo conhecimento do hardware;
• Portabilidade: programa que roda em um sistema pode não rodar em outro.
Prof. Derig Almeida Vidal IFCE - Cedro
Introdução
• C utiliza a filosofia de programação estruturada (onde os programas são divididos em módulos ou estruturas independentes entre si e com o objetivo de realizar determinada tarefa).
• Permite assim uma construção mais simples e clara do software da aplicação, possibilitando a criação de programas com maior complexidade. • Atualmente, a maioria dos microcontroladores do
Prof. Derig Almeida Vidal IFCE - Cedro
Introdução
• O C permite:– O desenvolvimento de aplicações muito mais complexas do que seria viável apenas com o Assembly;
– O programador se concentra apenas no
desenvolvimento do programa (ao invés do controle e localização das variáveis, verificação de bancos de memória, etc.).
– Grande velocidade na criação de novos projetos devido a facilidade na programação;
– Eficiência (medida do grau de inteligência com que o compilador traduz um programa em C para código de
máquina). Prof. Derig Almeida Vidal
IFCE - Cedro
Introdução
• O aspecto eficiência é muito importante,
lembrando, por exemplo, o PIC12C508 e 16C54, possuem apenas:
– 512 palavras de memória de programa; e, – 25 bytes de RAM.
Prof. Derig Almeida Vidal IFCE - Cedro
PASCAL x C
• PASCAL
Begin ... end. := = Function e procedure• C
{ ... } = == Apenas functionProf. Derig Almeida Vidal IFCE - Cedro
Introdução
• A programação constitui-se na tradução do
pensamento lógico necessário para o cumprimento de determinada tarefa, em uma seqüência de comandos que podem ser interpretados e executados por uma máquina.
• Desta forma, se traduz num processo de
identificação e solução de problemas. Para isso o programador se utiliza de um conjunto de
Prof. Derig Almeida Vidal IFCE - Cedro
Introdução
• Exposição do problema: descrição detalhada do problema a ser resolvido pelo programa;
• Análise da solução: elaboração da solução ou soluções que melhor resolvem o problema; • Codificação da solução: descrição seqüencial
passo a passo da solução que melhor resolve o problema (algoritmo);
• Tradução do código: tradução da seqüência de comandos que possam ser corretamente
interpretados pela linguagem de programação utilizada;
Prof. Derig Almeida Vidal IFCE - Cedro
Introdução
• Depuração (Debug): processo de verificação e teste do programa de forma a localizar e solucionar todas as eventuais falhas e erros de codificação que tenham acontecido em quaisquer das fases anteriores.
Prof. Derig Almeida Vidal IFCE - Cedro
Programas que traduzem o código
Interpretador
• Efetua a tradução de uma linguagem de alto nível para linguagem de máquina da seguinte forma:
– Obtém próxima instrução do código-fonte em linguagem de alto nível;
– Traduz para as instruções correspondentes em linguagem de máquina;
– Executa as instruções em linguagem de máquina; e
– Repete o passo 1 até o fim do programa
• Ex: JAVA, BASIC STAMP, BASIC, etc.
Prof. Derig Almeida Vidal IFCE - Cedro
Programas que traduzem o código
Compilador
• Efetua a tradução de todo o código-fonte em linguagem de alto nível para as instruções correspondentes em linguagem de máquina, gerando o código-objeto do programa.
Prof. Derig Almeida Vidal IFCE - Cedro
Programas que traduzem o código
Compilador x Interpretador
• No interpretador o trabalho de tradução do código-fonte, além de ser em tempo real, deve ser feito pelo próprio processador que irá executar o código gerado.
• Desta forma, para o nosso caso (o programa vai estar no PIC), é melhor o compilador.
Prof. Derig Almeida Vidal IFCE - Cedro
Programas que traduzem o código
Compilador x Interpretador
• Outro ponto a ser destacado é a otimização de código.
• No interpretador quando passa os comandos para baixo nível repete, quantas vezes aparecer em alto nível, uma seqüência de comandos em baixo nível. • No compilador isso é bem mais complexo, por isso
não é realizado no PIC e sim em um computador de maior porte e depois copiado o código fonte.
Prof. Derig Almeida Vidal IFCE - Cedro
Fluxogramas
• São elementos gráficos utilizados para estabelecer a seqüência de operações necessárias para o cumprimento de determinada tarefa e,
conseqüentemente , a resolução de um problema. • Eles auxiliam grandemente a tarefa de codificação
de um programa.
Prof. Derig Almeida Vidal IFCE - Cedro
Fluxogramas
• Início ou termino do programa algoritmo;
• Processo: realização de uma determinada tarefa;
• Dados: representa a entrada de dados;
• Tomada de decisão: teste condicional.
Prof. Derig Almeida Vidal IFCE - Cedro
Fluxogramas
Início Soma A+ B e guarda em C Pega o primeiro numero (A) Pega o segundo numero (B)Fim Prof. Derig Almeida Vidal
IFCE - Cedro
Fluxogramas
Início Fim Contagem = 10? Contagem = 0 Soma 1 à contagem Não SimProf. Derig Almeida Vidal IFCE - Cedro
Álgebra Booleana
• A álgebra booleana é um ramo da matemática encarregada da resolução de problemas lógicos tendo como um dos principais articuladores o inglês George Boole (1815-1864).
Prof. Derig Almeida Vidal IFCE - Cedro
Álgebra Booleana
• É baseada em:
– Proposições: afirmação verbal passível de ser classificada como sendo verdadeira ou falsa. Ex: “Hoje está frio”, “Fulano é maior do que Ciclano”. – Operadores lógicos relacionais: E, OU e NÃO.
Prof. Derig Almeida Vidal IFCE - Cedro
Álgebra Booleana – E (AND)
Conjunção de duas ou mais proposições somente
será verdadeira se todas as proposições forem verdadeiras.
Prof. Derig Almeida Vidal IFCE - Cedro
Disjunção de duas ou mais proposições será
verdadeira se qualquer das proposições for verdadeira.
Álgebra Booleana – OU (OR)
Prof. Derig Almeida Vidal IFCE - Cedro
Álgebra Booleana – NÃO (NOT)
Prof. Derig Almeida Vidal IFCE - Cedro
Variáveis
• Representação simbólica para elementos pertencentes a um determinado conjunto. • São armazenadas na memória da máquina (na
RAM) e podem assumir qualquer valor dentro de um conjunto de valores possíveis.
• Pode assumir diversos valores durante a execução do programa, mas jamais duas simultaneamente. • São classificadas segundo o tipo de conteúdo que
armazenam e podem ser: numéricas, caractere, alfanuméricas e lógicas.
Prof. Derig Almeida Vidal IFCE - Cedro
Variáveis
• Armazenamento de dados numéricos podem ser classificadas como:
– Inteiras: utilizadas para armazenar valores inteiros. Ex: 0, 5, 156, etc.
– Reais ou ponto flutuante: utilizadas para armazenar valores não inteiros, ou seja, reais. Normalmente usam mais espaço na memória para serem armazenadas. Ex: 1.8, 25.47, 99999.999999, etc.
Prof. Derig Almeida Vidal IFCE - Cedro
Variáveis
• Variáveis do tipo caractere são utilizadas para representar um caractere, utilizando um código especial (normalmente o ASCII). Podem ser ainda agrupadas formando frases ou textos.
• Variáveis alfanuméricas são utilizadas para armazenar tanto caracteres como valores
numéricos, mas nunca os dois ao mesmo tempo. • Variáveis do tipo lógico são capazes de armazenar
um estado lógico: verdadeiro ou falso.
Prof. Derig Almeida Vidal IFCE - Cedro
Operadores
• São elementos ou simbolos gráficos utilizados para relacionar ou modificar um ou mais dados ou variáveis.
• Podem ser classificados em:
– Matemáticos: utilizados para efetuar
determinada operação matemárica em relação a um ou mais dados. Ex: adição subtração, etc.; – Relacionais: para relacionar dois elementos ou
dados. Ex: maior, menor, igual, etc;
Prof. Derig Almeida Vidal IFCE - Cedro
Operadores
– Lógicos: para operações lógicas booleanas entre dois ou mais elementos ou dados. Ex: AND, OR, NOT, etc.
– Lógicos bit a bit: para operações lógicas bit a bit entre um ou mais elementos ou dados, conforme o caso. São realizadas entre cada um dos bits dos dados, resultando em um valor. Ex: AND, OR, rotação de bit, etc.
– Memória: utilizados para efetuar operações em relação a memória do equipamento. Ex:
Prof. Derig Almeida Vidal IFCE - Cedro
Exercícios
Nas equações booleanas seguintes, quais valores de A, B e C tornam R verdadeira? R = (A e B e C) a) A=V, B=F, C=V b) A=F, B=F, C=F c) A=F, B=V, C=V d) A=V, B=V, C=V R = (( A e (não B)) ou C)) a) A=F, B=F, C=F b) A=F, B=F, C=V c) A=F, B=V, C=F d) A=V, B=F, C=F
Prof. Derig Almeida Vidal IFCE - Cedro
Exercícios
Nas equações booleanas seguintes, quais valores de A, B e C tornam R verdadeira?
R = ((não A) ou (não B) ou (não C))
a) A=V, B=V, C=V b) A=F, B=F, C=F c) A=V, B=F, C=F d) A=V, B=V, C=F R = (( A ou B) e (não C)) a) A=V, B=F, C=V b) A=F, B=F, C=V c) A=F, B=V, C=F d) A=V, B=V, C=F
Prof. Derig Almeida Vidal IFCE - Cedro
Exercícios
Supondo a afirmação: se não estiver chovendo e eu sair mais cedo do trabalho, iremos à praia. E considerando A= “está chovendo?”, B = “eu sai mais cedo do trabalho?” e C a resposta: “iremos à praia”, determine a equação booleana que
descreve corretamente a afirmação inicial: a) A e B = C
b) A ou B = C c) A e (não B) = C d) (não A) e B = C
Prof. Derig Almeida Vidal IFCE - Cedro
Exercícios
Qual o tipo de variável necessário para armazena cada um dos seguintes dados:
a) 150 b) “Linguagem C” c) 100,1 d) 250 e) “123” f) V g) -5 h) F
Prof. Derig Almeida Vidal IFCE - Cedro
Bibliografia
• PEREIRA, Fábio. Microcontroladores PIC: