Programmation du microcontrôleur PIC16F877 Sur la carte PICmicro Education Board II

Documents pareils
PIC : COURS ASSEMBLEUR

Informatique Industrielle

PIC 16F84. Philippe Hoppenot

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

Flowcode - Mode d'emploi

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

ARCEAU DE PARKING MOTORISÉ VIGIPARK

PIC EVAL Dev Board PIC18F97J60

Proteus VSM. manuel_vsm.doc

LISA. Manuel Utilisateur

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

Configuration de TCPIPconfig.h

Le langage C. Séance n 4

2013 Nos nouveaux outils basés sur Arduino

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Manuel d'installation de GESLAB Client Lourd

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (

Guide de l utilisateur. Calibreur de Courant / Voltage Modèle A

Enregistreur de données d humidité et de température

TER Licence 3 Electronique des Télécoms Transmission GSM

Carte Relais GSM (Manuel Utilisateur)

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

Modes Opératoires WinTrans Mai 13 ~ 1 ~

IV- Comment fonctionne un ordinateur?

GE Security. KILSEN série KSA700 Centrale de détection et d alarme Incendie analogique adressable. Manuel d utilisation

COACH-II Manuel d utilisation

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

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

EVOLUTION 7.1 Déroulement DREAM INFO 1 Dossier 23 Ciel Gestion Commerciale.

Conférence sur les microcontroleurs.

UP 588/13 5WG AB13

Quelques éléments de compilation en C et makefiles

USTL - Licence ST-A 1ère année Initiation à la programmation TP 1

COURS WINDEV NUMERO 3

INSTALLATION DE LA CLÉ 3G+ UTILISATION VOTRE COMPTE CLIENT. Clé 3G+ Elle vous permet de connecter votre ordinateur aux réseaux haut débit mobile.

PROCÉDURE D'INSTALLATION WINDOWS 7 (32 ou 64 bit)

Avertissement : Nos logiciels évoluent rendant parfois les nouvelles versions incompatibles avec les anciennes.

Services bancaires par Internet aux entreprises. Guide pratique pour : Rapports de solde Version

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

Programmation C++ (débutant)/instructions for, while et do...while

Procédure d utilisation de la fonction TELETRANSMISSION

01/11/2011. Machine à café - Amélioration du système existant MLK - ECST

TP Bases de données réparties

Hubert & Bruno Lundi 12 octobre 2009 SAINT-QUENTIN (02)

Le Logiciel de Facturation ultra simplifié spécial Auto-Entrepreneur

I00 Éléments d architecture

Logiciels DSPiy. DSPiyStudio logiciels et format des fichiers. incomplet

Notice d installation de la Centrale VIGIK DGM1

ET 24 : Modèle de comportement d un système Introduction à Labview et initiation à la réalisation d un Instrument Virtuel (VI).

Notice de fonctionnement DVR H Méthode de Visionnage ESEENET

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

1. PRESENTATION DU PROJET

Alarme intrusion filaire AEI HA zones

GUIDE D INSTALLATION DES DRIVERS

Connexion à distance. Pour configurer les automates Beckhoff via un PC de programmation VERSION : 1.0 / PH

TERMINAL D AUDIO CONFERENCE ANALOGIQUE USB VOIP NOTICE

Sélection du contrôleur

Cadastre du bruit SIT-JURA. Connecteur Arcview9.x - MSAccess. Mode d emploi. Appel formulaire. Page 1 sur 15

Manuel installateur XT200i

FANTEC HDD-Sneaker MANUEL D'UTILISATION. Comprend: Guide d'installation de materiel Disque dur Formatage manuel PCClone EX Guide d'installation

Ladibug TM 2.0 Logiciel de présentation visuel d'image Manuel de l utilisateur - Français

COSWIN MOBILE SERVEUR DE SYNCHRONISATION GUIDE D INSTALLATION

Guide de l utilisateur

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

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

1 ) INSTALLATION DE LA CONSOLE 2 2 ) PREMIER DÉMARRAGE DE LA CONSOLE 3 3 ) LES JOBS 4 4 ) LES ORDINATEURS 6

Modification d une feuille de style

MultiMedia Board. Système de développement. Manuel utilisateur. pour PIC32MX4

ZTE MF190. Clé 3G+ Guide de démarrage rapide

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

Upgrade du Huawei U8230 : Android 2.1 et rom custom

ScoopFone. Prise en main rapide

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

