Chapitre A4 : Logique Programmée

Ce matériel couvre les notions fondamentales de la logique programmée appliquée aux microcontrôleurs, en particulier le PIC 16F84A. Il s'adresse aux étudiants en sciences techniques souhaitant comprendre la programmation embarquée pour des applications industrielles telles que la commande automatique d'une porte de garage ou d'un monte-charge.

D'après le document Chapitre A4 : Logique Programmée

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source

Chapitre A4 : Logique Programmée

Computer Science and Electrical Engineering · PDF · 11 pages

Afficher l'aperçu du document

Consulter le document original →

Ce matériel couvre les notions fondamentales de la logique programmée appliquée aux microcontrôleurs, en particulier le PIC 16F84A. Il s'adresse aux étudiants en sciences techniques souhaitant comprendre la programmation embarquée pour des applications industrielles telles que la commande automatique d'une porte de garage ou d'un monte-charge.

Les microcontrôleurs et leur application industrielle

Un microcontrôleur est un circuit intégré regroupant plusieurs composants essentiels à la commande d'un système embarqué :

  • Un microprocesseur (CPU).
  • Une mémoire de données (RAM et EEPROM).
  • Une mémoire programme (ROM, OTPROM, UVPROM ou EEPROM).
  • Une interface parallèle pour les entrées/sorties.
  • Une interface série (synchrone ou asynchrone) pour communiquer avec d'autres unités.
  • Des timers pour générer ou mesurer des signaux avec précision temporelle.
  • Des convertisseurs analogique/numérique pour traiter des signaux analogiques.

Exemple d'application : la porte automatique d'un garage est commandée à distance par une télécommande qui transmet un code binaire sur dix bits [C9..C0]. Ce code est divisé en deux parties : un code d'identification de la télécommande et un ordre d'ouverture ou de fermeture (C1, C0). Le code d'ordre est codé ainsi :

BitsValeur
C1 C010 : ordre d'ouverture
C1 C011 : ordre de fermeture

Un microswitch permet à l'utilisateur de définir le code d'identification sur la télécommande, facilitant ainsi l'adaptation ou le remplacement de celle-ci.

Programmation graphique et algorigrammes

L'algorigramme (ou organigramme) est une représentation graphique normalisée utilisée pour analyser ou décoder un problème logique. Il s'agit d'une suite de symboles définis permettant de modéliser les actions élémentaires d'un programme.

Dans le cas de la télécommande, un programme graphique est réalisé pour piloter le microcontrôleur, en traduisant les actions attendues en symboles et flux logiques.

Programmation en langage évolué : Mikropascal

La programmation peut aussi être réalisée en langage évolué, notamment en PASCAL, avec le compilateur Mikropascal adapté aux microcontrôleurs PIC. La méthode consiste à :

  1. Traduire le cahier des charges en une suite ordonnée d'actions (algorithme).
  2. Décomposer l'algorithme en instructions élémentaires.
  3. Transformer cet algorithme en code PASCAL.

Structure d’un programme Mikropascal

Un programme Mikropascal comprend trois parties :

  • Entête : une ligne commençant par Program suivi du nom du programme.
  • Déclarations : définition des variables, constantes, procédures et fonctions.
  • Corps du programme : entre Begin et End., contient les instructions à exécuter.

Règles de base

  • Toutes les instructions se terminent par un point-virgule ;.
  • Les commentaires commencent par { } ou //.
  • Un bloc d'instructions commence par Begin et se termine par End.

Types de variables et notation des nombres

  • Variables déclarées avec Var nom_variable : type ;
  • Constantes déclarées avec Const nom_constante : type = valeur ;
  • Notation des nombres :
    • Décimal : A=10 ;
    • Hexadécimal : A=$0F ; ou A=0x0F ;
    • Binaire : A=%11010100 ;

Opérateurs et structures usuelles

  • Affectation : attribuer une valeur à une variable.
  • Structures alternatives : conditions if ... then ... else.
  • Structures itératives : boucles while, for.

Procédures et fonctions

Les sous-programmes permettent de regrouper des instructions réutilisables :

  • Procédure : groupe d'instructions sans valeur de retour.
Procédure Identificateur (Param1:Type1, Param2:Type2,...);
Déclarations
Begin
  Instruction1;
  Instruction2;
  ...
End;
  • Fonction : similaire à une procédure mais retourne un résultat.
Function Identificateur (Param1:Type1, Param2:Type2,...):Type_R;
Déclarations
Begin
  Instruction1;
  Instruction2;
  ...
  Identificateur := résultat;
End;

Structure générale d’un programme Mikro_Pascal

Program nom_programme;
Déclarations de constantes, types, variables;
Déclarations des procédures et fonctions;

Begin
  Activation des interruptions;
  Configuration des entrées/sorties;
  Initialisation des sorties;
  while (1=1) do
  begin
    Instruction1;
    Instruction2;
    ...
  end;
end.

Applications pratiques

Exemple 1 : Carte de commande d’une porte automatique

Algorithme simplifié :

