Le PIC16F877. F. Senny Université de Liège Faculté des Sciences Appliquées



Documents pareils
PIC : COURS ASSEMBLEUR

PIC 16F84. Philippe Hoppenot

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

Informatique Industrielle

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

Flowcode - Mode d'emploi

PIC EVAL Dev Board PIC18F97J60

Conception de circuits numériques et architecture des ordinateurs

Ordinateurs, Structure et Applications

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Rappels d architecture

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

2013 Nos nouveaux outils basés sur Arduino

Configuration de TCPIPconfig.h

Compilation (INF 564)

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

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Carte ARDUINO UNO Microcontrôleur ATMega328

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Sélection du contrôleur

ARCEAU DE PARKING MOTORISÉ VIGIPARK

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

ASR1 TD7 : Un microprocesseur RISC 16 bits

Débuter avec PsoC ou PsoC niveau 0

Programmation assembleur : aperçu

Structure d un programme

LISA. Manuel Utilisateur

Proteus VSM. manuel_vsm.doc

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

Conférence sur les microcontroleurs.

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

Architecture des ordinateurs

GPA770 Microélectronique appliquée Exercices série A

CM2 L architecture MIPS32

Millenium3 Atelier de programmation

NOTICE SIMPLIFIEE ER-A280F. I Initialisation avec Remise à Zéro de la caisse : ENTER PASSWORD ER-A280V. Ver1.02

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Carte Relais GSM (Manuel Utilisateur)

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

REALISATION d'un. ORDONNANCEUR à ECHEANCES

TD Architecture des ordinateurs. Jean-Luc Dekeyser

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

Architecture des Ordinateurs. Partie II:

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

I00 Éléments d architecture

PROGRAMMATION D'UN MICROCONTRÔLEUR

IV- Comment fonctionne un ordinateur?

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Spécialité Professionnelle. Patrick Boulandet

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

République Tunisienne Ministère de l'education. Sciences Techniques. Manuel d activités. Les auteurs. Ali ZITOUNI Inspecteur des lycées et collèges

Atelier C TIA Portal CTIA06 : programmation des automates S7-300 Blocs d organisation

Traduction des Langages : Le Compilateur Micro Java

Java Licence Professionnelle CISII,

Contrôle d accès UTIL TP N 1 découverte

Introduction à l architecture des ordinateurs. Adrien Lebre Décembre 2007

Modules d automatismes simples

Notions d IPMI et retour. Ecole d électronique numérique Fréjus 28 novembre 2012 Nicolas LETENDRE

Document de formation pour une solution complète d automatisation Totally Integrated Automation (T I A) MODULE A5 Programmation de la CPU 314C-2DP

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Fiche technique CPU 315SN/PN (315-4PN33)

ÉCOLE POLYTECHNIQUE DE MONTRÉAL. Département de Génie Électrique. La technologie de TEXAS INSTRUMENTS DSP pour le cours Analyse des Signaux ELE2700

Jeu d instructions NIOS II

Exécutif temps réel Pierre-Yves Duval (cppm)

Présentation et installation PCE-LOG V4 1-5

COMMANDER A DISTANCE LE ROBOT-PONG ETUDE DE LA TELECOMMANDE (2 nde PARTIE)

Microprocesseur + Logiciel

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

! analyse du fonctionnement

Alcatel OmniPCX Enterprise TSC-IP V1 (4098RE)

CONFIGURATION DE L AUTOMATE SIEMENS

Les microcontrôleurs dans les systèmes embarqués

Conception et développement d'un périphérique USB pour le simulateur de vol Microsoft Flight Simulator

TP Contraintes - Triggers

Rapport de projet de fin d études

IFT1215 Introduction aux systèmes informatiques

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

La carte à puce. Jean-Philippe Babau

Informatique Industrielle Année Architecture des ordinateurs Note de cours T.Dumartin

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Exécution des instructions machine

TwinCAT 3 C++ Création de modules C++ sous TwinCAT 3 VERSION : 1.0 / PH

Enregistreur de Température pour PC DALLAS 1820

Mise en place d une plateforme de télécommande des équipements électrique à distance «Smart House»

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

Informatique Générale

COACH-II Manuel d utilisation

La technologie Java Card TM

Algorithmique et Programmation, IMA

CH.3 SYSTÈMES D'EXPLOITATION

Résumé Génération de code Le code intermédiaire

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

Document de formation pour une solution complète d automatisation Totally Integrated Automation (T I A)

IUT BREST UN LOGICIEL SCADA : PC VUE 2010 DEP.GMP

IPMailSMS Module d envoi d & SMS pour CITECT

Transcription:

Le PIC16F877 Introduction aux microcontrôleurs et à leur assembleur Illustration par le PIC16F877 F. Senny Université de Liège Faculté des Sciences Appliquées

Plan Qu est-ce qu un micro-contrôleur? Architecture du PIC16F877 Ports I/O Mémoires programme et données Autres modules Programmation du PIC Projet MPLAB Exemple de code Les interruptions 30 octobre 2007 Le PIC16F877 2

