Académique Documents
Professionnel Documents
Culture Documents
d'interfaçage
1
Pré-requis
Systèmes logiques & Architecture des Ordinateurs
Objectifs
- Connaître les principaux composants d'un système à microprocesseur.
- Interfacer des systèmes à microprocesseurs entre eux.
- Développer et implémenter des applications écrites en C ou en assembleur
sur des systèmes à microprocesseur
2
Plan du Module
• Introduction aux Systèmes Embarqués et Systèmes sur puce
• Les Microcontrôleurs
• Communication série
3
Système sur puce (SoC) et Technologies
d'interfaçage
Chapitre 0:
Rappel du C
4
Plan
1- Les pointeurs
2- Les structures de données
3- Manipulation des bits
4- Préprocesseur
5
Qu’est ce qu’un pointeur
Un pointeur est une variable dont le contenu pointe vers une autre
variable.
6
L’opérateur d’adresse « & »
Un pointeur est une variable qui contient l'adresse
d'une autre variable.
L'opérateur unaire & donne l'adresse mémoire d'un
objet.
L'instruction :
p = &c;
7
EXEMPLE
le format d'une adresse est %p
(hexadécimal) ou %d (décimal) dans printf
8
DECLARATION DES POINTEURS
Une variable de type pointeur se déclare à l'aide de l'objet
pointé précédé du symbole * (opérateur d'indirection).
9
ARITHMETIQUE DES POINTEURS
10
10
ARITHMETIQUE DES POINTEURS
C STANDARD
int *pi;
char *pc;
*pi = 0;
*pc = 0x0a;
pi 00
00
00
00
pi+1
pc 0a
pc+1
PLAN MEMOIRE 11
11
ARITHMETIQUE DES POINTEURS
C STANDARD
int *pi;
char *pc;
*pi = 0;
*pc = 0x0a;
pi 00
00
00
00
pi+1
pc 0a
pc+1
PLAN MEMOIRE
12
12
Pointeurs multiples
Plusieurs pointeurs peuvent être dirigés vers un
même emplacement mémoire.
13
13
EXERCICES_CHAP1
14
14
Exercice 1-1
15
15
Exercice 1-2
16
16
Exercice 1-3
17
17
Plan du chapitre 1
1- Les pointeurs
2- Les structures de données
3- Manipulation des bits
4- Préprocesseur
18
18
LES ENREGISTREMENTS:
STRUCT
19
19
Définition de (struct)
struct nom_enreg
{ type champs1;
type champs2;
type champs3;
};
Exemple
struct personne
{ char nom[30];
char prenom [20];
int age;
};
20
Instanciation de struct
struct nom_enreg vble1, vble2, …, vblen;
Exemple:
struct personne pers1, pers2;
21
Accès aux champs : avec l’opérateur (.)
Exemple:
struct personne pers1, pers2;
pers1.prenom=“Salah”;
pers1.age = 20;
printf(“l’age de M.%s est:%d”, pers1.prenom,pers1.age);
22
Initialisation des (struct)
Il est possible d’initialiser un enregistrement lors de sa
déclaration
struct nom_enreg {val1, val2, …, valn};
Exemple:
struct pers1 = {“salah”, “ali”, 15}
23
Tableaux de structures (struct)
Chaque case du tableau contient un élément de type
structure
struct point
{
int absc;
int ord;
};
struct point courbe[50];
/*Accès à l’abscisse de la case de d’indice i*/
courbe[i].absc = 5;
24
Imbrication de structures
struct date
{ int jour;
int mois;
int an;
};
struct personne
{char nom[30];
char prenom [20];
date dat_nais;
};
……
/*saisie de la date d’une vble pers1 */
Scanf("%d%d%d", &pers1.dat_nais.jour, &pers1.dat_nais.mois,
&pers1.dat_nais.an);
25
Passage d’une structure en paramètre
d’une fonction
/* prototype de fonction*/
void fct(struct point y);
26
Exemple:
int main()
{ struct point p1;
p1.absc = 5; p1.ord = 3;
printf(“valeurs avant appel : %d %d”,
p1.absc, p1.ord);
fct (p1);
printf(“valeurs après appel : %d %d”,
p1.absc, p1.ord);
return 0;
}
void fct (struct point s)
{s.absc = 0; s.ord = 0;}
27
Passage par valeur: inconvénient
28
28
Passer une structure par adresse
29
29
Précautions de passages en paramètres
30
30
Exemple:
int main()
{ struct p1;
p1.absc = 5; p1.ord = 3;
printf(“valeurs avant appel : %d %d”,
p1.absc, p1.ord);
fct (&p1);
printf(“valeurs après appel : %d %d”,
p1.absc, p1.ord);
return 0;
}
void fct (struct point * s)
{s->absc = 0; s->ord = 0;}
31
Résumé
32
LES ÉNUMÉRATIONS:
ENUM
33
33
Définition
34
34
Déclaration
Syntaxe:
enum tag {liste_enumeree} liste_variables;
tag: le nom de l’énumération
Liste_variables: liste des variables de type tag
Liste_enumeres: liste de noms énumérées représentant
des constantes entières.
Exemple:
• enum automobile {4chv, 5chv, 6chv};
Il es possible de définir des variables de type enum ainsi:
• enum automobile japonaise, américaine;
• Équivaut aussi à:
• enum automobile {4chv, 5chv, 6chv} japonaise, américaine;
35
35
Affecter des valeurs aux noms énumérés
Les éléments des listes énumérées sont incrémentés de 0
à n. Exemple:
o enum automobile {4chv, 5chv, 6chv} japonaise, américaine;
o 4chv = 0, 5chv= 1 et 6chv=1
Il est possible d’affecter d’autres valeurs entières:
o enum automobile {4chv=60, 5chv=30, 6chv=10};
o Æ 4chv représente le nombre 60
o Æ 5chv représente le nombre 30
o Æ 6chv représente le nombre 10
o enum automobile {4chv=60, 5chv=30, 6chv};
o Æ 4chv représente le nombre 60
o Æ 5chv représente le nombre 30
o Æ 6chv représente le nombre 31 31= 30 + 1
36
36
Exemple
37
37
Exemple: conversion minusculeÆ majuscule
38
38
Exemple: conversion minusculeÆ majuscule
39
39
Exemple: conversion minusculeÆ majuscule
POETE 1
POETE 2
POETE 3
40
40
TYPEDEF
41
41
TYPEDEF
42
42
TYPEDEF
43
43
EXERCICES_CHAP1
44
44
Exercice 2-1
45
45
Exercice 3-1
Ecrire un programme qui permet à un utilisateur de
fournir des informations personnelles (nom, âge) ainsi
que des informations sur son téléopérateur (une société
de diffusion par câble ou bien une société de diffusion
par satellite), le nom de la société et le nombre d’heures
consacrées à la télé (par semaine).
Exercice 3-2
Modifiez le programme en ajoutant un champ binaire
concernant le type de connexion
46
46
Plan du chapitre 1
1- Les pointeurs
2- Les structures de données
3- Manipulation des bits
4- Préprocesseur
47
47
Opérateurs bits à bits
48
48
Opérateur &
49
49
Opérateur |
50
50
Opérateur ^
51
51
Opérateur XOR logique?
Exercice: une fonction permettant de réaliser
un XOR logique (a^^b) ?
52
52
Opérateur unaire ~
53
53
Décalage à gauche
54
54
Décalage à gauche
55
55
Décalage à droite
56
56
Exercice: Décalage circulaire à gauche ?
57
57
Exercice: Décalage circulaire à droite ?
58
58
Décalage d’un bit seul
59
59
Tester le nième bit
60
60
Mettre à 1 le nième bit
61
61
Mettre à 0 le nième bit
62
62
Exercice: Affecter le nième bit ?
63
63
Drapeaux
64
64
Masque
stocker plusieurs informations sur un entier
1023=10 bits à 1
65
65
Portabilité des types
66
66
Plan du chapitre 1
1- Les pointeurs
2- Les structures de données
3- Manipulation des bits
4- Préprocesseur
67
67
Le préprocesseur
68
68
Inclusion des fichiers
69
69
Inclusion des fichiers
70
70
Définition des macros
71
71
Définition des macros
72
72
Définition des macros
73
73
Définition des macros
74
74
Définition des macros
75
75
Définition des macros
76
76
#undef
77
77
#expr
78
78
Inclusion conditionnelle
79
79
Inclusion conditionnelle
80
80
Variables de préprocesseur
81
81
#warning et #error
82
82
Assertions
83
83
Assertions
84
84
const
85
85
const
86
86