SlideShare uma empresa Scribd logo
Linguagem C
Resumo da linguagem C com foco em desenvolvimento para
microcontroladores PIC baseado na IDE MikroC for PIC
Por : Fábio B. de Souza
Porque usar linguagem C?
•Características:
•Estruturada;
•Alto nível (comparada ao Assembly);
•Facilidade de acesso ao hardware;
•Portabilidade;
•Curva de aprendizagem reduzida;
•Reutilização de código;
Estrutura básica de um programa em C para
microcontroladores
void main() {
//inicializações de hardware e software
while(1) //loop infinito
{
/*tarefas a serem executadas
pelo microcontrolador durante
o funcionamento */
}
}
Comentários
São Utilizados para:
◦ Documentação do software;
◦ Exclusão de linhas durante a compilação.
Comentários de linha simples:
//este é um comentário de linha simples
Comentários de Múltiplas linhas:
/*
este é um
comentário de
múltiplas linhas
*/
Representação numérica
• Decimal:
• valorDecimal = 125;
• Binário:
• PORTA=0b11010011;
• Hexadecimal:
• valor_hexa = 0xA4;
• Octal:
• valorOctal=075;
• Caracter:
• valorCarcter = ‘A’;
Tipos de Dados
TIPO RESPRESENTA
char caracteres
int inteiros
float e double
valores com casas decimais
(ponto flutuante)
void nulos
Modificadores de tipos
Modificador modificação
signed Sinalizado
Unsigned Não sinalizado
Short Inteiro menor que o padrão
Log Inteiro maior que o padrão
Tipos de dados no MikroC
Tipos inteiros:
TIPO Tamanho Range
bit 1–bit 0 or 1
sbit 1–bit 0 or 1
(unsigned) char 1 byte 0 .. 255
signed char 1 byte - 128 .. 127
(signed) short (int) 1 byte - 128 .. 127
unsigned short (int) 1 byte 0 .. 255
(signed) int 2 byte -32768 .. 32767
unsigned (int) 2 byte 0 .. 65535
(signed) long (int) 4 byte -2147483648 .. 2147483647
unsigned long (int) 4byte 0 .. 4294967295
Tipos de dados no MikroC
Tipo de ponto flutuante:
Tipo Tamanho Range
float 4 byte -1.5 * 1045 .. +3.4 * 1038
double 4 byte -1.5 * 1045 .. +3.4 * 1038
long double 4 byte -1.5 * 1045 .. +3.4 * 1038
Declaração de Variáveis
Um variável é declarada da seguinte forma:
<qualificador> + <tipo de dado> + <nome da variável> + <valor>;
Obs.: onde o valor pode ou não ser inicializado.
Exemplos:
unsigned int valor = 12345;
int contador;
short y;
Variável local
• É declarada dentro de um bloco de instruções, é só pode se acessada
dentro deste bloco.
• Exemplo:
int delay()
{
int valor1 =5;
int valor2 =7;
return(valor1+valor2)/2;
}
Variável global
• É declarada fora de bloco de função e pode ser acessada por todas as funções e blocos de instruções.
• Exemplo:
int valor1 =5;
int valor2 =7;
int media()
{
return(valor1+valor2)/2;
}
int soma()
{
return(valor1+valor2)/
}
Operadores Aritméticos
• Realizam operações matemáticas:
OPERADOR AÇÃO
+ Adição
- Subtração
* Multiplicação
/ Divisão
% Resto de divisão inteira
++ Incremento
-- Decremento
Operadores Relacionais
• Usados em testes condicionais para determinar relações entre dados.
OPERADOR AÇÃO
> Maior que
>= Maior ou igual que
< Menor que
<= Menor ou igual que
== Igual a
!= Diferente de
Operadores lógicos
• São usados para realizar testes booleanos entre elementos em um
teste condicional
OPERADOR AÇÃO
&& AND (E)
|| OR (OU)
! NOT (NÃO)
Operadores lógicos bit a bit
• São utilizados para operações lógicas entre elementos ou variáveis.
OPERADOR AÇÃO
& AND(E)
| OR(OU)
^ XOR (OU EXCLUSIVO)
~ NOT (NÃO)
>> Deslocamento à direita
<< Deslocamento à esquerda
Associação de operadores
• Abreviação entre a operação e atribuição
Forma expandida Forma reduzida
x = x + y x += y
x = x - y x -= y
x = x * y x *= y
x = x / y x /= y
x = x % y x %= y
x = x & y x &= y
x = x | y x |= y
x = x ^ y x ^= y
x = x << y x <<= y
x = x >> y x >>= y
if
• Utilizada para executar um comando ou bloco de comandos no caso
de uma determinada condição ser avaliada como verdadeira.
• Forma geral:
• if(condição) comando;
• Exemplo:
• if(temperatura < setPoint) RELE = 1;
if - else
• Utilizado quando há a necessidade de tomar uma ação caso a
condição for avaliada como falsa.
if (condição)
comandoA;
else
comandoB;
Exemplo:
if (temperatura < setpoint)
rele = 1;
else
rele = 0;
if - else
• Para executar um bloco de códigos dentro da declaração if- else:
if(condição)
{
comandoA1; //bloco de código para a condição verdadeira
comandoaA2;
...
comandoAn;
}
else
{
comandoB1; //bloco de código para a condição falsa
comandoB2;
...
comandoBn;
}
switch
• É utilizado para a realização de comparações sucessivas de uma forma elegante, clara e
eficiente.
switch(variável)
{
case constante1:
comandoA;
. . .
break;
case constante2:
comandoB;
. . .
break;
. . .
. . .
default:
comandoX;
}
for
 Forma geral:
for( inicialização;condição;incremento) comando;
Ou
for( inicialização;condição;incremento)
{
Comando1;
Comando2;
. . .
ComandoN;
}
onde:
• inicialização: essa seção conterá uma inicialização para a variável;
• condição: que interromperá o laço
• incremento: operação a cada iteração
while
• Repete um comando ou um conjunto de instruções enquanto uma
condição for avaliada como verdadeira.
• Forma geral:
while(condição)
{
comando1;
comando2;
...
comandoN;
}
do-while
• Este laço é uma variação do comando WHILE, sendo que neste caso o
comando será executado antes de testa se a condição é verdadeira.
• Forma geral:
do
{
comandoA;
comandoB;
...
comandoN;
} while (condição);

Mais conteúdo relacionado

Mais procurados

Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
Willians Miyabara
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
Mauro Pereira
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controle
Professor Samuel Ribeiro
 
Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem C
Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem CMicrocontroladores PIC - Manipulação de pinos de I/O com a Linguagem C
Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem C
Fabio Souza
 
Linguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De DecisaoLinguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De Decisao
Regis Magalhães
 
Estrutura de Dados - Procedimentos e Funções
Estrutura de Dados - Procedimentos e FunçõesEstrutura de Dados - Procedimentos e Funções
Estrutura de Dados - Procedimentos e Funções
Adriano Teixeira de Souza
 
Introducao ao C#
Introducao ao C#Introducao ao C#
Introducao ao C#
Andre Teixeira Lopes
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
apolllorj
 
Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1
Pacc UAB
 
Portas logicas
Portas logicasPortas logicas
Portas logicas
Reginaldo Steinhardt
 
CISC e RISC
CISC e RISCCISC e RISC
CISC e RISC
Bibina_Karen
 
Aula 4 conversor ad e pwm
Aula 4   conversor ad e pwmAula 4   conversor ad e pwm
Aula 4 conversor ad e pwm
Francisco Fambrini
 
Recursividade
RecursividadeRecursividade
Recursividade
Sérgio Souza Costa
 
Visualg
VisualgVisualg
Visualg
Pedro Silva
 
Exercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresExercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetores
Willians Miyabara
 
Amplificadores operacionais
Amplificadores operacionaisAmplificadores operacionais
Amplificadores operacionais
GIGLLIARA SEGANTINI DE MENEZES
 
Barramento de subestações
Barramento de subestações   Barramento de subestações
Barramento de subestações
nuno17718
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
Daniel Brandão
 