Algorithme Carte_commande;
_DEBUT
  TRISB ⇐ $......;       // RA0, RA1, RA2 : sorties
  TRISB ⇐ $......;       // tout le port B en entrée
  porta ⇐ 0;            // initialisation des sorties
  TANT QUE (1=1) FAIRE  // boucle infinie
  _DEBUT
    SI (portB.4 = ...) ALORS  // ouverture de la porte
    _DEBUT
      TANT QUE ((portB.6=0) ET (portB.4=1)) FAIRE
      _DEBUT
        portA.0 ⇐ ...;       // moteur sens ouverture
        portA.2 ⇐ ...;       // lampe signalisation allumée
      _FINFAIRE;
    _FINSI;
    SI (portB.5=1) ALORS       // fermeture de la porte
    _DEBUT
      TANT QUE ((portB.7=...) ET (portB.5=...)) FAIRE
      _DEBUT
        portA.1 ⇐ 1;          // moteur sens fermeture
        portA.2 ⇐ 1;          // lampe signalisation allumée
      _FINFAIRE;
    _FINSI;
    portA ⇐ 0;                // arrêt moteur et lampe éteinte
  _FINFAIRE;
_FIN.

Programme Mikropascal correspondant (à compléter) :

Program Carte_Commande;
Begin
  // RA0, RA1, RA2 : sorties
  // Tout le port B en entrée
  // Initialisation des sorties
  // Boucle infinie
  while (1=1) do
  begin
    // Si commutateur en position ouverture
    if (portB.4 = 1) then
    begin
      while ((portB.6=0) and (portB.4=1)) do
      begin
        portA.0 := 1;  // moteur ouverture
        portA.2 := 1;  // lampe allumée
      end;
    end;
    // Si commutateur en position fermeture
    if (portB.5 = 1) then
    begin
      while ((portB.7=0) and (portB.5=1)) do
      begin
        portA.1 := 1;  // moteur fermeture
        portA.2 := 1;  // lampe allumée
      end;
    end;
    portA := 0; // arrêt moteur et lampe éteinte
  end;
end.

Exemple 2 : Commande d’un monte-charge

Fonctionnement :

  • Appui sur le bouton départ (dcy) lance la montée de la cabine vers le 2ème étage par rotation moteur sens 1 (CM) jusqu'à l’action sur le capteur m.
  • Attente de T = 5 secondes.
  • Descente de la cabine au rez-de-chaussée par rotation moteur sens 2 (CD) jusqu'à l’action sur le capteur d.

Tableau d’affectation des entrées/sorties :

Entrées/SortiesBroche µC
Entrée : dcyRA0
Entrée : mRA1
Entrée : dRA2
Sortie : EIRB0
Sortie : T1RB1
Sortie : CMRB2
Sortie : CDRB3

Algorithme simplifié :

Algorithme Monte_Charge
Variables X0, X1, X2, X3, t1 : byte;

Début
  TrisA ⇐ ... ;          // Configuration RA0, RA1, RA2 en entrée
  TrisB ⇐ ... ;          // Configuration RB0 à RB3 en sortie
  PortB ⇐ 0;             // Initialisation sorties
  X0 ⇐ 1;                // Etat initial
  X1 ⇐ 0;
  X2 ⇐ 0;
  X3 ⇐ 0;
  t1 ⇐ 0;

  Tant que (1=1) faire
  Début
    Si ((PortA.0=1) et (X0=1)) alors
    Début
      X0 ⇐ 0;
      X1 ⇐ 1;
    Fin;

    Si ((PortA.1=1) et (X1=1)) alors
    Début
      X1 ⇐ 0;
      X2 ⇐ 1;
    Fin;

    Si ((X2=1) et (t1=5)) alors
    Début
      X2 ⇐ 0;
      X3 ⇐ 1;
    Fin;

    Si ((PortA.2=1) et (X3=1)) alors
    Début
      X3 ⇐ 0;
      X0 ⇐ 1;
    Fin;

    Si (X0=1) alors PortB.0 ⇐ 1 sinon PortB.0 ⇐ 0;
    Si (X1=1) alors PortB.1 ⇐ 1 sinon PortB.1 ⇐ 0;

    Si (X2=1) alors
    Début
      PortB.2 ⇐ 1;
      t1 ⇐ 0;
      delay_ms(5000);
      t1 ⇐ 5;
    Fin
    Sinon
    Début
      PortB.2 ⇐ 0;
      t1 ⇐ 0;
    Fin;

    Si (X3=1) alors PortB.3 ⇐ 1 sinon PortB.3 ⇐ 0;
  Fin;
Fin.

Glossaire des termes clés

  • Microcontrôleur : Circuit intégré regroupant microprocesseur, mémoire, interfaces et périphériques pour commande embarquée.
  • Algorigramme : Représentation graphique normalisée d’un algorithme ou programme.
  • Programme Mikropascal : Code source écrit en langage PASCAL adapté aux microcontrôleurs PIC.
  • Procédure : Sous-programme sans valeur de retour, regroupant des instructions.
  • Fonction : Sous-programme retournant une valeur (numérique ou chaîne).
  • TRIS : Registre de configuration des ports d’entrée/sortie (1 = entrée, 0 = sortie).
  • PortA, PortB : Registres correspondant aux ports d’entrées/sorties du microcontrôleur.
  • Delay_ms : Fonction provoquant une temporisation en millisecondes.

Points clés à retenir

  • Un microcontrôleur intègre tous les composants nécessaires à la commande d’un système embarqué.
  • La programmation peut être graphique (algorigramme) ou en langage évolué (Mikropascal).
  • Un programme Mikropascal se structure en entête, déclarations et corps avec des règles syntaxiques strictes.
  • Les procédures et fonctions permettent de modulariser et réutiliser le code.
  • La configuration des ports (TRIS) est essentielle pour définir les entrées et sorties.
  • Les applications industrielles comme la commande d’une porte automatique ou d’un monte-charge illustrent l’usage concret des microcontrôleurs.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions