You are on page 1of 5

COURS INITIATION AUX MICROCONTROLEURS PIC DE MICROCHIPS

Bus d'Adresse

BUT DU COURS INITIATION AUX MICROCONTROLEURS PIC DE MICROCHIPS


Le but de ce cours est daborder le dveloppement de programmes en assembleur et la mise en uvre matrielle pour les microcontrleurs Microchip (PIC) de moyenne gamme (MIDRANGE).

Processseur

Dcodeur

Mmoire Programme (EPROM) Instruction

Mmoire Donnes (RAM)

Ports Entre/Sortie

Commande Statut

Donne

Donne

Bus de donnes

RAPPELS SUR LES COMMANDES NUMERIQUES


AUTOMATISME Un quipement est dit automatique quand il est capable de prendre des dcisions ponctuelles sans intervention humaine. Un automatisme comporte toujours deux parties : Une PARTIE OPERATIVE (P.O.) dont les actionneurs (moteurs, vrins,...) agissent dans un processus, Une PARTIE COMMANDE (P.C.) qui coordonne les diffrentes actions de la partie oprative.

Processeur Le processeur lit et excute les instructions du programme. Les instructions sont des oprations de logique, d'arithmtique, de test ou de transfert. Les donnes sont reues par les ports dentre ou stockes dans la mmoire de donnes. Mmoire Programme Le programme est mmoris sous forme d'instructions lmentaires dans une mmoire de programme non volatile. Ces instructions sont accessibles par lintermdiaire de leur adresse de stockage. Mmoire Donnes Les donnes sont mmorises temporairement sous forme de mots dans la mmoire de donnes. Ces donnes sont accessibles par lintermdiaire de leur adresse de stockage. Port dEntre/Sortie Cette fonction change les informations de commande et de statut avec la partie oprative. Ces changes sont arrangs par lintermdiaire dune adresse de slection Bus de Donnes Ce bus transfert les informations, instructions ou donnes, entre des fonctions internes de la commande numrique. Bus dAdresse et Dcodeur Ladresse est un numro d'ordre, mis par le processeur, qui permet daccder tous les priphriques. Le dcodeur dadresse dcode une partie du bus dadresse pour activer la fonction priphrique concerne. ORGANISATION SEQUENTIELLE Lorganigramme suivant reprsente l'organisation squentielle de base des commandes numriques.

Dans un automatisme numrique, la partie commande est une commande numrique. Le Statut est constitu des informations d'entre de la commande numrique. La Commande constitue linformation de sortie de la commande numrique. Le calculateur labore les commandes, en fonction du statut, suivant une squence d'oprations numriques. La squence des oprations numriques est dcrite dans un programme d'instructions. COMMANDES NUMERIQUES ORGANISATION FONCTIONNELLE Le schma synoptique suivant reprsente une organisation classique de commande numrique de type VON-NEUMAN.

Reset

MICROPROCESSEURS RISC ET CISC

Initialiser

Les microprocesseurs CISC (Complex Instruction Set Computing) sont dots dun jeu tendu dinstructions complexes. Ces instructions sont relativement lentes. Les microprocesseurs CISC privilgient la puissance de traitement au dtriment de la rapidit. Les microprocesseurs RISC (Reduced Instruction Set Computing) sont munis dun jeu rduit dinstructions simples. Ces instructions sont adaptes et sont trs rapides. MICROCONTROLEURS

Lire Statut

Calculer Commande

Sortir Commande

Temporiser

Les Microcontrleurs sont des circuits intgrs qui contiennent, dans un circuit unique, toutes les fonctions dune commande numrique classique. C'est--dire : - le microprocesseur ; - les mmoires de programme et de donnes ; - les ports dentre et de sortie parallle ou srie ; - les bus de donnes et dadresse ; - dautres priphriques (compteur/timer, convertisseurs analogique/numrique, etc). SEQUENCE DU PROCESSEUR Le grafcet suivant reproduit le cycle de fonctionnement dun processeur :

Le RESET fait dbuter le fonctionnement de la commande par une phase d'initialisation. La commande effectue la lecture du statut actuel. Daprs les informations contenues dans le statut, la commande numrique labore un ordre quelle transfert en sortie. Enfin la commande peut effectuer une priode de temporisation avant de recommencer le cycle par une nouvelle lecture du statut. MICROPROCESSEURS ARCHITECTURE CLASSIQUE VON-NEUMANN

RESET Dbut Programme 1 1

Lecture Instruction

Transfert ?

Test ? Saut Programme 1

Calcul ? Excution calcul 1

Architecture Von-Neumann
Mmoire Programme et Mmoire Donne

Transfert Donnes 1

CPU

Suite Programme

Larchitecture Von-Neumann utilise un seul bus pour transmettre les instructions (programme) et les donnes. Cette architecture ne permet pas de lire les instructions pendant la lecture ou lcriture dune donne. ARCHITECTURE HARVARD
Architecture Harvard
Mmoire Programme Mmoire Donne