Estruturas de Repetição - FOR, WHILE e DO WHILE
Estruturas de Repetição - FOR, WHILE e DO WHILEEstruturas de Repetição - FOR, WHILE e DO WHILE
Estruturas de Repetição - FOR, WHILE e DO WHILE
Neto Côrtes
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
Adriano Teixeira de Souza
 

Mais procurados (20)

Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controle
 
Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem C
Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem CMicrocontroladores PIC - Manipulação de pinos de I/O com a Linguagem C
Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem C
 
Linguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De DecisaoLinguagem C 03 Estruturas De Decisao
Linguagem C 03 Estruturas De Decisao
 
Estrutura de Dados - Procedimentos e Funções
Estrutura de Dados - Procedimentos e FunçõesEstrutura de Dados - Procedimentos e Funções
Estrutura de Dados - Procedimentos e Funções
 
Introducao ao C#
Introducao ao C#Introducao ao C#
Introducao ao C#
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1Aula 7 - Repetição enquanto - parte 1
Aula 7 - Repetição enquanto - parte 1
 
Portas logicas
Portas logicasPortas logicas
Portas logicas
 
CISC e RISC
CISC e RISCCISC e RISC
CISC e RISC
 
Aula 4 conversor ad e pwm
Aula 4   conversor ad e pwmAula 4   conversor ad e pwm
Aula 4 conversor ad e pwm
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Visualg
VisualgVisualg
Visualg
 
Exercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresExercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetores
 
Amplificadores operacionais
Amplificadores operacionaisAmplificadores operacionais
Amplificadores operacionais
 
Barramento de subestações
Barramento de subestações   Barramento de subestações
Barramento de subestações
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Estruturas de Repetição - FOR, WHILE e DO WHILE
Estruturas de Repetição - FOR, WHILE e DO WHILEEstruturas de Repetição - FOR, WHILE e DO WHILE
Estruturas de Repetição - FOR, WHILE e DO WHILE
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 

Semelhante a Resumo linguagem c para microcontroladores PIC usando MikroC

Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Resumo de ...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Resumo de ...Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Resumo de ...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Resumo de ...
Fabio Souza
 
Vhdl
VhdlVhdl
Prática da disciplina de laboratório de conversão de energia
Prática da disciplina de laboratório de conversão de energiaPrática da disciplina de laboratório de conversão de energia
Prática da disciplina de laboratório de conversão de energia
Heitor Galvão
 
C pic
C picC pic
Linguagem c-para-microcontroladores
Linguagem c-para-microcontroladoresLinguagem c-para-microcontroladores
Linguagem c-para-microcontroladores
34macchia34
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
Rodrigo Almeida
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
Henry Raúl González Brito
 
Ponteiros de Função
Ponteiros de FunçãoPonteiros de Função
Ponteiros de Função
Rodrigo Almeida
 
LabMM3 - Aula teórica 08
LabMM3 - Aula teórica 08LabMM3 - Aula teórica 08
LabMM3 - Aula teórica 08
Carlos Santos
 
Debugging tips and tricks
Debugging tips and tricksDebugging tips and tricks
Debugging tips and tricks
Tales Andrade
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos
Carlos Santos
 
Projeto de uma controladora de drivers
Projeto de uma controladora de driversProjeto de uma controladora de drivers
Projeto de uma controladora de drivers
Rodrigo Almeida
 
Webinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcadosWebinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcados
Embarcados
 
2 controle fluxo
2 controle fluxo2 controle fluxo
2 controle fluxo
profwtelles
 
TDC2013 Otimizando-C
TDC2013 Otimizando-CTDC2013 Otimizando-C
TDC2013 Otimizando-C
osmarcf
 
Aula de C e C++
Aula de C e C++Aula de C e C++
Aula de C e C++
Maurício Moreira Neto
 
Introdução à programação embarcada
Introdução à programação embarcadaIntrodução à programação embarcada
Introdução à programação embarcada
Rodrigo Almeida
 
Kernel cooperativo
Kernel cooperativoKernel cooperativo
Kernel cooperativo
Rodrigo Almeida
 
