SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Downloaden Sie, um offline zu lesen
Tipos de dados, função main e tempo
Prof. Rodrigo Maximiano Antunes de Almeida
Universidade Federal de Itajubá
rodrigomax@unifei.edu.br
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 1 / 48
Teclado
Revisão
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 2 / 48
Dados Importantes
Teórica:
Local ⇒ Sala I.2.1.11
Horário ⇒ 15:45-17:35 (ter)
Laboratório:
Local ⇒ Sala LEC I / LASER
Horário ⇒
P1: 8:00-9:45 (qui) ELT025 (LASER)
P2: 10:15-12:00 (qui) ELT025 (LASER)
P3: 15:50-17:30 (qui) ELT025 (LECI)
P1: 13:30-15:10 (ter) ELT802 (LECI)
Levar a placa + adaptador de tomada
Datas Importantes *:
Prova 01 ⇒ 17/09
Prova 02 ⇒ 26/11
Sub ⇒ 03/12
* Datas
Todas as datas estão sujeitas a alterações
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 3 / 48
Linguagem C
Referência circular (rev)
A função LerTemperatura() faz um teste: se o valor for maior que um
patamar chama a função EnviaSerial() com o código 0x30.
1 #include "serial.h"
2 char LerTemperatura ( void ) ;
3 void AjustaCalor ( char val ) ;
A função LerSerial() receber um valor e repassa para a função
AjustaCalor().
1 #include "temp.h"
2 char LerSerial ( void ) ;
3 void EnviaSerial ( char val ) ;
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 4 / 48
Linguagem C
Referência circular (rev)
#include “serial.h”
char LerTemperatura(void);
void AjustaCalor(char val);
temp.h
#include “temp.h”
char LerSerial(void);
void EnviaSerial(char val);
serial.h
#include “serial.h”
char LerTemperatura(void);
void AjustaCalor(char val);
temp.h
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 5 / 48
Linguagem C
Referência circular (rev)
Solução: criar uma estrutura de controle para pré compilação.
1 #ifndef TAG_CONTROLE
2 #define TAG_CONTROLE
3 // t o d o o c o n t e ú d o do a r q u i v o vem a q u i .
5 #endif //TAG_CONTROLE
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 6 / 48
Linguagem C
Referência circular(rev)
#infdef TEMP_H
#define TEMP_H
#include “serial.h”
char LerTemperatura(void);
void AjustaCalor(char val);
#endif
temp.h
#infdef SERIAL_H
#define SERIAL_H
#include “temp.h”
char LerSerial(void);
void EnviaSerial(char val);
#endif
serial.h
#infdef TEMP_H
//tag já definida,
//pula o conteúdo
#endif
temp.h
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 7 / 48
Linguagem C
Tipos de dados em C
Tipos de dados em C
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 8 / 48
Linguagem C
Conversão Binário, Decimal, Hexadecimal
Toda informação que é inserida num computador é armazenada em
formato binário
Cada tipo de informação contém uma quantidade diferente de bits
Cada bit pode representar informações diferentes, mesmo dentro de
uma mesma variável
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 9 / 48
Linguagem C
Tipos de dados em C
Tipo Bits Bytes Faixa de valores
char 8 1 -128 à 127
int 16 2 -32.768 à 32.767
oat 32 4 3,4 x 10-38
à 3,4 x 1038
double 64 8 3,4 x 10-308
à 3,4 x 10308
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 10 / 48
Linguagem C
Conversão Binário, Decimal, Hexadecimal
Quando resolvemos codicar uma informação num formato digital, e
portanto nito, sempre existe perda de
informação
resolução
amplitude
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 11 / 48
Linguagem C
Conversão Binário, Decimal, Hexadecimal
Exemplos:
1 f l o a t x = 0 ;
2 while ( x != 4 )
3 {
4 printf ( i ) ;
5 x += 0 . 4 f ;
6 }
1 char x = 0 ;
2 while ( x  2 0 0 )
3 {
4 printf ( i ) ;
5 x++;
6 }
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 12 / 48
Linguagem C
Conversão Binário, Decimal, Hexadecimal
Conversão Binário-decimal
Dividir o número por 2
Anotar o valor do resto (0 ou 1)
Se o valor é maior que 0 voltar ao número 1
Escrever os valores obtidos através do passo 2 de trás para frente.
Apresentar o resultado
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 13 / 48
Linguagem C
Conversão Binário, Decimal, Hexadecimal
Exercicio 01) Converter os números
18
513
73
60
-15
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 14 / 48
Linguagem C
Conversão Binário, Decimal, Hexadecimal
Número 18:
18
2
= 9, resto 0
9
2
= 4, resto 1
4
2
= 2, resto 0
2
2
= 1, resto 0
1
2
= 0, resto 1
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 15 / 48
Linguagem C
Conversão Binário, Decimal, Hexadecimal
A representação de números negativos é feita através do MSB
0 = positivo
1 = negativo
Método de conversão: complemento de dois
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 16 / 48
Linguagem C
Conversão Binário, Decimal, Hexadecimal
Complemento de dois
Denir tamanho da palavra
Achar o representação em binário positiva com a mesma magnitude
Inverter todos os bits
Somar um ao resultado
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 17 / 48
Linguagem C
Conversão Binário, Decimal, Hexadecimal
Números fracionários (ponto utuante)
São divididos em expoente, mantissa e sinal
Sinal ocupa apenas um bit, como nos inteiros
A mantissa representa os algarismos signicativos
O expoente representa a magnitude
Ponto xo
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 18 / 48
Linguagem C
Conversão Binário, Decimal, Hexadecimal
Base Hexadecimal
Possui 16 unidadesdiferentes.
10 algarismos mais 6 letras
Facilita escrita de valores binários
Fácil conversão bin-hex
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 19 / 48
Linguagem C
Conversão Binário, Decimal, Hexadecimal
Dec Bin Hex Dec Bin Hex
0 0000 0 8 1000 8
1 0001 1 9 1001 9
2 0010 2 10 1010 A
3 0011 3 11 1011 B
4 0100 4 12 1100 C
5 0101 5 13 1101 D
6 0110 6 14 1110 E
7 0111 7 15 1111 F
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 20 / 48
Linguagem C
Conversão Binário, Decimal, Hexadecimal
Exercicio 02) Converter os números
1810 - 100102
51310 - 10000000012
7310 - 10010012
6010 - 1111002
-1510 - 11110012_8bits
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 21 / 48
Linguagem C
Conversão Binário, Decimal, Hexadecimal
Exercicio 02) Converter os números
como: 1810= 1-00102
12 = 116
00102 = 216
logo :
100102. = 1216.
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 22 / 48
Linguagem C
Modicadores de tamanho e sinal
Modicadores de tamanho e sinal
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 23 / 48
Linguagem C
Modicadores de tamanho e sinal
Tipo Bytes Excursão máxima
unsigned char 1 0 à 255
signed char 1 -128 à 127
unsigned int 2 0 à 65.535
signed int 2 -32.768 à 32.767
long int 4 -2.147.483.648 à 2.147.483.647
unsigned long int 4 0 à 4.294.967.295
short int 2 -32.768 à 32.767
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 24 / 48
Linguagem C
Modicadores de Acesso
Modicadores de Acesso
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 25 / 48
Linguagem C
Modicadores de Acesso
1 #define X ( *( near unsigned char *) 0 xF83 )
2 void main ( void )
3 {
4 while ( X!=X ) ;
5 }
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 26 / 48
Linguagem C
Modicadores de Acesso
Compilando o código anterior temos em assembler:
1 // S t a r t i n g pCode b l o c k
2 S_Teste__main code
3 _main :
4 . line 19 // T e s t e . c w h i l e (X!=X) ;
6 RETURN
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 27 / 48
Linguagem C
Modicadores de Acesso
1 #define X ( *( v o l a t i l e near unsigned char *) 0 xF83 )
2 void main ( void )
3 {
4 while ( X!=X ) ;
5 }
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 28 / 48
Linguagem C
Modicadores de Acesso
1 S_Teste__main code // S t a r t i n g pCode b l o c k
2 _main :
3 _00105_DS_ :
4 . line 19 // T e s t e . c w h i l e (X != X) ;
5 MOVLW 0 x83 // p r i m e i r a p a r t e do e n d e r e ç o
6 MOVWF r0x00
7 MOVLW 0 x0f // s e g u n d a p a r t e do e n d e r e ç o
8 MOVWF r0x01
9 MOVFF r0x00 , FSR0L
10 MOVFF r0x01 , FSR0H
11 MOVFF INDF0 , r0x00 // r e a l i z a p r i m e i r a l e i t u r a
12 MOVLW 0 x83 // p r i m e i r a p a r t e do e n d e r e ç o
13 MOVWF r0x01
14 MOVLW 0 x0f // s e g u n d a p a r t e do e n d e r e ç o
15 MOVWF r0x02
16 MOVFF r0x01 , FSR0L
17 MOVFF r0x02 , FSR0H
18 MOVFF INDF0 , r0x01 // r e a l i z a s e g u n d a l e i t u r a
19 MOVF r0x00 , W
20 XORWF r0x01 , W
21 BNZ _00105_DS_ // f a z o t e s t e p a r a i g u a l d a d e
22 RETURN
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 29 / 48
Linguagem C
Modicadores de Acesso
Utilização de const:
1 #define X ( *( v o l a t i l e const near unsigned char *) 0 xF83 )
2 // i n i c i o do programa
3 void main ( void )
4 {
5 X = 3 ;
6 }
A compilação resulta em erro:
1 Teste . c : error 3 3 : Attempt to assign value to a constant ←
variable (=)
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 30 / 48
Linguagem C
Modicadores de Posicionamento
Modicadores de Posicionamento
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 31 / 48
Linguagem C
Modicadores de Posicionamento
Existem dois modicadores de posicionamento
near
far
Não são padronizadas pela ISO C(99)
Indicam ao compilador a região em que a variável deve ser colocada
near - região de acesso mais rápido
far - região de acesso normal
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 32 / 48
Linguagem C
Modicador de persistência
Modicador de persistência
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 33 / 48
Linguagem C
Modicador de persistência
A persistência de uma variável pode ser assegurada com o modicador
static
Padronizada pela ISO C(99)
Garante que não haverá perda de informação na variável
Uma região de memória é reservada apenas para a variável em questão
1 // c r i a um c o n t a d o r p e r s i s t e n t e que é
2 // i n c r e m e n t a d o a ca d a chamada de f u n ç ã o
3 i n t ContadorPersistente ( i n t reseta ) {
4 char variavel_persistente ;
5 i f ( reseta ) { variavel_persistente = 0 ; }
6 else { return ( variavel_persistente++) ; }
7 return −1;
8 }
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 34 / 48
Linguagem C
Modicador de persistência
1 // c r i a um c o n t a d o r p e r s i s t e n t e que é
2 // i n c r e m e n t a d o a ca d a chamada de f u n ç ã o
3 i n t ContadorPersistente ( i n t reseta )
4 {
5 s t a t i c char variavel_persistente ;
6 i f ( reseta )
7 {
8 variavel_persistente = 0 ;
9 }
10 else
11 {
12 return ( variavel_persistente++) ;
13 }
14 return −1;
15 }
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 35 / 48
Linguagem C
Operações Aritiméticas
Operações Aritiméticas
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 36 / 48
Linguagem C
Operações Aritiméticas
1 void main ( void )
2 {
3 char var8 ;
4 i n t var16 ;
5 long i n t var32 ;
6 f l o a t pont16 ;
7 double pont32 ;
8 var8 = var8 + var16 ; // 1
9 var8 = var8 + var8 ; // 2
10 var16 = var8 * var8 ; // 3
11 var32 = var32 / var16 ; // 4
12 var32 = pont32 * var32 ; // 5
13 pont16 = var8 / var16 ; // 6
14 pont16 = pont32 * var32 ; // 7
15 pont16 = 40 / 8 0 ; // 8
16 }
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 37 / 48
Linguagem C
Função main()
Função main()
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 38 / 48
Linguagem C
Função main()
0x58 Testa A
0x57 30
0x56 A recebe
0x55 Limpa A
0x59 ...
0x8D Porta B
0x8C Salva em
0x8B 50
0x8A A recebe
0x8E ...
0x03 0x55
0x02 Pulo
0x01 0x8A
0x04 ...
0x00 Pulo
Endereço Instrução
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 39 / 48
Linguagem C
Função main()
O como indicar o ponto de início de um programa depende do
compilador.
Geralmente apenas a criação da função main já é suciente para o
compilador
O linker aloca a função main() em algum lugar disponível na memória
O linker atualiza o vetor de reset colocando um pulo para a função
main
1 void main ( void )
2 {
3 // a q u i e n t r a o c ó d i g o do programa
4 }
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 40 / 48
Linguagem C
Função main()
Atenção!
Para sistemas embarcados a função main é a primeira a ser executada,
portanto não pode receber parâmetro nenhum. Como ela é a ultima a ser
executada, também não existe a possibilidade de retornar algum valor.
Deve ser declarada como:
1 void main ( void )
2 {
3 // I n s i r a o c ó d i g o a q u i .
4 }
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 41 / 48
Linguagem C
Função main()
Geralmente os sistemas embarcados são feitos para serem
continuamente executados
As rotinas devem ser cíclicas
O sistema só para quando desligado
Atenção!
Nesta situação utiliza-se loops innitos.
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 42 / 48
Linguagem C
Função main()
1 void main ( void )
2{
3 for ( ; ; )
4 {
5 // a q u i e n t r a o
6 // c ó d i g o p r i n c i p a l
7 }
8}
1 void main ( void )
2{
3 while ( 1 )
4 {
5 // a q u i e n t r a o
6 // c ó d i g o p r i n c i p a l
7 }
8}
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 43 / 48
Linguagem C
Rotinas de Tempo
Rotinas de Tempo
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 44 / 48
Linguagem C
Rotinas de Tempo
É muito comum necessitar que o microcontrolador que um tempo sem
fazer nada. Uma maneira de atingir esse objetivo é utilizar um laço for.
1 unsigned char i ;
2 for ( i=0; i  1 0 ; i++) ;
Atenção!
Notar que não estamos utilizando os colchetes.
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 45 / 48
Linguagem C
Rotinas de Tempo
1 // c ó d i g o em a s s e m b l e r e q u i v a l e n t e do : f o r ( i =0; i 10; i ++) ;
2 MOVF r0x00 , W // i n i c i a l i z a W com 0 ←
( 1 c i c l o )
3 SUBLW 0 x0a // c o l o c a o v a l o r 10 ( 0 x0a ) no r e g i s t r o W ←
( 1 c i c l o )
4 MOVWF r0x00 //muda o v a l o r de W p a r a F ←
( 1 c i c l o )
5 _00107_DS_ :
6 DECFSZ r0x00 , F // d e c r e m e n t a F , s e F0 e x e c u t a o p r ó x i m o ←
( 1 c i c l o )
7 BRA _00107_DS_ //  p u l a  p a r a o l u g a r _00107_DS_ ←
( 2 c i c l o s )
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 46 / 48
Linguagem C
Rotinas de Tempo
São gastos 3 passos para inicialização, cada um de 1 ciclo.
Cada iteração gasta 2 passos, um de 1 ciclo e um de 2 ciclos
Para um PIC a 8 MHz cada ciclo gasta 0,5 us
Se desejamos um tempo de x segundos são necessárias 2 ∗ 109
∗ x
instruções.
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 47 / 48
Linguagem C
Rotinas de Tempo
1 unsigned char i , j , l ;
2 for ( i=0; i  3 4 ; i++) // 3+34*(30 ,003+3) = 1 , 0 2 0 , 2 0 7 i n s t r u ç õ e s
3 {
4 for ( j=0; j  1 0 0 ; j++) // 3+100*(297 + 3 ) = 3 0 , 0 0 3 i n s t r u ç õ e s
5 {
6 for ( k=0; k  9 8 ; k++) ; // 3+98*(3) = 297 i n s t r u ç õ e s
7 }
8 }
ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 48 / 48

Weitere ähnliche Inhalte

Was ist angesagt?

Aula - CLP & Linguagem Ladder
Aula - CLP & Linguagem LadderAula - CLP & Linguagem Ladder
Aula - CLP & Linguagem LadderAnderson Pontes
 
Manual Nano 36 turbo ''Central kxh-30-fs-v-12-14''
Manual Nano 36 turbo ''Central kxh-30-fs-v-12-14''Manual Nano 36 turbo ''Central kxh-30-fs-v-12-14''
Manual Nano 36 turbo ''Central kxh-30-fs-v-12-14''Luiz Avelar
 
Tema 9. memorias semiconductoras
Tema 9. memorias semiconductorasTema 9. memorias semiconductoras
Tema 9. memorias semiconductorasRebeca Ortega
 
Puerto serial
Puerto serialPuerto serial
Puerto serialtec
 
CUADERNO N#3 Aplicaciones Con Automatas Programables.pdf
CUADERNO N#3 Aplicaciones Con Automatas Programables.pdfCUADERNO N#3 Aplicaciones Con Automatas Programables.pdf
CUADERNO N#3 Aplicaciones Con Automatas Programables.pdfRafaelRiesgo2
 
exercicio-Organização e estrutura de Computadores
exercicio-Organização e estrutura de Computadoresexercicio-Organização e estrutura de Computadores
exercicio-Organização e estrutura de ComputadoresSuzana Viana Mota
 