Créer des étiquettes avec les adresses d'un tableau Calc

Clavier Déporté Sans Fil NOTICE RFID SOS

ZTE MF190 Clé 3G+ Guide de démarrage rapide

CA 3000 CA 3000 PROGRAMMATION PAR MINITEL

AMC 120 Amplificateur casque

Mode d Emploi du Module d ASRock WiFi g

Configuration de la Borne Interactive

ZTE MF668A Clé 3G+ Guide de démarrage rapide

ecdf Plateforme électronique de Collecte des Données Financières

SCL LOGICIEL DE CONTROL

SMS-COM LT RAILS DIN V Manuel d installation, de programmation et d utilisation.

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

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

Rappels d architecture

VOCALYS LITE.

ENVOI EN NOMBRE DE SMS

Utilisation de Sarbacane 3 Sarbacane Software

Convertisseur BBAN/IBAN

Belgacom Forum TM 3000 Manuel d utilisation

ALLIANZ MODE OPERATOIRE DE MIGRATION D UNE AGENCE WINDOWS Août Version du document : 010

MANUEL DE L UTILISATEUR

La mémoire. Un ordinateur. L'octet. Le bit

Ophcrack - Windows XP/Vista

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

Transcription:

TP ATR : Programmation du microcontrôleur PIC16F877 Sur la carte PICmicro Education Board II 1

Introduction : Nous avons étudié en cours l architecture des microcontrôleurs PIC et leur mode de programmation. L objectif de ce TP est de mettre en pratique la partie théorique afin de concrétiser les concepts étudiés. A cette fin, nous tenterons d utiliser la carte PICmicro Education Board II comme interface d un programme que nous réaliserons pour le microcontrôleur. Présentation du matériel : Le Microcontrôleur : Nous utiliserons le Microcontrôleur PIC16F877 construit par Microchip. La carte d interface : La programmation d un Microcontrôleur ne serait d aucune utilité sans une carte d interface permettant de concrétiser les actions du programme : 2

C est la fonction de l Education Board II, celle ci permet en effet de communiquer avec le PIC via un clavier de boutons, un ensemble de LEDS, un écran LCD, des potentiomètres et des capteurs de température. Dans ce TP, nous utiliserons les LEDS et les boutons. Attention : l alimentation doit être comprise entre 7 et 12 volts mais nous avons constaté qu en dessous de 10 ou si le courant n est pas assez important, la carte a des difficultés à fonctionner. Le programmeur : La programmation d un Microcontrôleur nécessite enfin une interface entre le PC et le PIC. Il en existe de plus ou moins sophistiqués, certains permettant même d effectuer un debuggage temps réel, nous utiliserons le PIC-01 qui a l avantage d être le moins cher. (avantage certain en ces temps de disette pré-cloture du budget). Les logiciels : Nous utiliserons l environnement de développement intégré MPLAB développé par Microchip pour programmer le PIC. Comme tout IDE qui se respecte, il permet de créer des projets, d éditer les fichiers qu il contient et de compiler et linker le tout. MPLAB peut aussi permettre le debuggage du Microcontrôleur mais cette opération nécessite un programmeur plus évolué et nettement plus onéreux. ICPROG sera utilisé pour charger les fichiers.hex générés par MPLAB. 3

Bon on va peut être pouvoir le commencer ce TP? Allumage d une LED : Préliminaires : (même pour Lulu) Structure d un programme : Il est tout d abord nécessaire de présenter la structure d un programme assembleur pour MPASM : LIST P=16F877 #include "P16F877.INC" CONFIG _BODEN_ON&_CP_OFF&_WRT_ENABLE_ON&_PWRTE_ON&_WDT_OFF&_HS_OSC L entête inclut la spécification du Microcontrôleur utilisé et des paramètres qui ne sont pas le sujet de ce TP. org 0x000 ;Indique le début du programme goto init org 0x004 ;indique la marche à suivre en cas d'interruption goto int La fonction org permet de définir les vecteurs de démarrage du programme et d exécution des interruptions, on utilise généralement des branchements. init BSF STATUS, RP0 ;Page d'adresse 1 -> on a accès aux TRIS (CF M14)... int RETFIE END S ensuit le corps du programme fini par END. Les instructions sont détaillées à partir de la page 26 du cours et les CF en fin de lignes renvoient au cours. 4