Mini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e DistribuídaMini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e Distribuída
Deivid Martins
 
Lógica de programação pascal
Lógica de programação   pascalLógica de programação   pascal
Lógica de programação pascal
Jocelma Rios
 

Semelhante a Resumo linguagem c para microcontroladores PIC usando MikroC (20)

Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Resumo de ...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Resumo de ...Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Resumo de ...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Resumo de ...
 
Vhdl
VhdlVhdl
Vhdl
 
Prática da disciplina de laboratório de conversão de energia
Prática da disciplina de laboratório de conversão de energiaPrática da disciplina de laboratório de conversão de energia
Prática da disciplina de laboratório de conversão de energia
 
C pic
C picC pic
C pic
 
Linguagem c-para-microcontroladores
Linguagem c-para-microcontroladoresLinguagem c-para-microcontroladores
Linguagem c-para-microcontroladores
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
Ponteiros de Função
Ponteiros de FunçãoPonteiros de Função
Ponteiros de Função
 
LabMM3 - Aula teórica 08
LabMM3 - Aula teórica 08LabMM3 - Aula teórica 08
LabMM3 - Aula teórica 08
 
Debugging tips and tricks
Debugging tips and tricksDebugging tips and tricks
Debugging tips and tricks
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos
 
Projeto de uma controladora de drivers
Projeto de uma controladora de driversProjeto de uma controladora de drivers
Projeto de uma controladora de drivers
 
Webinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcadosWebinar: Arquitetura de software para sistemas embarcados
Webinar: Arquitetura de software para sistemas embarcados
 
2 controle fluxo
2 controle fluxo2 controle fluxo
2 controle fluxo
 
TDC2013 Otimizando-C
TDC2013 Otimizando-CTDC2013 Otimizando-C
TDC2013 Otimizando-C
 
Aula de C e C++
Aula de C e C++Aula de C e C++
Aula de C e C++
 
Introdução à programação embarcada
Introdução à programação embarcadaIntrodução à programação embarcada
Introdução à programação embarcada
 
Kernel cooperativo
Kernel cooperativoKernel cooperativo
Kernel cooperativo
 
Mini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e DistribuídaMini-curso Programação Paralela e Distribuída
Mini-curso Programação Paralela e Distribuída
 
Lógica de programação pascal
Lógica de programação   pascalLógica de programação   pascal
Lógica de programação pascal
 

Mais de Fabio Souza

RISC-V Design Challenge
RISC-V Design ChallengeRISC-V Design Challenge
RISC-V Design Challenge
Fabio Souza
 
Palestra Como o open hardware pode impactar na educação do nosso país
Palestra Como o open hardware pode impactar na educação do nosso paísPalestra Como o open hardware pode impactar na educação do nosso país
Palestra Como o open hardware pode impactar na educação do nosso país
Fabio Souza
 
Programe a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbedPrograme a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbed
Fabio Souza
 
Micropython - Python para microcontroladores
Micropython - Python para microcontroladoresMicropython - Python para microcontroladores
Micropython - Python para microcontroladores
Fabio Souza
 
Workshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da InternetWorkshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da Internet
Fabio Souza
 
Open Hardware - Projetos que estão mudando o mundo
Open Hardware - Projetos que estão mudando o mundoOpen Hardware - Projetos que estão mudando o mundo
Open Hardware - Projetos que estão mudando o mundo
Fabio Souza
 
Como publicar um projeto open hardware?
Como publicar um projeto  open hardware?Como publicar um projeto  open hardware?
Como publicar um projeto open hardware?
Fabio Souza
 
Como publicar um projeto open hardware?
Como publicar um projeto  open hardware?Como publicar um projeto  open hardware?
Como publicar um projeto open hardware?
Fabio Souza
 
Como o movimento maker e a internet das coisas estão revolucionando o mundo
Como o movimento maker e a internet das coisas estão revolucionando o mundoComo o movimento maker e a internet das coisas estão revolucionando o mundo
Como o movimento maker e a internet das coisas estão revolucionando o mundo
Fabio Souza
 
