LANGAGE C (CCS Info pour les PICs) SOMMAIRE. 1) Le langage C du compilateur CCS ) Règles de bases:... 2

Documents pareils
Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Rappels Entrées -Sorties

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C


1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

ALGORITHMIQUE ET PROGRAMMATION En C

V- Manipulations de nombres en binaire

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Bases de programmation. Cours 5. Structurer les données

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

INF 321 : mémento de la syntaxe de Java

Introduction au langage C

Les opérations binaires

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

BTS IRIS Cours et Travaux Pratiques. Programmation C. A. Lebret, TSIRIS, Lycée Diderot, 1995/06. en conformité avec le référentiel du BTS IRIS

Programmation en langage C

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Introduction à l algorithmique et à la programmation M1102 CM n 3

Programmation système I Les entrées/sorties

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

UE Programmation Impérative Licence 2ème Année

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

Représentation d un entier en base b

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

UE C avancé cours 1: introduction et révisions

Une version javascript sera disponible directement dans le cours prochainement.

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Chapitre 10 Arithmétique réelle

Programmation Structurée en Langage C

Codage d information. Codage d information : -Définition-

Langage Éric Guérin 5 octobre 2010

Conversion d un entier. Méthode par soustraction

Représentation des Nombres

La programmation des PIC en C. Les fonctions, les interruptions.

Enregistreur sans papier avec écran TFT et carte Compact Flash. B Description des interfaces 07.07/

Informatique Générale

IV- Comment fonctionne un ordinateur?

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Le langage C. Séance n 4

Les chaînes de caractères

Cours Informatique 1. Monsieur SADOUNI Salheddine

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

MICROCONTROLEURS PIC PROGRAMMATION EN C. V. Chollet - cours-pic-13b - 09/12/2012 Page 1 sur 44

Algorithmique et Programmation, IMA

Logiciel de Base. I. Représentation des nombres

Cours de programmation avancée. Le langage C. Université du Luxembourg

Conventions d écriture et outils de mise au point

PIC : COURS ASSEMBLEUR

Glossaire des nombres

Programmation en C. École Nationale Supérieure de Techniques Avancées. Pierre-Alain Fouque et David Pointcheval

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Notions fondamentales du langage C# Version 1.0

Réalisation d un réseau de capteurs de température sans fil basé sur le protocole ZigBee

Claude Delannoy. 3 e édition C++

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

SUPPORT DE COURS. Langage C

Le Langage C Licence Professionnelle Qualité Logiciel Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2011/2012

Architecture de l ordinateur

Chap III : Les tableaux

Programmation C. J.-F. Lalande. 15 novembre 2012

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Le langage C. Introduction, guide de reference

Introduction au Langage de Programmation C

Plan du cours. Historique du langage Nouveautés de Java 7

Langages et Concepts de Programmation Introduction à la programmation en langage C

Contraintes, particularités. 1. Généralités Gestion de la mémoire a. Type des variables et constantes... 2

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Support de Cours de Langage C. Christian Bac

Les failles Format String

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

Méthodes de programmation systèmes UE n NSY103. Notes de cours. Nombre d'heures : 55h (~ cours de 3 heures)

TP 1. Prise en main du langage Python

Microprocesseur + Logiciel

Analyse de sécurité de logiciels système par typage statique

Programmation assembleur : aperçu

Séverine Marien Maxime Ringard. 2 ème année GEII. Régulateur de charge pour station de recharge photovoltaïque

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Algorithmique, Structures de données et langage C

Cours d Informatique

Cours de Programmation en Langage Synchrone SIGNAL. Bernard HOUSSAIS IRISA. Équipe ESPRESSO

TP 1 : 1 Calculs en binaire, octal et hexadécimal

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Les structures. Chapitre 3

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

Programmation C. Apprendre à développer des programmes simples dans le langage C

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

Description du logiciel Modbus RTU

ANALYSE TRAMEs LIAISON SERIE

Langage Fortran (Base)

Rappels d architecture

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Langage Fortran. Support de cours

ET LO GICIEL D UN S YS T EME IN FORMATIQUE

Plan. École Supérieure d Économie Électronique. Plan. Chap 9: Composants et systèmes de sécurité. Rhouma Rhouma. 21 Juillet 2014

Programmation Classique en langage C

COMPARAISONDESLANGAGESC, C++, JAVA ET

Transcription:

SOMMAIRE 1) Le langage C du compilateur CCS 2 11) Règles de bases: 2 12) Les Variables et les Constantes 2 121 Les constantes 2 122 Les Variables 3 13) Les opérateurs du langage C 4 131 L opérateur d affectation 4 132 Les opérateurs arithmétiques 4 134 Les opérateurs de comparaison ou relationnels 4 135 Les opérateurs logiques de comparaison 4 136 Les opérateurs binaires bit à bit 5 14) Les fonctions adaptées aux microcontrôleurs PICs 6 141) La gestion des entrées et sorties 6 142) La gestion des temporisations 7 143) La gestion de la liaison série 7 Philippe LETENNEUR - GRANVILLE - 2003 - page 1

1) LE LANGAGE C DU COMPILATEUR CCS Le compilateur C de la société CCS (Custom Computer Services : wwwccsinfocom) est compilateur C adapté aux microcontrôleurs PICs Il ne respecte pas complètement la norme ANSI, mais il apporte des fonctionnalités très intéressantes 11) Règles de bases: Toutes instructions ou actions se terminent par un point virgule ; Une ligne de commentaires doit commencer par /* et se terminer par */ ou commence par // norme C++ Un bloc d'instructions commence par { et se termine par } 12) Les Variables et les Constantes 121 Les constantes Les constantes n'existent pas, c'est à dire qu'il n'y a pas d'allocation mémoire, mais on peut affecter à un identificateur (Nom : Il ne doit pas dépasser 32 caractères, sans accent) une valeur constante par l'instruction #define Syntaxe: <#define> <identificateur> <valeur>; Exemple: #define PI 314 6211) Déclarations spécifiques au compilateur CCS #bit id = x,y id : Identifiant (Nom d un bit) x : Nom du variable ou d une constante y : position du bit Exemple: #bit RCIF #bit RW #bit BUZZER = PIR13 = PORTA2 = PORTD7 #byte id = x id : Identifiant x : Valeur 8 bits Exemple: #byte PORTA = 5 #byte PORTB = 6 #byte PORTC = 7 #byte PORTD = 8 #byte PORTE = 9 // adresse du PORT A // adresse du PORT B // adresse du PORT C // adresse du PORT D // adresse du PORT E Philippe LETENNEUR - GRANVILLE - 2003 - page 2

122 Les Variables Les variables sont définies par signé ou non signé, le type et l'identificateur Syntaxe: <signed> <type> <identificateur1>,,<identificateurn> L'identificateur: C'est le nom (Il ne doit pas dépasser 32 caractères, sans accent) affecté à la variable Le type: Il détermine la taille de la variable et les opérations pouvant être effectuées On peut rajouter le mot signed devant le type du variable, alors la variable devient signée 6221) Les types du compilateur CCS Type Taille Valeurs int1 1 bit 0 ou 1 int8 8 bits De 0x00 à 0xFF ou 0 à 255 int16 16 bits De 0x0000 à 0xFFFF ou 0 à 655535 int32 32 bits De 0x0000000 à 0xFFFFFFFF char 8 bits De 0 à 255 ou une lettre A Z float 32 bits Format flottant short Même type que int1 int Même type que int8 long Même type que int16 int A,B,C,D; char MESSAGE[10] ; Les types signés Par défaut, tous ces types de données sont non signés, ils peuvent être signé en rajoutant le mot clé signed devant le type signed int A; // Entier de type signé, de -128 à +127 signed long NB; // Entier de type signé, de -32768 à +32767 6222) Les bases du compilateur CCS Le décimal : A = 10 ; L octal : A = 012 ; L hexadécimal A = 0x0A ; Le binaire A = 0b00001010 ; Le caractère : Exemple la lettre A code ASCII 65(Décimal) ou $41(Héxadécimal), peut s écrire : LETTRE = 65 ; Ou LETTRE = 0x41 ; Ou LETTRE = A ; Philippe LETENNEUR - GRANVILLE - 2003 - page 3