Le RESET fait dbuter le processeur par la premire instruction du programme. Le processeur lit cette instruction en slectionnant son adresse dans la mmoire de programme. Les instructions sont des oprations de calcul, de test ou de transfert : En cas de transfert, le processeur effectue un cycle de lecture ou un cycle d'criture ; En cas de test, le processeur fait un choix entre deux branches de programme ; En cas d'opration de calcul, le processeur excute l'opration. Le processeur dtermine l'adresse de la prochaine instruction et continue la squence par la lecture de la prochaine instruction.

CPU

Larchitecture utilise deux bus spars. Un bus pour les instructions (programme) et un autre bus pour les donnes. Avec cette architecture ont peut lire les instructions pendant la lecture ou lcriture des donnes (pipeline). Larchitecture Harvard est plus rapide.

LANGAGE DE PROGRAMMATION Edition de programme Le programmeur dite, enregistre et teste le programme sur un ordinateur quip pour le dveloppement du logiciel et la programmation du microcontrleur ou dune mmoire non volatile. Les programmes peuvent tre crits trois niveaux diffrents : Langage volu (Pascal, Basic, Langage C, etc), Assembleur (mnmonique et oprande), Langage machine (binaire ou hexadcimal).

des priphriques de comptage et temporisation sophistiqus ; des convertisseurs analogique/numrique internes ; des capacits mmoires tendues pour le code et les donnes ; des priphriques de communication volus (I2C/SPI/ USB/CAN ports et USARTs) ; une technologie de programmation in situ (sur carte) ; des mmoires Flash, EEPROM, OTP et ROM.

Les Microcontrleurs PIC sont rpartis en trois gammes en fonction de la largeur des mots dinstructions. - Base-Line : instruction sur 12 bits, - Mid-Range : instruction sur 14 bits, - High-End : instruction sur 16 bits.

LES MICROCONTROLEURS MIDRANGE DE MICROCHIPS (PIC16CXXX)


ARCHITECTURE COMPLETE.

Le programme binaire est transfr dans une mmoire non volatile. Cette mmoire et sont logiciel sont implants sur la carte de commande ou dans un microcontrleur.

QUI EST MICROCHIPS

Microchip Technology Incorporated fabrique, entre autres, les produits suivants : - les microcontrleurs picmicro, - des microcontrleurs radio rfPIC, - des microcontrleurs dsp dspic, - des circuits analogiques et des interfaces, - des circuits dauthentification keelok, - des eeproms sries Lentreprise Microchip Technology Incorporated a t fonde en 1989. Sont sige est install Chandler en Arizona (USA). Elle emploie 3400 personnes. Microchips est le premier fournisseur mondial de microcontrleurs 8 bits. Les microcontrleurs de Microchips sont commercialiss sous la marque PIC. Depuis leur lancement, en 1990, plus de 3 milliards de PIC auraient t livrs. Il y aurait plus de 212 types de microcontrleurs diffrents. Larchitecture des PICs est de type Harvard noyau RISC. Cette architecture reste compatible travers une famille de 8 84 broches. Ce qui permet une migration aise avec trs peu de changement dans les programmes. Les caractristiques avances sont :

PIC16C712 (REMPLACE LE PIC 16C71) Mmoire programme EEPROM data Ram Port I/O Botier CAN 1 Gnrateur PWM Compteur/Timer 1024*14 256 octets 8 (Port B) + 5 (Port A) 18 broches 4 entres sur 8 bits 10 bits 1 x 16 bits + 2 x 8 bits + WDT

Frquence max ICSP (programmation in situ) BOR (reset laffaiblissement de tension) CCP (comparaison et capture PWM)

20 MHz oui oui oui

MEMOIRE DE DONNEES Bank 0 7Fh 128 o 00h RAM INTERNE 128 o 128 o 128 o Bank 1 Bank 2 Bank 3

PIC16F84A (REMPLACE LE PIC 16F84) Mmoire programme Flash EEPROM data Ram Port I/O Botier CAN 1 Gnrateur PWM Compteur/Timer Frquence max ICSP (programmation in situ) BOR (reset laffaiblissement de tension) CCP (comparaison et capture PWM) 1024*14 64 68 octets 8 (Port B) + 5 (Port A) 18 broches 1 x 8 bits + WDT 20 MHz Oui Non Non

Bank 0 7Fh Zone libre 20h 1Fh SFR 00h

Bank 1 Zone libre

Bank 2 Zone libre

Bank 3 Zone libre

SFR

SFR

SFR