Fonctionnement des LEDS : Comme vous pourrez le voir sur le schéma de la carte, les huit LEDS sont montées en sortie des huit pattes du port : Il suffit donc de mettre un bit sur le registre PORTC afin d obtenir une tension de 5 volts sur la patte correspondante, mais pour cela, il faut tout d abord le configurer en sortie car les ports sont configurés comme entrées par défaut. Le registre TRISC est utilisé pour définir les entrées sorties des ports. Le nième bit du registre définit la qualité d entrée ou sortie de la nième ligne du port correspondant, un 0 comme Output représentant une sortie et un 1 comme Input, une entrée (1 par défaut). Le registre PORTC sera donc mis à 0 afin de pouvoir agir sur les LEDS. Nous sommes maintenant assez balaises pour écrire le programme. Le premier groupe qui me rend un truc nickel aura la chance de voir son programme exécuté sur la carte sur sa propre paillasse. Ouaaaah. ; Précise le PIC utilisé LIST P=16F877 #include "P16F877.INC" CONFIG _BODEN_ON&_CP_OFF&_WRT_ENABLE_ON&_PWRTE_ON&_WDT_OFF&_HS_OSC&_DEBUG_OFF&_CPD_OFF&_LVP_OFF ; Début du programme ORG 0x000 ;Indique le début du programme GOTO init ORG 0x004 ;indique la marche à suivre en cas d'interruption GOTO int init BSF STATUS, RP0 ;Page d'adresse 1 -> on a accès aux TRIS (CF M14) CLRF INTCON ;Mise à 0 du vecteur d'interruption -> pas d'interruptions (CF M20) CLRF TRISD ;Met le TRIS du port D à 0 -> port en mode Output BCF STATUS, RP0 ;Page d'adresse 0 MOVLW b'10000000' MOVWF PORTD ;Allume la première LED debut CLRWDT ;clear wdt GOTO debut int RETFIE END ;!!!Ne pas oublier 5

Utiliser MPLAB : Nous avons un IDE de professionnel, autant ne pas le négliger, voici la marche à suivre pour éditer et compiler le programme : 1. Démarrez MPLAB : Menu Démarrer/Programmes/Microchip_MPLAB/MPLAB 2. Créez un nouveau projet : Project/New_Project Je vous laisse l initiative du nom et du répertoire, mais votre fichier.asm devra se trouver au même endroit. Attention n oubliez pas de changer le mode de développement et d ajouter comme nœud le fichier préalablement écrit. (soit avec notepad comme un vrai dur, soit avec fichier/nouveau dans MPASM) 3. Project/Make et le fichier.hex est généré si tout se passe bien. Utiliser ICPROG : Attention, il vous faut d abord insérer le PIC dans le programmeur : 1. Assurez-vous d abord à fond d avoir coupé toute source de courant susceptible d alimenter le PIC avant de l enlever ou de l insérer dans un support. 2. Insérez-le maintenant dans la carte. 3. Allumez ensuite le courant. Vous pouvez maintenant ouvrir le programme C:\PIC-01\ICPROG.EXE. 6

Configurez comme sur l image. Puis comme suit Puis ouvrez le fichier.hex généré précédemment. Ensuit cliquez sur Command/Erase All Et Command/Program All Café!!!! Une fois le PIC programmé remettez le sur la carte en prenant les précautions susmentionnées. Voilà, ça fonctionne. Nous allons maintenant tenter d allumer cette LED en appuyant sur un bouton. 7

Allumage d une LED à l aide d un bouton : Une question peut être? Comment fonctionnent ces boutons? C est très simple : Ils sont câblés en matrice de trois colonnes (seulement les trois colonnes de droite, les autres ne sont pas câblés de la même façon) et de quatre lignes. Les sorties RA2 RA5 et RC2 sont multiplexées (0 = select) avec les entrées RB1 RB2 RB3 RB4 qui sont mises à 1 par un pull up interne. Le fait de presser un bouton provoque une sortie multiplexée qui met le courant à 0. Heu un petit schéma et ça ira mieux vous verrez : En gros, si RA2 est à 0 et S3 enfoncé alors RB4 est à 0 et c est tout ce qu on veut savoir pour l instant. Nous sommes maintenant en mesure de comprendre le programme suivant : Afin de détecter le bouton, nous utiliserons le polling : méthode qui consiste à tester en boucle le registre correspondant. ; Précise le PIC utilisé LIST P=16F877 #include "P16F877.INC" CONFIG _BODEN_ON&_CP_OFF&_WRT_ENABLE_ON&_PWRTE_ON&_WDT_OFF&_HS_OSC&_DEBUG_OFF&_CPD_OFF&_LVP_OFF ; Dédut du programme ORG 0x000 ;Indique le début du programme GOTO init ORG 0x004 ;indique la marche à suivre en cas d'interruption GOTO int init BSF STATUS, RP0 ;Page d'adresse 1 -> on a accès aux TRIS (CF M14) CLRF INTCON ;Mise à 0 du vecteur d'interruption -> pas d'interruptions (CF M20) BCF OPTION_REG,7 ;Mise à 0 du bit 7 d'option (CF M19) (The big @# $ truc de fouine) CLRF TRISD ;Met le TRIS du port D à 0 -> port en mode Output 8

BCF TRISC,2 ;Met le bit 2 du port C et les bits 2 et 5 du port A en sortie BCF TRISA,2 BCF TRISA,5 MOVLW B'00011110' ;Met les bits 1 à 4 du port B en entrée MOVWF TRISB BCF STATUS, RP0 ;Page d'adresse 0 BSF PORTC,2 ; BSF PORTA,5 ; BCF PORTA,2 ;Teste la troisième colonne debut CLRWDT ;clear wdt BTFSS PORTB,4 ;Teste l'appui du bouton GOTO KeyOn ;S'il est appuyé, on va à KeyOn MOVLW b'00000000' ;Sinon on eteint tout. MOVWF PORTD GOTO debut KeyOn int MOVLW B'11111111' MOVWF PORTD GOTO debut RETFIE END Le premier qui finit a encore une fois le droit d exhiber, hum, son programme devant tout le monde. Et gagne un BN. Allumage d une LED à l aide d une interruption (CF M22): Comme vous savez tout sur les interruptions, inutile de vous dire que dans notre cas suffisent les bits 3 et 7 d INTCON soit le bit associé au PORTB et le général. ; Précise le PIC utilisé LIST P=16F877 LIST r=dec,x=on,t=off #include "P16F877.INC" CONFIG _BODEN_ON&_CP_OFF&_WRT_ENABLE_ON&_PWRTE_ON&_WDT_OFF&_HS_OSC&_DEBUG_OFF&_CPD_OFF&_LVP_OFF ; Variables cblock H'20' W_TEMP STATUS_TEMP endc ;Nous aurons besoin de variables afin de ;stocker les registres susceptibles d'être modifiés lors de l'interruption ; Dédut du programme org goto ORG goto 0000h init 0004h int init BSF STATUS, RP0 ;Page d'adresse 1 -> on a accès aux TRIS BCF OPTION_REG,7 ;Mise à 0 du bit 7 d'option (CF M19) CLRF TRISD ;Met le TRIS du port D à 0 -> port en mode Output BCF TRISC,2 ;Met le bit 2 du port C et les bits 2 et 5 du port A en sortie 9

BCF TRISA,2 BCF TRISA,5 movlw B'00011110' movwf TRISB ;Met les bits 1 à 4 du port B en entrée BCF STATUS, RP0 ;Page d'adresse 0 MOVLW b'10001000' MOVWF INTCON boucle clrwdt MOVLW b'10101010' MOVWF PORTD ;On allume 4 des LEDS BSF PORTC,2 ; BSF PORTA,5 ; BCF PORTA,2 ;Teste la troisième colonne goto boucle int clrwdt BTFSS INTCON,0 ;On teste la provenance de l'interruption CLRF INTCON ;on inhibe les IT movwf W_TEMP swapf STATUS,W ;On sauve tout dans la RAM movwf STATUS_TEMP ;On peut le faire aussi ans la pile mais pas là :) MOVLW b'01010101' MOVWF PORTD boucle2 clrwdt ;A vous de comprendre BTFSS PORTB,4 ;vous êtes pas des moules goto boucle2 swapf STATUS_TEMP,W ;voilà c'est fini movwf STATUS ;on retablit tout même Z swapf W_TEMP,F ; swapf W_TEMP,W ; MOVLW b'10001000' MOVWF INTCON fin RETFIE ;On finit l'it END Maintenant vous savez tout et il vous reste un peu de temps pour mettre vos connaissances à profit : Celui qui écrit le programme le plus original et le plus beau remporte le paquet de BN!!! Par exemple : un programme pourra afficher différentes séquences sur les LEDS selon le bouton enfoncé. 10