Un microquoi? Microcontrôleur : microprocesseur + périphériques internes traitement d info Les PICs 3 grandes familles Base-Line (12 bits) Mid-Range (14 bits) High-End (16 bits) 16F877 = Mid-Range, mémoire FLASH (F) 30 octobre 2007 Le PIC16F877 3

Alim. Carte de développement LEDs LCD RS232 ICD2 PIC boutons 30 octobre 2007 Le PIC16F877 4

Architecture PIC16F877 Classifications des microcontrôleurs à deux niveaux Au niveau du processeur: RISC : Reduced Instruction Set Computer CISC : Complex Instruction Set Computer Au niveau de l organisation de la mémoire Architecture Von Neumann : une mémoire unique et pour le programme et pour les données Architecture Harvard : le programme et les données sont stockées dans des mémoires physiquement séparées PIC16F877 RISC (4 cycles d horloge/instr.), Harvard 30 octobre 2007 Le PIC16F877 5

Schéma bloc PIC16F877 Mémoires Contrôle ALU Ports I/O Timers, EEPROM, A/D, UART 30 octobre 2007 Le PIC16F877 6

Schéma bloc PIC16F877 5 ports I/O (A E) fonctions : ADC/DAC, oscillateurs ext., port série (TX/RX), port PSP, debugger ICD, 30 octobre 2007 Le PIC16F877 7

Schéma bloc PIC16F877 Programme : Flash de 8k (mots de 14 bits) RAM : 368 bytes Pile matérielle (stack) : jusqu à 8 fonctions imbriquées 30 octobre 2007 Le PIC16F877 8

4 banques Schéma bloc PIC16F877 - RAM RP0, RP1 de STATUS registres de configuration données 1 ADR = 1 mot de 8 bits! Certains registres dupliqués dans les autres banques Ex : STATUS, PCL, 30 octobre 2007 Le PIC16F877 9

Schéma bloc PIC16F877 Décode/contrôle les instructions (CLK) ALU W et STATUS 30 octobre 2007 Le PIC16F877 10

Schéma bloc PIC16F877 3 Timers : cpt, INTR A/D : 10 bits USART : série RS232 EEPROM : nbre de cycles W limitée à 10 6 30 octobre 2007 Le PIC16F877 11

Programmation d un PIC Logiciel : MPLAB (www.microchip.com) Langage : ASM (assembleur) C (compilateur PICC, C30, selon le PIC) Simulation du code via MPASM Programmation : ICD2 (In-Circuit Debugger), RS-232 module dédié comme le «dataman48» 30 octobre 2007 Le PIC16F877 12

Projet.INC = définitions.asm/.c = code source Visualisation des mém. programmes et de données ( simul.) 30 octobre 2007 Le PIC16F877 13

Exemple de code ;********************************************************************* ; CONFIGURATION * ;********************************************************************* LIST p=16f877a ; Définition de processeur #include <p16f877a.inc> ; Définitions de variables CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC ;********************************************************************* ; ASSIGNATIONS * ;********************************************************************* OPTIONVAL EQU H'0088' ; Valeur registre option ; Résistance pull-up OFF ; Pas de préscaler ;********************************************************************* ; DEFINE * ;********************************************************************* #DEFINE LED PORTB,1 ; Led rouge 30 octobre 2007 Le PIC16F877 14

Exemple de code (2) ;********************************************************************* ; MACRO * ;********************************************************************* LEDON macro bsf endm LEDOFF macro bcf endm LED LED bcf STATUS,RP0 ; repasser banque 0 goto start ; sauter au programme principal ;********************************************************************* ; DECLARATIONS DE VARIABLES * ;********************************************************************* CBLOCK 0x020 ; début de la zone variables cmpt1 : 1 ; compteur de boucles 1 cmpt2 : 1 ; compteur de boucles 2 cmpt3 : 1 ; compteur de boucles 3 ENDC ; Fin de la zone 30 octobre 2007 Le PIC16F877 15

Exemple de code (3) ;********************************************************************** ; DEMARRAGE SUR RESET * ;********************************************************************** org 0x000 ; Adresse de départ après reset goto init ; Adresse 0: initialiser ;********************************************************************* ; INITIALISATIONS * ;********************************************************************* init clrf PORTB ; sorties portb à 0 bsf STATUS,RP0 ; sélectionner banque 1 movlw OPTIONVAL ; charger masque movwf OPTION_REG ; initialiser registre option ; initialisations spécifiques ; --------------------------- bcf LED ; LED en sortie (banque1) ; LEDOFF ; ou utiliser LEDOFF ; etc... END ; fin code 30 octobre 2007 Le PIC16F877 16

Registres importants DATASHEET pages 17-22 du.pdf W : registre de travail STATUS IRP : sélection de la banque (ADR indirect) RP1:RP0 : sélection de la banque (ADR direct) TO : time-out bit PD : power-down Z : zero bit DC : digital carry C : carry 30 octobre 2007 Le PIC16F877 17