REGISTRES SPECIAUX (SFR) Add 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Eh 0Fh 10h 11h 12h 13h 14h 15h 16h 17h 18h 19h 1Ah 1Bh 1Ch 1Dh 1Eh 1Fh Bank 0 INDF TMR0 PCL STATUS FSR PORTA PORTB PORTC PORTD PORTE PCLATCH INTCON PIR1 PIR2 TMR1L TMR1H T1CON TMR2 T2CON SSPBUF SSPCON CCPR1L CCPR1H CCP1CON RCSTA TXREG RCREG CCPR2L CCPR2H CCP2CON ADRES ADCON0 Bank 1 INDF OPTION_REG PCL STATUS FSR TRISA TRISB TRISC TRISD PORTE PCLATCH INTCON PIE1 PIE2 PCON OSCCAL Bank 2 INDF TMR0 PCL STATUS FSR PORTB PORTF PORTG PCLATCH INTCON Bank 3 INDF OPTION_REG PCL STATUS FSR TRISB TRISF TRISG PCLATCH INTCON

PIC16F877A (REMPLACE LE PIC 16F877) Mmoire programme Flash EEPROM data Ram Port I/O Botier CAN Comparateurs 1 Gnrateur PWM Compteur/Timer Frquence max Port srie ICSP (programmation in situ) BOR (reset laffaiblissement de tension) CCP (comparaison et capture PWM) CHAMPS MEMOIRE MEMOIRE DE PROGRAMME 1FFFh 2ko (page 3) 1800h 17FFh 2ko (page 2) 1000h 0FFFh 2ko (page 1) 08000h 07FFh 2ko (page 0) 0000h 8192*14 256 368 octets 3 x 8 (Port B,C,D) + 6 (Port A) + 3 (port E) 40 broches 8 entres sur 10 bits 2 2 x 10 bits 1 x 16 bits + 1 x 8 bits + WDT 20 MHz USART, IC, SPI Oui Oui 2

PR2 SSPADD SSPATAT

TXSTA SPBRG

ADCON1

REGISTRE DETAT (STATUS) Bit 7 IRP 6 5 RP1 RP0 4 /TO 3 /PD 2 Z 1 0 DC C

Memory rganization

Symbole C

Fonction Retenue

DC Z /PD /TO RP0 RP1 IRP RP1 0 0 1 1

Retenue dcimale (pour les oprations BCD). Zro Power Down Time Out (WDT) Bit 0 de slection de banque de registre. Bit 1 de slection de banque de registre. Slection de banque de registre en accs indirect RP0 0 1 0 1 Banque de Registre Banque 0 Banque 1 Banque 2 Banque 3 Adresse 000h07Fh 080h0FFh 100h17Fh 180h1FFh

OPERATIONS Oprations arithmtiques ADDWF f,d ADDLW k SUBWF f,d SUBLW k INCF f,d ; si d=0 alors W = W + f ; si d=1 alors f = W + f ; W = W + #k ; si d=0 alors W = f - W ; si d=1 alors f = f - W ; W = #k W ; si d=0 alors W = f + #1 ; si d=1 alors f = f + #1 ; si d=0 alors W = f - #1 ; si d=1 alors f = f - #1

RESET ET VECTEUR DINTERRUPTION Le tableau suivant donne les adresses ou le microcontrleur doit trouver le programme principal et le sous-programme dinterruption. Source RESET INTERUPT PORT DENTREE/SORTIE PARALLELE Vecteur 0000H 0004H

DECF f,d

Oprations logiques ANDWF f,d ; si d=0 alors W = W & f ; si d=1 alors f = W & f ANDLW k ; W = W & #k COMF f,d ; si d=0 alors W = /f ; si d=1 alors f = /f ; si d=0 alors W = W + f ; si d=1 alors f = W + f ; W = W + #k ; si d=0 alors W = W f ; si d=1 alors f = W f ; si d=1 alors W = W #k ; si d=0 alors W = < f ; si d=1 alors f = < f ; si d=0 alors W = f > ; si d=1 alors f = f > ; bit f.b = 0 ; bit f.b = 1 ; change les demi octets

IORWF f,d IORLW k XORWF f,d XORLW k RLF RRF f,d f,d

BCF f,b BSF f,b SWAPF f,d


Pour la plupart des ports, la direction des informations (entre ou sortie) est contrle par le registre de direction TRIS. TRISx contrle la direction du PORTx. Un bit 1 pour TRISx, correspond une entre pour le PORTx. Un bit 0 pour TRISx, correspond une sortie pour le PORTx. La lecture dun PORT, prend en compte le niveau logique de la broche et non celui du registre du PORT.
JEU DINSTRUCTIONS

SAUTS CALL a GOTO a BTFSC f ,b BTFSS f,b RETFIE RETURN RETLW k DECFSZ f,d INCFSZ f,d ; appelle le sous programme ladresse #a ; saut ladresse #a ; si f.b = 0 alors sauter1 ligne ; si f.b = 1 alors sauter1 ligne ; retour dinterruption ; retour de sous-programme ; W = #k et RETURN ; DECF et si Zro alors sauter1 ligne ; INCF et si Zro alors sauter1 ligne

TRANSFERTS MOVF f,d ;si d=0 alors W = f ;si d=1 alors f = f (permet de tester un registre) ;f=W ; W = #k ;f=0 ;W=0 ; WDT = 0

MOVWF f MOVLW k CLRF CLRFW CLRWDT

NOP ; aucune opration SLEEP ; mode veille