Apostila+de+programação+ladder+ +clp+micrologix+1200
Apostila+de+programação+ladder+ +clp+micrologix+1200Apostila+de+programação+ladder+ +clp+micrologix+1200
Apostila+de+programação+ladder+ +clp+micrologix+1200Jeziel Rodrigues
 
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINOCONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINOFernando Marcos Marcos
 
TIA PORTAL Sitrain tags do plc
TIA PORTAL Sitrain tags do plcTIA PORTAL Sitrain tags do plc
TIA PORTAL Sitrain tags do plcJuremir Almeida
 
Automação com clp (ladder)
Automação com clp (ladder)Automação com clp (ladder)
Automação com clp (ladder)laenio
 

Was ist angesagt? (20)

Clp
ClpClp
Clp
 
Aula - CLP & Linguagem Ladder
Aula - CLP & Linguagem LadderAula - CLP & Linguagem Ladder
Aula - CLP & Linguagem Ladder
 
portas logicas
portas logicasportas logicas
portas logicas
 
Arduino
ArduinoArduino
Arduino
 
Manual Nano 36 turbo ''Central kxh-30-fs-v-12-14''
Manual Nano 36 turbo ''Central kxh-30-fs-v-12-14''Manual Nano 36 turbo ''Central kxh-30-fs-v-12-14''
Manual Nano 36 turbo ''Central kxh-30-fs-v-12-14''
 
Tema 9. memorias semiconductoras
Tema 9. memorias semiconductorasTema 9. memorias semiconductoras
Tema 9. memorias semiconductoras
 
PIC vs AVR
PIC vs AVRPIC vs AVR
PIC vs AVR
 
Puerto serial
Puerto serialPuerto serial
Puerto serial
 
Paineis tta t 439-1
Paineis tta  t 439-1Paineis tta  t 439-1
Paineis tta t 439-1
 
Apresentação1
Apresentação1Apresentação1
Apresentação1
 
CUADERNO N#3 Aplicaciones Con Automatas Programables.pdf
CUADERNO N#3 Aplicaciones Con Automatas Programables.pdfCUADERNO N#3 Aplicaciones Con Automatas Programables.pdf
CUADERNO N#3 Aplicaciones Con Automatas Programables.pdf
 
Clp Conceito
Clp ConceitoClp Conceito
Clp Conceito
 
exercicio-Organização e estrutura de Computadores
exercicio-Organização e estrutura de Computadoresexercicio-Organização e estrutura de Computadores
exercicio-Organização e estrutura de Computadores
 
Apostila+de+programação+ladder+ +clp+micrologix+1200
Apostila+de+programação+ladder+ +clp+micrologix+1200Apostila+de+programação+ladder+ +clp+micrologix+1200
Apostila+de+programação+ladder+ +clp+micrologix+1200
 
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINOCONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
CONTADOR BINARIO DESCENDENTE DE 8 BITS CON ARDUINO
 
TIA PORTAL Sitrain tags do plc
TIA PORTAL Sitrain tags do plcTIA PORTAL Sitrain tags do plc
TIA PORTAL Sitrain tags do plc
 
Introducción a arduino
Introducción a arduinoIntroducción a arduino
Introducción a arduino
 
Automação com clp (ladder)
Automação com clp (ladder)Automação com clp (ladder)
Automação com clp (ladder)
 
Hardware
HardwareHardware
Hardware
 
El PIC16F84
El PIC16F84El PIC16F84
El PIC16F84
 

Ähnlich wie Tipos de dados, função main e tempo rodrigomax@unifei.edu.br

Introdução à programação embarcada
Introdução à programação embarcadaIntrodução à programação embarcada
Introdução à programação embarcadaRodrigo Almeida
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao cprofwtelles
 
Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
Otimizações em Sistemas de Armazenamento mediadas por anotações em MetadadosOtimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadadosricardoas
 
02 JAVAEstrutura sequencial (slides).pptx
02 JAVAEstrutura sequencial (slides).pptx02 JAVAEstrutura sequencial (slides).pptx
02 JAVAEstrutura sequencial (slides).pptxwilliam Sarti José
 
Display de 7 segmentos multiplexados
Display de 7 segmentos multiplexadosDisplay de 7 segmentos multiplexados
Display de 7 segmentos multiplexadosRodrigo Almeida
 
Acessando os periféricos de um microcontrolador
Acessando os periféricos de um microcontroladorAcessando os periféricos de um microcontrolador
Acessando os periféricos de um microcontroladorRodrigo Almeida
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática ComputacionalRicardo Terra
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando CVinícius Hax
 
Apresentação curso pic básico fbs eletrônica
Apresentação   curso pic básico fbs eletrônicaApresentação   curso pic básico fbs eletrônica
Apresentação curso pic básico fbs eletrônicaFabio Souza
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
IES GF - Linguagem de Programação Estruturada - Parte 3
IES GF - Linguagem de Programação Estruturada - Parte 3 IES GF - Linguagem de Programação Estruturada - Parte 3
IES GF - Linguagem de Programação Estruturada - Parte 3 Ramon Mayor Martins
 
Acesso à memória e registros
Acesso à memória e registrosAcesso à memória e registros
Acesso à memória e registrosRodrigo Almeida
 

Ähnlich wie Tipos de dados, função main e tempo rodrigomax@unifei.edu.br (20)

Introdução à programação embarcada
Introdução à programação embarcadaIntrodução à programação embarcada
Introdução à programação embarcada
 
Apostila C ANSI
Apostila C ANSIApostila C ANSI
Apostila C ANSI
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
Otimizações em Sistemas de Armazenamento mediadas por anotações em MetadadosOtimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados
 
Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
 
02 JAVAEstrutura sequencial (slides).pptx
02 JAVAEstrutura sequencial (slides).pptx02 JAVAEstrutura sequencial (slides).pptx
02 JAVAEstrutura sequencial (slides).pptx
 
Display de 7 segmentos multiplexados
Display de 7 segmentos multiplexadosDisplay de 7 segmentos multiplexados
Display de 7 segmentos multiplexados
 
Acessando os periféricos de um microcontrolador
Acessando os periféricos de um microcontroladorAcessando os periféricos de um microcontrolador
Acessando os periféricos de um microcontrolador
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
Matemática Computacional
Matemática ComputacionalMatemática Computacional
Matemática Computacional
 
kNN
kNNkNN
kNN
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 
Apresentação curso pic básico fbs eletrônica
Apresentação   curso pic básico fbs eletrônicaApresentação   curso pic básico fbs eletrônica
Apresentação curso pic básico fbs eletrônica
 
Linguagem_C.pdf
Linguagem_C.pdfLinguagem_C.pdf
Linguagem_C.pdf
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Curso de Linguagem C
Curso de Linguagem CCurso de Linguagem C
Curso de Linguagem C
 
IES GF - Linguagem de Programação Estruturada - Parte 3
IES GF - Linguagem de Programação Estruturada - Parte 3 IES GF - Linguagem de Programação Estruturada - Parte 3
IES GF - Linguagem de Programação Estruturada - Parte 3
 
Acesso à memória e registros
Acesso à memória e registrosAcesso à memória e registros
Acesso à memória e registros
 
Simulador Funcional
Simulador FuncionalSimulador Funcional
Simulador Funcional
 

Mehr von Rodrigo Almeida

Embedded systems design @ defcon 2015
Embedded systems design @ defcon 2015Embedded systems design @ defcon 2015
Embedded systems design @ defcon 2015Rodrigo Almeida
 
Embedded systems development Defcon 19
Embedded systems development Defcon 19Embedded systems development Defcon 19
Embedded systems development Defcon 19Rodrigo Almeida
 
As diferentes engenharias
As diferentes engenhariasAs diferentes engenharias
As diferentes engenhariasRodrigo Almeida
 
Testing de software en instrumentos de pesar de funcionamiento no automatico ...
Testing de software en instrumentos de pesar de funcionamiento no automatico ...Testing de software en instrumentos de pesar de funcionamiento no automatico ...
Testing de software en instrumentos de pesar de funcionamiento no automatico ...Rodrigo Almeida
 
Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...
Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...
Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...Rodrigo Almeida
 
Cryptology - Antônio Lacerda
Cryptology - Antônio LacerdaCryptology - Antônio Lacerda
Cryptology - Antônio LacerdaRodrigo Almeida
 
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...Rodrigo Almeida
 
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Rodrigo Almeida
 
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Rodrigo Almeida
 
Projeto de uma controladora de drivers
Projeto de uma controladora de driversProjeto de uma controladora de drivers
Projeto de uma controladora de driversRodrigo Almeida
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosRodrigo Almeida
 
Kernel com requisitos temporais
Kernel com requisitos temporaisKernel com requisitos temporais
Kernel com requisitos temporaisRodrigo Almeida
 
Definição de processos
Definição de processosDefinição de processos
Definição de processosRodrigo Almeida
 
Conceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffersConceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffersRodrigo Almeida
 
Introdução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosIntrodução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosRodrigo Almeida
 
Segurança de sistemas: invasões, engenharia reversa e análise de virus
Segurança de sistemas: invasões, engenharia reversa e análise de virusSegurança de sistemas: invasões, engenharia reversa e análise de virus
Segurança de sistemas: invasões, engenharia reversa e análise de virusRodrigo Almeida
 
Utilizando um Display de LCD
Utilizando um Display de LCDUtilizando um Display de LCD
Utilizando um Display de LCDRodrigo Almeida
 

Mehr von Rodrigo Almeida (20)

Embedded systems design @ defcon 2015
Embedded systems design @ defcon 2015Embedded systems design @ defcon 2015
Embedded systems design @ defcon 2015
 
Embedded systems development Defcon 19
Embedded systems development Defcon 19Embedded systems development Defcon 19
Embedded systems development Defcon 19
 
As diferentes engenharias
As diferentes engenhariasAs diferentes engenharias
As diferentes engenharias
 
Testing de software en instrumentos de pesar de funcionamiento no automatico ...
Testing de software en instrumentos de pesar de funcionamiento no automatico ...Testing de software en instrumentos de pesar de funcionamiento no automatico ...
Testing de software en instrumentos de pesar de funcionamiento no automatico ...
 
Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...
Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...
Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...
 
Cryptology - Antônio Lacerda
Cryptology - Antônio LacerdaCryptology - Antônio Lacerda
Cryptology - Antônio Lacerda
 
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
 
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
 
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
 
Projeto de uma controladora de drivers
Projeto de uma controladora de driversProjeto de uma controladora de drivers
Projeto de uma controladora de drivers
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
 
Kernel com requisitos temporais
Kernel com requisitos temporaisKernel com requisitos temporais
Kernel com requisitos temporais
 
Kernel cooperativo
Kernel cooperativoKernel cooperativo
Kernel cooperativo
 
Definição de processos
Definição de processosDefinição de processos
Definição de processos
 