13) Les opérateurs du langage C Lors de son exécution, un programme est amené à effectuer des opérations qui peuvent être purement arithmétiques, de comparaison, d affectation, etc 131 L opérateur d affectation opérateur d affectation = x = 10 ; y = a + b L opérande de gauche prend pour valeur l opérande de droite 132 Les opérateurs arithmétiques opérateurs arithmétiques addition + a = a + b : x = 5 + a soustraction - a = a b ; y = c - 51 moins unaire - a = - b multiplication * a = a * a ; b = y * 8 division / c = 9 / b ; d = a / b reste de la division entière ( modulo) % r = a % b Dans le cas de la division, si l on désire le résultat et le reste, il faudra donc écrire par exemple: resultat = a /b ; /* résultat de la division*/ reste = a % b ; /* reste de la division */ 134 Les opérateurs de comparaison ou relationnels Opérateurs de comparaison égalité = = a == b ; c == 9 différent! = c! = a supérieur > a > b ; 8 > a supérieur ou égal > = a > = b ; 8 > = a inférieur < a < b ; 8 < a inférieur ou égal < = a < = b ; 8 < = a Le résultat de la comparaison peut prendre deux valeurs VRAI ou FAUX - FAUX correspond à 0 - VRAI correspond à toute valeur différente de 0 Attention l'opérateur relationnel == (égalité) n'est pas à confondre avec l'opérateur d'affectation = c'est le piège classique des débuts 135 Les opérateurs logiques de comparaison Type Symbole Opérateurs logiques et logique && ou logique non logique! Ces opérateurs permettent la comparaison de conditions composées telles que (x > y) && (u > v) Le résultat fourni est de type logique (0 ou 1) Philippe LETENNEUR - GRANVILLE - 2003 - page 4

136 Les opérateurs binaires bit à bit Opérateurs binaires bit à bit et binaire & x = y & z ou binaire x = y z ou exclusif ^ x = y ^ z complément à 1 ~ a = ~ b décalage de n bits à droite >> x = y >> n décalage de n bits à gauche << x = y << n Soient les entiers a et b, tels que : a = b = 1100 0111 0101 0011 (0xC753) 0001 1001 1010 1110 (0x19AE) a & b = 0000 0001 0000 0010 (0x0102) a b = 1101 1111 1111 1111 (0xDFFF) a ^ b = 1101 1110 1111 1101 (0xDEFD) ~ a = 0011 1000 1010 1100 (0x38AC) ~ b = 1110 0110 0101 0001 (0xE651) Philippe LETENNEUR - GRANVILLE - 2003 - page 5

14) Les fonctions adaptées aux microcontrôleurs PICs 141) La gestion des entrées et sorties Les fonctions suivantes permettent d agir sur les ports d entrée et de sortie - output_low() ; - output_high() ; - output_bit(pin_xx,0 ou 1) ; - input(pin_xx) ; - output_x(valeur) ; // X : Nom du port A E - input_x() ; // X : Nom du port : A E - set_tris_x(valeur) ; // X : Nom du port : A E valeur // Valeur défine la configuration du port (1 entrée et 0 sortie) // Exemple set_tris_a(0b00001111) ; PA0 à PA3 en entrée et PA4 à PA7 en sortie 1) Test la broche RB4 RES = input(pin_b4) ;// RES = 0 si la broche est à 0 et 1 si elle est à 1 Autre façon d écrire, #define SENS PIN_B4 RES = input(sens) ;// RES = 0 si la broche appelée SENS est à 0 et 1 si elle est à 1 2) Mise à 1 de RA5 output_high(pin_a4) ; Autre façon d écrire, output(pin_a4,1) ; Autre façon d écrire, #define RELAIS PIN_A4 output_high(relais) ; 3) Configuration du PORTC, 4 entrées et 4 sorties #byte PORTC = 7 // Adresse mémoire du PORTC set_tris_c(0b11110000) ; // Configuration du PORTC // PC0 à PC3 en sortie et PC4 à PC7 en entrée PORTC = 0b00000101 ; Philippe LETENNEUR - GRANVILLE - 2003 - page 6

142) La gestion des temporisations Le compilateur intègre des fonctions très pratiques pour gérer les délais, à savoir : delay_cycles(valeur) ; // temporisation en NB de cycles delay_us(valeur) ; // temporisation en µs delay_ms(valeur) ; // temporisation en ms Pour pouvoir utiliser ces fonctions, il faut indiquer par la ligne ci-dessous la fréquence du Quartz de votre application Cette ligne doit être définie au début du programme, voir le programme modèle à la fin de ce document #use delay (clock=fréquence_du_quartz) #use delay (clock=4000000) // Quartz de 4Mhz #use delay (clock=20000000) // Quartz de 20Mhz 143) La gestion de la liaison série Toutes les fonctions d entrée et de sortie peuvent être redirigées sur le port série du microcontrôleur, Il suffit d ajouter la ligne ci-dessous pour configurer le port série : #use rs232 (BAUD=9600, xmit=pin_c6, rcv=pin_c7) // Cette ligne configure la liaison série du PIC avec une vitesse de 9600 bauds Remarque : Cette ligne doit être définie au début du programme, après la ligne qui définie la fréquence du quartz Alors les fonctions suivantes utiliseront le port série comme moyen de communication - printf() ; - putc() ; - puts() ; - getc() ; - gets() ; - kbhit() ; Philippe LETENNEUR - GRANVILLE - 2003 - page 7