Montando sua própria placa arduino e compartilhando seus projetos de hardware
Montando sua própria placa arduino e compartilhando seus projetos de hardwareMontando sua própria placa arduino e compartilhando seus projetos de hardware
Montando sua própria placa arduino e compartilhando seus projetos de hardware
Fabio Souza
 
Monte sua franzininho, uma placa arduino compatível
 Monte sua franzininho, uma placa arduino compatível Monte sua franzininho, uma placa arduino compatível
Monte sua franzininho, uma placa arduino compatível
Fabio Souza
 
Como montar sua própria placa Arduino e compartilhar seus projetos de hardware
Como montar sua própria placa Arduino e compartilhar seus projetos de hardwareComo montar sua própria placa Arduino e compartilhar seus projetos de hardware
Como montar sua própria placa Arduino e compartilhar seus projetos de hardware
Fabio Souza
 
Workshop Microchip Curiosity Board
Workshop Microchip Curiosity BoardWorkshop Microchip Curiosity Board
Workshop Microchip Curiosity Board
Fabio Souza
 
Como montar sua própria placa Arduino e compartilhar seus projetos de hardware
Como montar sua própria placa Arduino e compartilhar seus projetos de hardwareComo montar sua própria placa Arduino e compartilhar seus projetos de hardware
Como montar sua própria placa Arduino e compartilhar seus projetos de hardware
Fabio Souza
 
Curso mbed e FRDM KL46Z da NXP
Curso mbed e FRDM KL46Z da NXPCurso mbed e FRDM KL46Z da NXP
Curso mbed e FRDM KL46Z da NXP
Fabio Souza
 
Curso mbed na KL25Z
Curso mbed na KL25ZCurso mbed na KL25Z
Curso mbed na KL25Z
Fabio Souza
 
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Motores
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - MotoresMicrocontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Motores
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Motores
Fabio Souza
 
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - TPM - TIM...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados -  TPM - TIM...Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados -  TPM - TIM...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - TPM - TIM...
Fabio Souza
 
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Conversor ...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Conversor ...Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Conversor ...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Conversor ...
Fabio Souza
 
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (Gener...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (Gener...Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (Gener...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (Gener...
Fabio Souza
 

Mais de Fabio Souza (20)

RISC-V Design Challenge
RISC-V Design ChallengeRISC-V Design Challenge
RISC-V Design Challenge
 
Palestra Como o open hardware pode impactar na educação do nosso país
Palestra Como o open hardware pode impactar na educação do nosso paísPalestra Como o open hardware pode impactar na educação do nosso país
Palestra Como o open hardware pode impactar na educação do nosso país
 
Programe a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbedPrograme a STM32L4 Discovery kit IoT node com ARM mbed
Programe a STM32L4 Discovery kit IoT node com ARM mbed
 
Micropython - Python para microcontroladores
Micropython - Python para microcontroladoresMicropython - Python para microcontroladores
Micropython - Python para microcontroladores
 
Workshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da InternetWorkshop - Cotrole sua casa remotamente através da Internet
Workshop - Cotrole sua casa remotamente através da Internet
 
Open Hardware - Projetos que estão mudando o mundo
Open Hardware - Projetos que estão mudando o mundoOpen Hardware - Projetos que estão mudando o mundo
Open Hardware - Projetos que estão mudando o mundo
 
Como publicar um projeto open hardware?
Como publicar um projeto  open hardware?Como publicar um projeto  open hardware?
Como publicar um projeto open hardware?
 
Como publicar um projeto open hardware?
Como publicar um projeto  open hardware?Como publicar um projeto  open hardware?
Como publicar um projeto open hardware?
 
Como o movimento maker e a internet das coisas estão revolucionando o mundo
Como o movimento maker e a internet das coisas estão revolucionando o mundoComo o movimento maker e a internet das coisas estão revolucionando o mundo
Como o movimento maker e a internet das coisas estão revolucionando o mundo
 
Montando sua própria placa arduino e compartilhando seus projetos de hardware
Montando sua própria placa arduino e compartilhando seus projetos de hardwareMontando sua própria placa arduino e compartilhando seus projetos de hardware
Montando sua própria placa arduino e compartilhando seus projetos de hardware
 
Monte sua franzininho, uma placa arduino compatível
 Monte sua franzininho, uma placa arduino compatível Monte sua franzininho, uma placa arduino compatível
Monte sua franzininho, uma placa arduino compatível
 
Como montar sua própria placa Arduino e compartilhar seus projetos de hardware
Como montar sua própria placa Arduino e compartilhar seus projetos de hardwareComo montar sua própria placa Arduino e compartilhar seus projetos de hardware
Como montar sua própria placa Arduino e compartilhar seus projetos de hardware
 
Workshop Microchip Curiosity Board
Workshop Microchip Curiosity BoardWorkshop Microchip Curiosity Board
Workshop Microchip Curiosity Board
 
Como montar sua própria placa Arduino e compartilhar seus projetos de hardware
Como montar sua própria placa Arduino e compartilhar seus projetos de hardwareComo montar sua própria placa Arduino e compartilhar seus projetos de hardware
Como montar sua própria placa Arduino e compartilhar seus projetos de hardware
 
Curso mbed e FRDM KL46Z da NXP
Curso mbed e FRDM KL46Z da NXPCurso mbed e FRDM KL46Z da NXP
Curso mbed e FRDM KL46Z da NXP
 
Curso mbed na KL25Z
Curso mbed na KL25ZCurso mbed na KL25Z
Curso mbed na KL25Z
 
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Motores
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - MotoresMicrocontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Motores
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Motores
 
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - TPM - TIM...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados -  TPM - TIM...Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados -  TPM - TIM...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - TPM - TIM...
 
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Conversor ...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Conversor ...Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Conversor ...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados - Conversor ...
 
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (Gener...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (Gener...Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (Gener...
Microcontroladores ARM Cortex M0+ Aplicação em robôs autoguiados- GPIO (Gener...
 

Último

Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 

Último (8)

Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 

Resumo linguagem c para microcontroladores PIC usando MikroC

  • 1. Linguagem C Resumo da linguagem C com foco em desenvolvimento para microcontroladores PIC baseado na IDE MikroC for PIC Por : Fábio B. de Souza
  • 2. Porque usar linguagem C? •Características: •Estruturada; •Alto nível (comparada ao Assembly); •Facilidade de acesso ao hardware; •Portabilidade; •Curva de aprendizagem reduzida; •Reutilização de código;
  • 3. Estrutura básica de um programa em C para microcontroladores void main() { //inicializações de hardware e software while(1) //loop infinito { /*tarefas a serem executadas pelo microcontrolador durante o funcionamento */ } }
  • 4. Comentários São Utilizados para: ◦ Documentação do software; ◦ Exclusão de linhas durante a compilação. Comentários de linha simples: //este é um comentário de linha simples Comentários de Múltiplas linhas: /* este é um comentário de múltiplas linhas */
  • 5. Representação numérica • Decimal: • valorDecimal = 125; • Binário: • PORTA=0b11010011; • Hexadecimal: • valor_hexa = 0xA4; • Octal: • valorOctal=075; • Caracter: • valorCarcter = ‘A’;
  • 6. Tipos de Dados TIPO RESPRESENTA char caracteres int inteiros float e double valores com casas decimais (ponto flutuante) void nulos
  • 7. Modificadores de tipos Modificador modificação signed Sinalizado Unsigned Não sinalizado Short Inteiro menor que o padrão Log Inteiro maior que o padrão
  • 8. Tipos de dados no MikroC Tipos inteiros: TIPO Tamanho Range bit 1–bit 0 or 1 sbit 1–bit 0 or 1 (unsigned) char 1 byte 0 .. 255 signed char 1 byte - 128 .. 127 (signed) short (int) 1 byte - 128 .. 127 unsigned short (int) 1 byte 0 .. 255 (signed) int 2 byte -32768 .. 32767 unsigned (int) 2 byte 0 .. 65535 (signed) long (int) 4 byte -2147483648 .. 2147483647 unsigned long (int) 4byte 0 .. 4294967295
  • 9. Tipos de dados no MikroC Tipo de ponto flutuante: Tipo Tamanho Range float 4 byte -1.5 * 1045 .. +3.4 * 1038 double 4 byte -1.5 * 1045 .. +3.4 * 1038 long double 4 byte -1.5 * 1045 .. +3.4 * 1038
  • 10. Declaração de Variáveis Um variável é declarada da seguinte forma: <qualificador> + <tipo de dado> + <nome da variável> + <valor>; Obs.: onde o valor pode ou não ser inicializado. Exemplos: unsigned int valor = 12345; int contador; short y;
  • 11. Variável local • É declarada dentro de um bloco de instruções, é só pode se acessada dentro deste bloco. • Exemplo: int delay() { int valor1 =5; int valor2 =7; return(valor1+valor2)/2; }
  • 12. Variável global • É declarada fora de bloco de função e pode ser acessada por todas as funções e blocos de instruções. • Exemplo: int valor1 =5; int valor2 =7; int media() { return(valor1+valor2)/2; } int soma() { return(valor1+valor2)/ }
  • 13. Operadores Aritméticos • Realizam operações matemáticas: OPERADOR AÇÃO + Adição - Subtração * Multiplicação / Divisão % Resto de divisão inteira ++ Incremento -- Decremento
  • 14. Operadores Relacionais • Usados em testes condicionais para determinar relações entre dados. OPERADOR AÇÃO > Maior que >= Maior ou igual que < Menor que <= Menor ou igual que == Igual a != Diferente de
  • 15. Operadores lógicos • São usados para realizar testes booleanos entre elementos em um teste condicional OPERADOR AÇÃO && AND (E) || OR (OU) ! NOT (NÃO)
  • 16. Operadores lógicos bit a bit • São utilizados para operações lógicas entre elementos ou variáveis. OPERADOR AÇÃO & AND(E) | OR(OU) ^ XOR (OU EXCLUSIVO) ~ NOT (NÃO) >> Deslocamento à direita << Deslocamento à esquerda
  • 17. Associação de operadores • Abreviação entre a operação e atribuição Forma expandida Forma reduzida x = x + y x += y x = x - y x -= y x = x * y x *= y x = x / y x /= y x = x % y x %= y x = x & y x &= y x = x | y x |= y x = x ^ y x ^= y x = x << y x <<= y x = x >> y x >>= y
  • 18. if • Utilizada para executar um comando ou bloco de comandos no caso de uma determinada condição ser avaliada como verdadeira. • Forma geral: • if(condição) comando; • Exemplo: • if(temperatura < setPoint) RELE = 1;
  • 19. if - else • Utilizado quando há a necessidade de tomar uma ação caso a condição for avaliada como falsa. if (condição) comandoA; else comandoB; Exemplo: if (temperatura < setpoint) rele = 1; else rele = 0;
  • 20. if - else • Para executar um bloco de códigos dentro da declaração if- else: if(condição) { comandoA1; //bloco de código para a condição verdadeira comandoaA2; ... comandoAn; } else { comandoB1; //bloco de código para a condição falsa comandoB2; ... comandoBn; }
  • 21. switch • É utilizado para a realização de comparações sucessivas de uma forma elegante, clara e eficiente. switch(variável) { case constante1: comandoA; . . . break; case constante2: comandoB; . . . break; . . . . . . default: comandoX; }
  • 22. for  Forma geral: for( inicialização;condição;incremento) comando; Ou for( inicialização;condição;incremento) { Comando1; Comando2; . . . ComandoN; } onde: • inicialização: essa seção conterá uma inicialização para a variável; • condição: que interromperá o laço • incremento: operação a cada iteração
  • 23. while • Repete um comando ou um conjunto de instruções enquanto uma condição for avaliada como verdadeira. • Forma geral: while(condição) { comando1; comando2; ... comandoN; }
  • 24. do-while • Este laço é uma variação do comando WHILE, sendo que neste caso o comando será executado antes de testa se a condição é verdadeira. • Forma geral: do { comandoA; comandoB; ... comandoN; } while (condição);