Escolar Documentos
Profissional Documentos
Cultura Documentos
Aplicações Avançadas de
Microprocessadores
AULA4
• Enumerações
• Ponteiros
• Estruturas
• União
• Comando typedef
Enumerações: enum
Forma Geral:
enum nome_do_tipo_da_enumeração {lista_de_valores} ;
Enumerações: enum
Exemplo:
enum dias_da_semana {segunda, terca, quarta, quinta, sexta,
sabado, domingo};
main (void)
{
enum dias_da_semana d1,d2;
d1=segunda; d2=sexta;
if (d1==d2)
{ printf ("O dia e o mesmo."); }
else { printf ("São dias diferentes."); }
return 0;
}
Enumerações: enum
switch (type)
{
case INPUT_DIGITAL_PULLUP: ...
case OUTPUT_DIGITAL: ...
}
}
ponteiros
Exemplo:
int *pt;
char *a;
*a = 0xff;
void main()
{
int d, *p;
char *a, b;
// inicialização
a = &b;
p = (int*)a;
d = *((int *) a);
}
ponteiros
Exemplo (Micros.h do JM60)
Volatile: modificador que diz ao compilador que a variável pode ser alterada
Volatile:
pelo microcontrolador sem que seja avisado.
ponteiros
Exemplo: O que faz este exemplo?
int main ()
{
int x,*p;
x=13;
*p=x;
return(0);
}
structs (estruturas)
Forma Geral:
struct nome do tipo de estrutura
{
tipo_1 nome_1;
tipo_2 nome_2;
...
}variáveis_estrutura;
structs (estruturas)
Exemplo:
struct ficha_pessoal
{
char nome [20];
long int telefone;
};
main (void)
{
struct ficha_pessoal ficha;
ficha.telefone = 3434399;
}
structs (estruturas)
Exemplo: (Micro.h)
struct {
unsigned char bit0:1;
unsigned char bit1:1;
unsigned char bit2:1;
unsigned char bit3:1;
unsigned char bit4:1;
unsigned char bit5:1;
unsigned char bit6:1;
unsigned char bit7:1;
} bit;
structs (estruturas)
Exemplo: (mc9s08jm60.h)
struct {
byte PTAD0 :1; /* Port A Data Register Bit 0 */
byte PTAD1 :1; /* Port A Data Register Bit 1 */
byte PTAD2 :1; /* Port A Data Register Bit 2 */
byte PTAD3 :1; /* Port A Data Register Bit 3 */
byte PTAD4 :1; /* Port A Data Register Bit 4 */
byte PTAD5 :1; /* Port A Data Register Bit 5 */
byte :1;
byte :1;
} Bits;
struct {
byte grpPTAD :6;
byte :1;
byte :1;
} MergedBits;
union (união)
union nome_do_tipo_da_union
{ tipo_1 nome_1;
tipo_2 nome_2; ...
tipo_n nome_n;
} variáveis_union;
union (união)
Exemplo: micros.h
union DEF_LOWBYTE
{
unsigned char byte;
struct {
unsigned char bit0:1;
unsigned char bit1:1;
unsigned char bit2:1;
unsigned char bit3:1;
unsigned char bit4:1;
unsigned char bit5:1;
unsigned char bit6:1;
unsigned char bit7:1;
} bit;
} DATA_REG;
Comando Typedef
Forma Geral:
typedef antig_nome novo_nome
Exemplo:
typedef int inteiro;
inteiro a;
Comando Typedef
Exemplo: (Gpio.h)
typedef struct
{ volatile DEF_LOWBYTE DATA_REG;
volatile DEF_LOWBYTE DIRECTION_REG;
} GPIO_DATA_TYPE;
Como escrever uma estrutura do tipo GPIO_DATA_TYPE?
typedef struct
{
volatile DEF_LOWBYTE...
} GPIO_DATA_TYPE;
Como definir os dados/endereços dos
registradores?
Registers Address
dados/endereços dos registradores
...continuar!
Introdução à Linguagem C
Livro: Avr e Arduino
e
a partir da Pg. 67 até 100
AVR e arduino