Ponteiros de Função
Ponteiros de FunçãoPonteiros de Função
Ponteiros de Função
 
Conceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffersConceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffers
 
Introdução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosIntrodução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcados
 
Segurança de sistemas: invasões, engenharia reversa e análise de virus
Segurança de sistemas: invasões, engenharia reversa e análise de virusSegurança de sistemas: invasões, engenharia reversa e análise de virus
Segurança de sistemas: invasões, engenharia reversa e análise de virus
 
Comunicação serial
Comunicação serialComunicação serial
Comunicação serial
 
Utilizando um Display de LCD
Utilizando um Display de LCDUtilizando um Display de LCD
Utilizando um Display de LCD
 

Tipos de dados, função main e tempo rodrigomax@unifei.edu.br

  • 1. Tipos de dados, função main e tempo Prof. Rodrigo Maximiano Antunes de Almeida Universidade Federal de Itajubá rodrigomax@unifei.edu.br ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 1 / 48
  • 2. Teclado Revisão ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 2 / 48
  • 3. Dados Importantes Teórica: Local ⇒ Sala I.2.1.11 Horário ⇒ 15:45-17:35 (ter) Laboratório: Local ⇒ Sala LEC I / LASER Horário ⇒ P1: 8:00-9:45 (qui) ELT025 (LASER) P2: 10:15-12:00 (qui) ELT025 (LASER) P3: 15:50-17:30 (qui) ELT025 (LECI) P1: 13:30-15:10 (ter) ELT802 (LECI) Levar a placa + adaptador de tomada Datas Importantes *: Prova 01 ⇒ 17/09 Prova 02 ⇒ 26/11 Sub ⇒ 03/12 * Datas Todas as datas estão sujeitas a alterações ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 3 / 48
  • 4. Linguagem C Referência circular (rev) A função LerTemperatura() faz um teste: se o valor for maior que um patamar chama a função EnviaSerial() com o código 0x30. 1 #include "serial.h" 2 char LerTemperatura ( void ) ; 3 void AjustaCalor ( char val ) ; A função LerSerial() receber um valor e repassa para a função AjustaCalor(). 1 #include "temp.h" 2 char LerSerial ( void ) ; 3 void EnviaSerial ( char val ) ; ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 4 / 48
  • 5. Linguagem C Referência circular (rev) #include “serial.h” char LerTemperatura(void); void AjustaCalor(char val); temp.h #include “temp.h” char LerSerial(void); void EnviaSerial(char val); serial.h #include “serial.h” char LerTemperatura(void); void AjustaCalor(char val); temp.h ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 5 / 48
  • 6. Linguagem C Referência circular (rev) Solução: criar uma estrutura de controle para pré compilação. 1 #ifndef TAG_CONTROLE 2 #define TAG_CONTROLE 3 // t o d o o c o n t e ú d o do a r q u i v o vem a q u i . 5 #endif //TAG_CONTROLE ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 6 / 48
  • 7. Linguagem C Referência circular(rev) #infdef TEMP_H #define TEMP_H #include “serial.h” char LerTemperatura(void); void AjustaCalor(char val); #endif temp.h #infdef SERIAL_H #define SERIAL_H #include “temp.h” char LerSerial(void); void EnviaSerial(char val); #endif serial.h #infdef TEMP_H //tag já definida, //pula o conteúdo #endif temp.h ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 7 / 48
  • 8. Linguagem C Tipos de dados em C Tipos de dados em C ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 8 / 48
  • 9. Linguagem C Conversão Binário, Decimal, Hexadecimal Toda informação que é inserida num computador é armazenada em formato binário Cada tipo de informação contém uma quantidade diferente de bits Cada bit pode representar informações diferentes, mesmo dentro de uma mesma variável ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 9 / 48
  • 10. Linguagem C Tipos de dados em C Tipo Bits Bytes Faixa de valores char 8 1 -128 à 127 int 16 2 -32.768 à 32.767 oat 32 4 3,4 x 10-38 à 3,4 x 1038 double 64 8 3,4 x 10-308 à 3,4 x 10308 ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 10 / 48
  • 11. Linguagem C Conversão Binário, Decimal, Hexadecimal Quando resolvemos codicar uma informação num formato digital, e portanto nito, sempre existe perda de informação resolução amplitude ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 11 / 48
  • 12. Linguagem C Conversão Binário, Decimal, Hexadecimal Exemplos: 1 f l o a t x = 0 ; 2 while ( x != 4 ) 3 { 4 printf ( i ) ; 5 x += 0 . 4 f ; 6 } 1 char x = 0 ; 2 while ( x 2 0 0 ) 3 { 4 printf ( i ) ; 5 x++; 6 } ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 12 / 48
  • 13. Linguagem C Conversão Binário, Decimal, Hexadecimal Conversão Binário-decimal Dividir o número por 2 Anotar o valor do resto (0 ou 1) Se o valor é maior que 0 voltar ao número 1 Escrever os valores obtidos através do passo 2 de trás para frente. Apresentar o resultado ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 13 / 48
  • 14. Linguagem C Conversão Binário, Decimal, Hexadecimal Exercicio 01) Converter os números 18 513 73 60 -15 ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 14 / 48
  • 15. Linguagem C Conversão Binário, Decimal, Hexadecimal Número 18: 18 2 = 9, resto 0 9 2 = 4, resto 1 4 2 = 2, resto 0 2 2 = 1, resto 0 1 2 = 0, resto 1 ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 15 / 48
  • 16. Linguagem C Conversão Binário, Decimal, Hexadecimal A representação de números negativos é feita através do MSB 0 = positivo 1 = negativo Método de conversão: complemento de dois ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 16 / 48
  • 17. Linguagem C Conversão Binário, Decimal, Hexadecimal Complemento de dois Denir tamanho da palavra Achar o representação em binário positiva com a mesma magnitude Inverter todos os bits Somar um ao resultado ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 17 / 48
  • 18. Linguagem C Conversão Binário, Decimal, Hexadecimal Números fracionários (ponto utuante) São divididos em expoente, mantissa e sinal Sinal ocupa apenas um bit, como nos inteiros A mantissa representa os algarismos signicativos O expoente representa a magnitude Ponto xo ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 18 / 48
  • 19. Linguagem C Conversão Binário, Decimal, Hexadecimal Base Hexadecimal Possui 16 unidadesdiferentes. 10 algarismos mais 6 letras Facilita escrita de valores binários Fácil conversão bin-hex ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 19 / 48
  • 20. Linguagem C Conversão Binário, Decimal, Hexadecimal Dec Bin Hex Dec Bin Hex 0 0000 0 8 1000 8 1 0001 1 9 1001 9 2 0010 2 10 1010 A 3 0011 3 11 1011 B 4 0100 4 12 1100 C 5 0101 5 13 1101 D 6 0110 6 14 1110 E 7 0111 7 15 1111 F ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 20 / 48
  • 21. Linguagem C Conversão Binário, Decimal, Hexadecimal Exercicio 02) Converter os números 1810 - 100102 51310 - 10000000012 7310 - 10010012 6010 - 1111002 -1510 - 11110012_8bits ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 21 / 48
  • 22. Linguagem C Conversão Binário, Decimal, Hexadecimal Exercicio 02) Converter os números como: 1810= 1-00102 12 = 116 00102 = 216 logo : 100102. = 1216. ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 22 / 48
  • 23. Linguagem C Modicadores de tamanho e sinal Modicadores de tamanho e sinal ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 23 / 48
  • 24. Linguagem C Modicadores de tamanho e sinal Tipo Bytes Excursão máxima unsigned char 1 0 à 255 signed char 1 -128 à 127 unsigned int 2 0 à 65.535 signed int 2 -32.768 à 32.767 long int 4 -2.147.483.648 à 2.147.483.647 unsigned long int 4 0 à 4.294.967.295 short int 2 -32.768 à 32.767 ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 24 / 48
  • 25. Linguagem C Modicadores de Acesso Modicadores de Acesso ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 25 / 48
  • 26. Linguagem C Modicadores de Acesso 1 #define X ( *( near unsigned char *) 0 xF83 ) 2 void main ( void ) 3 { 4 while ( X!=X ) ; 5 } ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 26 / 48
  • 27. Linguagem C Modicadores de Acesso Compilando o código anterior temos em assembler: 1 // S t a r t i n g pCode b l o c k 2 S_Teste__main code 3 _main : 4 . line 19 // T e s t e . c w h i l e (X!=X) ; 6 RETURN ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 27 / 48
  • 28. Linguagem C Modicadores de Acesso 1 #define X ( *( v o l a t i l e near unsigned char *) 0 xF83 ) 2 void main ( void ) 3 { 4 while ( X!=X ) ; 5 } ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 28 / 48
  • 29. Linguagem C Modicadores de Acesso 1 S_Teste__main code // S t a r t i n g pCode b l o c k 2 _main : 3 _00105_DS_ : 4 . line 19 // T e s t e . c w h i l e (X != X) ; 5 MOVLW 0 x83 // p r i m e i r a p a r t e do e n d e r e ç o 6 MOVWF r0x00 7 MOVLW 0 x0f // s e g u n d a p a r t e do e n d e r e ç o 8 MOVWF r0x01 9 MOVFF r0x00 , FSR0L 10 MOVFF r0x01 , FSR0H 11 MOVFF INDF0 , r0x00 // r e a l i z a p r i m e i r a l e i t u r a 12 MOVLW 0 x83 // p r i m e i r a p a r t e do e n d e r e ç o 13 MOVWF r0x01 14 MOVLW 0 x0f // s e g u n d a p a r t e do e n d e r e ç o 15 MOVWF r0x02 16 MOVFF r0x01 , FSR0L 17 MOVFF r0x02 , FSR0H 18 MOVFF INDF0 , r0x01 // r e a l i z a s e g u n d a l e i t u r a 19 MOVF r0x00 , W 20 XORWF r0x01 , W 21 BNZ _00105_DS_ // f a z o t e s t e p a r a i g u a l d a d e 22 RETURN ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 29 / 48
  • 30. Linguagem C Modicadores de Acesso Utilização de const: 1 #define X ( *( v o l a t i l e const near unsigned char *) 0 xF83 ) 2 // i n i c i o do programa 3 void main ( void ) 4 { 5 X = 3 ; 6 } A compilação resulta em erro: 1 Teste . c : error 3 3 : Attempt to assign value to a constant ← variable (=) ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 30 / 48
  • 31. Linguagem C Modicadores de Posicionamento Modicadores de Posicionamento ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 31 / 48
  • 32. Linguagem C Modicadores de Posicionamento Existem dois modicadores de posicionamento near far Não são padronizadas pela ISO C(99) Indicam ao compilador a região em que a variável deve ser colocada near - região de acesso mais rápido far - região de acesso normal ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 32 / 48
  • 33. Linguagem C Modicador de persistência Modicador de persistência ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 33 / 48
  • 34. Linguagem C Modicador de persistência A persistência de uma variável pode ser assegurada com o modicador static Padronizada pela ISO C(99) Garante que não haverá perda de informação na variável Uma região de memória é reservada apenas para a variável em questão 1 // c r i a um c o n t a d o r p e r s i s t e n t e que é 2 // i n c r e m e n t a d o a ca d a chamada de f u n ç ã o 3 i n t ContadorPersistente ( i n t reseta ) { 4 char variavel_persistente ; 5 i f ( reseta ) { variavel_persistente = 0 ; } 6 else { return ( variavel_persistente++) ; } 7 return −1; 8 } ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 34 / 48
  • 35. Linguagem C Modicador de persistência 1 // c r i a um c o n t a d o r p e r s i s t e n t e que é 2 // i n c r e m e n t a d o a ca d a chamada de f u n ç ã o 3 i n t ContadorPersistente ( i n t reseta ) 4 { 5 s t a t i c char variavel_persistente ; 6 i f ( reseta ) 7 { 8 variavel_persistente = 0 ; 9 } 10 else 11 { 12 return ( variavel_persistente++) ; 13 } 14 return −1; 15 } ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 35 / 48
  • 36. Linguagem C Operações Aritiméticas Operações Aritiméticas ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 36 / 48
  • 37. Linguagem C Operações Aritiméticas 1 void main ( void ) 2 { 3 char var8 ; 4 i n t var16 ; 5 long i n t var32 ; 6 f l o a t pont16 ; 7 double pont32 ; 8 var8 = var8 + var16 ; // 1 9 var8 = var8 + var8 ; // 2 10 var16 = var8 * var8 ; // 3 11 var32 = var32 / var16 ; // 4 12 var32 = pont32 * var32 ; // 5 13 pont16 = var8 / var16 ; // 6 14 pont16 = pont32 * var32 ; // 7 15 pont16 = 40 / 8 0 ; // 8 16 } ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 37 / 48
  • 38. Linguagem C Função main() Função main() ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 38 / 48
  • 39. Linguagem C Função main() 0x58 Testa A 0x57 30 0x56 A recebe 0x55 Limpa A 0x59 ... 0x8D Porta B 0x8C Salva em 0x8B 50 0x8A A recebe 0x8E ... 0x03 0x55 0x02 Pulo 0x01 0x8A 0x04 ... 0x00 Pulo Endereço Instrução ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 39 / 48
  • 40. Linguagem C Função main() O como indicar o ponto de início de um programa depende do compilador. Geralmente apenas a criação da função main já é suciente para o compilador O linker aloca a função main() em algum lugar disponível na memória O linker atualiza o vetor de reset colocando um pulo para a função main 1 void main ( void ) 2 { 3 // a q u i e n t r a o c ó d i g o do programa 4 } ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 40 / 48
  • 41. Linguagem C Função main() Atenção! Para sistemas embarcados a função main é a primeira a ser executada, portanto não pode receber parâmetro nenhum. Como ela é a ultima a ser executada, também não existe a possibilidade de retornar algum valor. Deve ser declarada como: 1 void main ( void ) 2 { 3 // I n s i r a o c ó d i g o a q u i . 4 } ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 41 / 48
  • 42. Linguagem C Função main() Geralmente os sistemas embarcados são feitos para serem continuamente executados As rotinas devem ser cíclicas O sistema só para quando desligado Atenção! Nesta situação utiliza-se loops innitos. ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 42 / 48
  • 43. Linguagem C Função main() 1 void main ( void ) 2{ 3 for ( ; ; ) 4 { 5 // a q u i e n t r a o 6 // c ó d i g o p r i n c i p a l 7 } 8} 1 void main ( void ) 2{ 3 while ( 1 ) 4 { 5 // a q u i e n t r a o 6 // c ó d i g o p r i n c i p a l 7 } 8} ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 43 / 48
  • 44. Linguagem C Rotinas de Tempo Rotinas de Tempo ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 44 / 48
  • 45. Linguagem C Rotinas de Tempo É muito comum necessitar que o microcontrolador que um tempo sem fazer nada. Uma maneira de atingir esse objetivo é utilizar um laço for. 1 unsigned char i ; 2 for ( i=0; i 1 0 ; i++) ; Atenção! Notar que não estamos utilizando os colchetes. ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 45 / 48
  • 46. Linguagem C Rotinas de Tempo 1 // c ó d i g o em a s s e m b l e r e q u i v a l e n t e do : f o r ( i =0; i 10; i ++) ; 2 MOVF r0x00 , W // i n i c i a l i z a W com 0 ← ( 1 c i c l o ) 3 SUBLW 0 x0a // c o l o c a o v a l o r 10 ( 0 x0a ) no r e g i s t r o W ← ( 1 c i c l o ) 4 MOVWF r0x00 //muda o v a l o r de W p a r a F ← ( 1 c i c l o ) 5 _00107_DS_ : 6 DECFSZ r0x00 , F // d e c r e m e n t a F , s e F0 e x e c u t a o p r ó x i m o ← ( 1 c i c l o ) 7 BRA _00107_DS_ // p u l a p a r a o l u g a r _00107_DS_ ← ( 2 c i c l o s ) ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 46 / 48
  • 47. Linguagem C Rotinas de Tempo São gastos 3 passos para inicialização, cada um de 1 ciclo. Cada iteração gasta 2 passos, um de 1 ciclo e um de 2 ciclos Para um PIC a 8 MHz cada ciclo gasta 0,5 us Se desejamos um tempo de x segundos são necessárias 2 ∗ 109 ∗ x instruções. ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 47 / 48
  • 48. Linguagem C Rotinas de Tempo 1 unsigned char i , j , l ; 2 for ( i=0; i 3 4 ; i++) // 3+34*(30 ,003+3) = 1 , 0 2 0 , 2 0 7 i n s t r u ç õ e s 3 { 4 for ( j=0; j 1 0 0 ; j++) // 3+100*(297 + 3 ) = 3 0 , 0 0 3 i n s t r u ç õ e s 5 { 6 for ( k=0; k 9 8 ; k++) ; // 3+98*(3) = 297 i n s t r u ç õ e s 7 } 8 } ELT024 Tipos de dados, função main e tempo rodrigomax@unifei.edu.br 48 / 48