OPTION_REG Registres importants (2) RBPU : PORTB pull-up (on/off) INTEDGS : INT edge (montante/descendante) T0CS : T0 clock source (RB4/CLK int) T0SE : T0 source edge (montante/descendante) PSA : pre-scaler on T0 ou WD PS2:PS0 : valeur prescaler 30 octobre 2007 Le PIC16F877 18

INTCON Registres importants (3) GIE: Global Interrupt Enable PEIE: Peripheral Interrupt Enable T0IE: TMR0 Overflow Interrupt Enable INTE: RB0/INT External Interrupt Enable RBIE: RB Port Change Interrupt Enable T0IF: TMR0 Overflow Interrupt Flag INTF: RB0/INT External Interrupt Flag RBIF: RB Port Change Interrupt Flag 30 octobre 2007 Le PIC16F877 19

Directives ELLES NE SONT PAS TRADUITES EN OPCODE! LIST : indique le type de processeur #include : indique les fichiers où sont regroupées les assignations CONFIG : fixe le fonctionnement du PIC à plusieurs niveaux (debugging, watchdog, protection du code, oscillateurs, ) voir fichier datasheet et *.INC pour l utilisation et la définition de ces variables de configuration EQU : remplacer un nombre par une chaîne de caractères Syntaxe : assignations EQU nombre_a_remplacer #DEFINE : remplacer un texte plus complexe par une chaîne de caractères. Syntaxe : definition chaîne_a_substituer 30 octobre 2007 Le PIC16F877 20

Directives (2) MACROS : remplacer des mots de code par une chaîne de caractères. Syntaxe : nom_de_macro MACRO code_de_macro endm CBLOCK : suivi d une adresse, permet de définir le début d une zone de variables. Syntaxe : CBLOCK adresse_de_debut_de_zone nom_de_variable : taille_de_zone (en bytes) ENDC ORG : suivi d une adresse, précise à quelle adresse les instructions qui suivent seront placées dans le PIC. END : fin du programme 30 octobre 2007 Le PIC16F877 21

Instructions ELLES SONT TRADUITES EN OPCODE! Syntaxe : étiquette _ mnémonique opérande destination Etiquette : repère pour le programme Tabulation (= _ ) : il est interdit d écrire autre chose qu une étiquette en première colonne. Mnémonique : symbole littéral = instruction Opérandes Destination : W, F ou numéro de 0 à 7 30 octobre 2007 Le PIC16F877 22

30 octobre 2007 Le PIC16F877 23

ADDWF : ADDWF f,d Exemples W+f W (d=0) ou f (d=1); [C,Z,DC] BCF : BCF f,b f[b]=0 ; [-] CALL : CALL sous-routine appel de sous-routine (pile utilisée retour) GOTO : GOTO étiquette saut inconditionnel (pile non-utilisée) 30 octobre 2007 Le PIC16F877 24

INTR = rupture du déroulement normal par un évènement déclencheur exécution d une routine d INTR Interruptions (INTR) 30 octobre 2007 Le PIC16F877 25

Interruptions (2) Sources (1 seule à la fois!) EEPROM, T0, RB0/INT, PORTB ADR d INTR unique : 0x04 Sauvegarde de l état du système : Uniquement le PC est sauvé lors du saut vers la routine d interruption le reste du contexte (W, STATUS, ) doit être sauvé manuellement 30 octobre 2007 Le PIC16F877 26

Exemple de code ;********************************************************************** ; ROUTINE D INTERRUPTION * ;********************************************************************** ; sauvegarder des registres ; ------------------------- org 0x00 ; Adresse d interruptions movwf w_temp ; sauvegarder le registre de travail swapf STATUS,w ; swap STATUS avec w movwf status_temp ; sauvegarder le registre de STATUS ; switch vers différentes INTR ; ---------------------------- ; ici on teste éventuellement pour savoir d où vient l INTR ; switch vers différentes INTR ; ---------------------------- ; ici on peut traiter l INTR et effacer son FLAG ; restauration des registres ; -------------------------- swapf status_temp,w ; swap ancien STATUS, dans w movwf STATUS ; restaurer STATUS swapf w_temp,f ; inversion L et H de l ancien W ; sans mofifier Z swapf w_temp,w ; ré-inversion de L et H dans W ; W restauré sans modifier STATUS retfie ; return from interrupt 30 octobre 2007 Le PIC16F877 27

En résumé Un microcontrôleur est un composant programmable polyvalent Processeur (ALU) Mémoires programme, RAM et EEPROM Périphériques (A/D, UART, ) Gestion d interruptions Programmation en ASM ou C ( MPLAB) 30 octobre 2007 Le PIC16F877 28

Derniers messages Comprendre le fonctionnement d un microcontrôleur DATASHEET!! Lecture du BigOnOFF sur le 16F84 (excellente base!!) ou des notes Lecture du BigOnOFF sur le 16F877 (uniquement les différences avec le 16F84) Programmer un µctrl 16F877 au labo (chez soi)!! Configuration!! 30 octobre 2007 Le PIC16F877 29