Professional Documents
Culture Documents
Rodrigo Almeida
rodrigomax@unifei.edu.br
Revisao
Dados Importantes
Teorica:
Local Sala I.2.1.11
Horario 4T12
Laboratorio (ELTP14):
Local Sala LEC II
Horario
P1: 5T12
P2: 5T34
P3: 6T12
P4: 6T34
Datas Importantes *:
Prova 01 05/04
Prova 02 21/06
Sub 05/07
* Datas
Todas as datas estao sujeitas a alteracoes
temp.h
#include serial.h
char LerTemperatura(void);
void AjustaCalor(char val); serial.h
#include temp.h
char LerSerial(void);
void EnviaSerial(char val);
temp.h
#include serial.h
char LerTemperatura(void);
void AjustaCalor(char val);
1 # ifndef TAG_CONTROLE
2 # define TAG_CONTROLE
3 // todo o c o n t e u d o do arquivo vem aqui .
4
5 # endif // T A G C O N T R O L E
temp.h
#ifndef TEMP_H
#define TEMP_H
#include serial.h
char LerTemperatura(void);
void AjustaCalor(char val); serial.h
#endif
#ifndef SERIAL_H
#define SERIAL_H
#include temp.h
//tag j definida,
//pula o contedo
#endif
Tipos de dados em C
Tipos de dados em C
Tipos de dados em C
Dependendo....
... da arquitetura, do compilador e das configuracoes.
1 float x = 0 ;
2
3 while ( x != 4 ) {
4 x += 0 . 4f ;
5 }
1 char x = 0 ;
2
3 while ( x < 200 ) {
4 x ++;
5 }
Conversao Binario-decimal
Dividir o numero por 2
Anotar o valor do resto (0 ou 1)
Se o valor e maior que 0 voltar ao numero 1
Escrever os valores obtidos atraves do passo 2 de tras para frente.
Apresentar o resultado
Numero 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
Complemento de dois
Definir tamanho da palavra
Achar a representacao em binario positiva com a mesma magnitude
Inverter todos os bits
Somar um ao resultado
Base Hexadecimal
Possui 16 unidadesdiferentes.
10 algarismos mais 6 letras
Facilita escrita de valores binarios
Facil conversao bin-hex
Modificadores de variaveis
Modificadores de Acesso
Modificadores de Acesso
1 // S t a r t i n g pCode block
2 S_Teste__main code
3 _main :
4 . line 19 // Teste . c while ( X != X ) ;
5
6 RETURN
Modificadores de Acesso
Modificadores de Acesso
1 S_Teste__main code // S t a r t i n g pCode block
2 _main :
3 _00105_DS_ :
4 . line 19 // Teste . c while ( X != X ) ;
5 MOVLW 0x83 // p r i m e i r a parte do e n d e r e c o
6 MOVWF r0x00
7 MOVLW 0x0f // segunda parte do e n d e r e c o
8 MOVWF r0x01
9 MOVFF r0x00 , FSR0L
10 MOVFF r0x01 , FSR0H
11 MOVFF INDF0 , r0x00 // realiza p r i m e i r a leitura
12 MOVLW 0x83 // p r i m e i r a parte do e n d e r e c o
13 MOVWF r0x01
14 MOVLW 0x0f // segunda parte do e n d e r e c o
15 MOVWF r0x02
16 MOVFF r0x01 , FSR0L
17 MOVFF r0x02 , FSR0H
18 MOVFF INDF0 , r0x01 // realiza segunda leitura
19 MOVF r0x00 , W
20 XORWF r0x01 , W
21 BNZ _00105_DS_ // faz o teste para i g u a l d a d e
22 RETURN
Modificadores de Acesso
Modificadores de Acesso
Utilizacao de const:
Modificadores de Posicionamento
Modificador de persistencia
1 // cria um c o n t a d o r p e r s i s t e n t e que e
2 // i n c r e m e n t a d o a cada chamada de func~ ao
3 int C o n t a d o r P e r s i s t e n t e ( int reseta ) {
4 char v a r i a v e l _ p e r s i s t e n t e ;
5 if ( reseta ) { v a r i a v e l _ p e r s i s t e n t e = 0 ;}
6 else { return ( v a r i a v e l _ p e r s i s t e n t e ++) ;}
7 return -1 ;
8 }
Modificador de persistencia
1 // cria um c o n t a d o r p e r s i s t e n t e que e
2 // i n c r e m e n t a d o a cada chamada de func~ ao
3
4 int C o n t a d o r P e r s i s t e n t e ( int reseta ) {
5 static char v a r i a v e l _ p e r s i s t e n t e ;
6
7 if ( reseta ) {
8 variavel_persistente = 0;
9 } else {
10 return ( v a r i a v e l _ p e r s i s t e n t e ++) ;
11 }
12 return -1 ;
13 }
Operacoes Aritimeticas
Operacoes Aritmeticas
Funcao main()
Funcao main()
Endereo Instruo
0x00 Pulo
0x01 0x8A
0x02 Pulo
0x03 0x55
0x04 ...
0x55 Limpa A
0x56 A recebe
0x57 30
0x58 Testa A
0x59 ...
0x8A A recebe
0x8B 50
0x8C Salva em
0x8D Porta B
0x8E ...
Funcao main()
Funcao main()
Atencao!
Para sistemas embarcados a funcao main e a primeira a ser executada,
portanto nao pode receber parametro nenhum. Como ela nao e chamada
por nenhuma outra funcao, ela e a ultima a ser executada. Deste modo
nao existe a possibilidade de retornar nenhum valor. Deve ser declarada
como:
Funcao main()
Atencao!
Nesta situacao utiliza-se loops infinitos.
Funcao main()
Rotinas de Tempo
Rotinas de Tempo
1 unsigned char i ;
2 for ( i = 0 ; i < 10 ; i ++) ;
Atencao!
Notar que nao estamos utilizando os colchetes depois do for.
Rotinas de Tempo
Rotinas de Tempo
Rotinas de Tempo
1 unsigned char i , j, k;
2 for ( i = 0 ; i < 34 ; i ++) { // 3 + 34 ( 30 , 003 + 3 ) = 1 , 020 , 207
3 for ( j = 0 ; j < 100 ; j ++) { // 3 + 100 ( 297 + 3 ) = 30 , 003
4 for ( k = 0 ; k < 98 ; k ++) ; // 3 + 98 ( 3 ) = 297 i n s t r u c ~
oes
5 }
6 }