TP microcontrôleurs
A. Oumnad
page 1
TP Microcontrôleurs Ce document doit absolument être étudié avant l'arrivé en TP Ce document contient : Un résumé qui illustre les différences majeures entre le PIC16F877 étudié pendant le cours et le PIC16F887 implanté sur les cartes EasyPIC5 sur lesquelles on va faire les TP Une présentation des éléments essentiels de la carte EasyPIC5 Un petit tutoriel pour savoir créer et compiler un projet sur le compilateur MikroC qui permet de programmer les PICs en langage C Les énoncés des TP
Durant ces TPs, on va mettre en pratique ce qu'on apprit sur la programmation des PIC en langage assembleur Nous allons aussi apprendre à programmer les PIC en langage C Les étudiants doivent absolument préparer les TP avant d'arriver en classe. Un pourcentage important de la note de TP et affecté à la préparation. Attention, les PC sont équipés du logiciel DeepFreese. A la fin de chaque séance, chaque étudiant est tenu de sauvegarder son travail sur une clef USB. Chaque étudiant sera interrogé ultérieurement sur les travaux réalisés Il est strictement interdit de sauvegarder des fichiers sur le bureau
TP microcontrôleurs
A. Oumnad
page 2
Sommaire I
II
III
Migration PIC16F877 vers PIC16F887 ................................................................................................... 3 I.1
Les registres Spéciaux FSR .......................................................................................................................4
I.2
L'Oscillateur Interne (Horloge) ................................................................................................................5
I.3
Les switchs de configuration ...................................................................................................................6
I.4
Les ports d'E/S .........................................................................................................................................7
I.5
L'interruption IOC (Interrupt on change) .................................................................................................7
I.6
Le convertisseur Analogique Numérique ............................................................................................. 10
I.7
L'USART ................................................................................................................................................. 11
La carte de TP EasyPIC5 ..................................................................................................................... 12 II.1
L'alimentation ....................................................................................................................................... 12
II.2
La programmation de la carte .............................................................................................................. 12
II.3
Les LEDs ................................................................................................................................................ 13
II.4
Les boutons poussoir et les résistances de Pull-up/down.................................................................... 14
II.5
Les entrées pour tests analogiques ...................................................................................................... 15
II.6
L'afficheur LCD ...................................................................................................................................... 15
Le compilateur MikroC ...................................................................................................................... 16 III.1
Les types de variables ........................................................................................................................... 16
III.2
Les opérateurs logiques ........................................................................................................................ 16
III.3
Les opérateurs logiques orienté bits .................................................................................................... 16
III.4
Comment modifier un registre ou un bit.............................................................................................. 16
III.5
Créer un projet Mikroc ......................................................................................................................... 17
III.6
Quelques fonctions utiles ..................................................................................................................... 17
IV
TP no 1 .............................................................................................................................................. 18
V
TP no 2 .............................................................................................................................................. 19 V.1
La bibliothèque pic_asm_lib.asm ......................................................................................................... 19
V.2
Travail pratique..................................................................................................................................... 19
TP microcontrôleurs
I
A. Oumnad
Migration PIC16F877 vers PIC16F887
page 3
TP microcontrôleurs
I.1
Les registres Spéciaux FSR
A. Oumnad
page 4
TP microcontrôleurs
I.2
A. Oumnad
page 5
L'Oscillateur Interne (Horloge)
On peut choisir soit les modes LP,XT, HS, RC, RCIO, EC qui utilisent l'oscillateur classique du PIC soit le nouveau oscillateur intégré. Le chois se fait à l'aide des bits de configuration FOSC2,FOSC1,FOSC0 du registre de configuration 1 (2007h) et du registre SFR OSCCON OSCCON
SCS : Choix de l'horloge système 0 : Oscillateur classique. Mode définit par les switchs de configuration 1 : Oscillateur interne. Le choix des fréquences se fait par les bits IRCF IRCF2,IRCF1,IRCF0 : Choix de la fréquence de l'oscillateur interne 111 = 8MHz 110 = 4MHz (default) 101 = 2MHz 100 = 1MHz 011 = 500kHz 010 = 250kHz 001 = 125kHz 000 = 31kHz (LFINTOSC)
OSCCON = 0 Oscillateur à quartz OSCCON = 71h Oscillateur interne de 8 Mhz OSCCON = 61h Oscillateur interne de 4 Mhz
TP microcontrôleurs
I.3
A. Oumnad
page 6
Les switchs de configuration
Il ya maintenant deux registres pour les switchs de configuration : CONFIG1( 2007h) et CONFIG2 (2008h). La configuration se fait toujours à l'aide de la directive __CONFIG, mais il faut préciser l'adresse du registre : CONFIG1 : 2007 DEBUG
LVP
FCMEN
IESO
BOREN1
BOREN0
CPD
CP
MCLRE
PWRTE
WDTE
FOSC2
FOSC1
FOSC0
DEBUG: In-Circuit Debugger Mode bit 1 = In-Circuit Debugger disabled, RB6/ICSPCLK and RB7/ICSPDAT are general purpose I/O pins 0 = In-Circuit Debugger enabled, RB6/ICSPCLK and RB7/ICSPDAT are dedicated to the debugger LVP: Low Voltage Programming Enable bit 1 =RB3/PGM pin has PGM function, low voltage programming enabled 0 =RB3 pin is digital I/O, HV on MCLR must be used for programming FCMEN: Fail-Safe Clock Monitor Enabled bit 1 = Fail-Safe Clock Monitor is enabled 0 = Fail-Safe Clock Monitor is disabled IESO: Internal External Switchover bit 1 = Internal/External Switchover mode is enabled 0 = Internal/External Switchover mode is disabled BOREN<1:0>: Brown-out Reset Selection bits(1) 11 = BOR enabled 10 = BOR enabled during operation and disabled in Sleep 01 = BOR controlled by SBOREN bit of the PCON register 00 = BOR disabled CPD: Data Code Protection bit 1 = Data memory code protection is disabled 0 = Data memory code protection is enabled CP: Code Protection bit 1 = Program memory code protection is disabled 0 = Program memory code protection is enabled MCLRE: RE3/MCLR pin function select bit 1 = RE3/MCLR pin function is MCLR 0 = RE3/MCLR pin function is digital input, MCLR internally tied to VDD PWRTE: Power-up Timer Enable bit 1 = PWRT disabled 0 = PWRT enabled WDTE: Watchdog Timer Enable bit 1 = WDT enabled 0 = WDT disabled and can be enabled by SWDTEN bit of the WDTCON register FOSC<2:0>: Oscillator Selection bits 111 =RC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, RC on RA7/OSC1/CLKIN 110 =RCIO oscillator: I/O function on RA6/OSC2/CLKOUT pin, RC on RA7/OSC1/CLKIN 101 =INTOSC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN 100 =INTOSCIO oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN 011 =EC: I/O function on RA6/OSC2/CLKOUT pin, CLKIN on RA7/OSC1/CLKIN 010 =HS oscillator: High-speed crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN 001 =XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN 000 =LP oscillator: Low-power crystal on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN Config2 : 2008 WRT1 WRT0 BOR4V WRT<1:0>: Flash Program Memory Self Write Enable bits 11 =Write protection off BOR4V: Brown-out Reset Selection bit 0 =Brown-out Reset set to 2.1V 1 =Brown-out Reset set to 4.0V
-
-
-
-
-
-
TP microcontrôleurs
A. Oumnad
Oscillateur à quartz (XT) __CONFIG 0x2007 , 0x23E1 __CONFIG 0x2008 , 0x3FFF OSCCON = 0
I.4
page 7
Oscillateur interne - 8Hz __CONFIG 0x2007 , 0x23E4 __CONFIG 0x2008 , 0x3FFF OSCCON = 0x71
Oscillateur interne - 4Hz __CONFIG 0x2007 , 0x23E4 __CONFIG 0x2008 , 0x3FFF OSCCON = 0x61
Les ports d'E/S
PORTA : Ce port a maintenant 8 bits. Les pins RA6 et RA7 servent à connecter le quartz. Si on veut les utiliser en E/S numérique il faut utiliser l'oscillateur interne mode INTOSCIO. La configuration se fait par les Switchs FOSC<2:0>= et le registre OSCON. Voir paragraphe sur l'Oscillateur. OSCCON = 0 , RA6 et RA7 sont affectées au générateur d'horloge. OSCCON = 61h, FOSC<2:0>=100 Oscillateur interne 4MHz, RA6 et RA7 = E/S numériques OSCCON = 71h, FOSC<2:0>=100 Oscillateur interne 8MHz, RA6 et RA7 = E/S numériques Les pins RA0, RA1, RA2, RA3 et RA5 analogique numérique
PORTB : Ce port comporte maintenant 6 broches pouvant être configurée en analogique. Voir paragraphe sur les registres ANSEL et ANSELH
PORTC : Ce port ne semble pas comporter de changement par rapport au 16f877
PORTD : Ce port de 8 bits n'a rien de spécial. Le mode PSP a disparu. 3 bits peuvent être utilisés en mode PWM PORTE : Ce port comporte maintenant 4 bits. Les 3 bits RE0, RE1 et RE2 peuvent être configuré en analogique ou numérique. Le bit RE3 fonctionne seulement en entrée. Il peut être soit une entrée numérique normale soit une entrée de RESET (MCLR). Sa configuration se fait à l'aide du switch MCLRE de CONFIG1(2007) : MCLRE = 0 RE3 est une entrée numérique normale. MCLR est connecté intérieurement à Vdd MCLRE =1 RE3 sert de MCLR
I.5
L'interruption IOC (Interrupt on change)
L'interruption RBI que nous appellerons désormais IOC est déclenchée par n'importe quel changement sur un bit de PORTB. Le bit INTCON.RBIE valide l'interruption globalement alors que chaque bit du registre IOCB la valide pour une entrée spécifique de PORTB. A titre d'exemple, pour valider l'interruption IOC sur la pate RB3, il faut positionner les 3 bits de validation : INTCON.GIE, INTCON.RBIE et IOCB.IOCB3 IOCB (bank1)
IOCB7
IOCB6
IOCB5
IOCB4
Pour baisser le drapeau RBIF, il faut d'abord lire PORTB
IOCB3
IOCB2
IOCB1
IOCB0
TP microcontrôleurs
A. Oumnad
page 8
TP microcontrôleurs
A. Oumnad
page 9
TP microcontrôleurs
I.6
A. Oumnad
page 10
Le convertisseur Analogique Numérique
RA0 RA1 RA2 RA3 RA5 RE0 RE1 RE2 RB2 RB3 RB1 RB4 RB0 RB5
ANS0 ANS1 ANS2 ANS3 ANS4 ANS5 ANS6 ANS7 ANS8 ANS9 ANS10 ANS11 ANS12 ANS13 -
0 : Numérique 1 : Analogique ANSELH
AN0 AN1 AN2 AN3 AN4 AN5 AN6 AN7 AN8 AN9 AN10 AN11 AN12 AN13
ANSEL
Le convertisseur Analogique numérique a subit quelques modifications: Le 16F887 dispose de 14 E/S Analogique/Numérique (AN0 …AN1). Leur configuration en Analogique ou en numérique se fait plus à l'aide de ADCON1 mais à l'aide des deux registres ANSEL et ANSELH (bank 3)
TP microcontrôleurs ADCON0
A. Oumnad
ADCS1
ADCS0
CHS3
CHS2
page 11 CHS1
CHS0
GO/DONE
ADON
ADCS1:ADCS0 : Choix de l'horloge de conversion. Tad = TOSC x div 00 : div = 2 01 : div = 8 10 : div = 32 11 : Oscillateur RC dédié au CAN, Tad est de l'ordre de 4 µs : choix du canal analogique à convertir ADCON1
ADFM
-
VCFG1
VCFG0
-
-
-
-
ADFM : justification à droite ou à gauche du résultat dans les registre ADRESH et ADRESL ADRESH ADRESL 1 : justifié à droite 000000XX XXXXXXXX 0 : justifié à gauche XXXXXXXX XX000000 VCFG1 : Choix de Vr0 : Vr- = Vss 1 : Vr- = AN2 = RA2 VCFG+ : Choix de Vr+ 0 : Vr+ = Vdd 1 : Vr+ = AN3 = RA3
I.7
L'USART
L'USART a été améliorée et porte le nom EUSART (Enhanced USART) la vitesse est maintenant contrôlée par deux registres SBBRGH et SPBRG en plus d'un registre de control BAUDCTL. Pour que l'EUSART fonctionne comme L'USART classique, il faut faire : - SPBRGH = 0 - BAUDCTL = 0
TP microcontrôleurs
A. Oumnad
page 12
II La carte de TP EasyPIC5
II.1 L'alimentation L'alimentation de la carte peut se faire soit à travers le câble USB de programmation, soit par une alimentation externe. Le choix se fait à l'aide du jumper J6. L'interrupteur ON/OFF permet d'allumer éteindre la carte
II.2 La programmation de la carte La programmation du PIC se fait à l'aide du logiciel de programmation PicFLASH à travers un câble USB et le programmateur mikroICD intégré sur la carte. L'utilisation de PicFLASH est simple Choisir le PIC utilisé en haut à droite Charger votre programme .hex à l'aide du bouton Load Flasher à l'aide du bouton Write Si vous avez retouché votre .hex, il faut le recharger à l'aide du bouton Reload Hex
TP microcontrôleurs
A. Oumnad
page 13
II.3 Les LEDs Toutes les E/S du PIC sont reliée à des LEDs comme indiqué sur la figure ci-dessous. Quatre interrupteur du SW6 permettent de connecter/déconnecter un port de la masse. PORTA / E RB0 RB1
SW6 1 2 3 4 5 6 7 8
RB2
PORTB
RB3 RB4 RB5 RB6 RB7
PORTC PORTD
TP microcontrôleurs
A. Oumnad
page 14
II.4 Les boutons poussoir et les résistances de Pull-up/down Toutes les E/S sont reliées à des résistances de pull-up pull-down regroupées par port comme indiqué sur la figure ci-dessous. J1
SW1
PORTA
J3
J2
PORTC
J5
SW4
SW3
SW2
PORTB
J4
PORTD
SW5
PORTE
Toutes les E/S du PIC sont reliées à des boutons poussoir comme indiqué sur la figure ci-dessous RA7
RA6
RA5
RA4
RA3
RA2
RA1
RA0
PORTB/C/D/E
J17 Avec ces dispositions, chaque E/S peut être configurée comme montré sur les deux figures ci-dessous : Vcc Vcc
TP microcontrôleurs
A. Oumnad
page 15
II.5 Les entrées pour tests analogiques Deux potentiomètres P1 et P2 délivrent deux tensions analogiques comprises entre 0V et 5V. Ces signaux peuvent être reliés aux entrées RA0, RA1, RA2, RA3 et RA5 comme le montre la figure ci-dessous
Attention : sur le 16F887 comme sur le 16F877, RA4 n'est pas une entrée analogique Une entrée connectée à un potentiomètre doit être déconnectée de sa résistance de pull up à l'aide du Switch SW1 ou du jumper J1
II.6 L'afficheur LCD
L'afficheur LCD est commandé par PORTB en mode 4 bits. Le potentiomètre P4 (LCD Contrast) permet d'ajuster le contraste Le Switch 7 de SW9 permet d'allumer/éteindre le rétro éclairage.
LCD
E
RS
D7
D6
D5
D4 D3 D2 D1 D0
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
PIC16F887
TP microcontrôleurs
A. Oumnad
page 16
III Le compilateur MikroC III.1 Les types de variables Type (unsigned) char signed char (signed) short (int) unsigned short (int) (signed) int unsigned (int) (signed) long (int) unsigned long (int)
Taille en octets 1 1 1 1 2 2 4 4
Intervalle 0 .. 255 - 128 .. 127 - 128 .. 127 0 .. 255 -32768 .. 32767 0 .. 65535 -2147483648 .. 2147483647 0 .. 4294967295
III.2 Les opérateurs logiques Operator Operation && logical AND || logical OR ! logical negation Exemple : If ( a>b && xb et x< y faire Xxxxxxxxx ; Xxxxxxxxxx ; Xxxxxxxxxxx ; }
III.3 Les opérateurs logiques orienté bits Operator & | ^ ~ << >>
Operation AND (inclusive) OR; exclusive OR (XOR) Complément, (NOT); inverse tout les bits Décalage à gauche Décalage à droite
Exemple : PORTB = ~PORTB; PORTB = PORTB & 0b11111101;
// inverser tous les bits de PORTB // forcer le bit RB1 à 0
III.4 Comment modifier un registre ou un bit Pour affecter une valeur à un port on utilise une simple affectation sans se soucier du banc: PORTB = 0x24; TRISC = 0; TRISB = 0xFF; TXSTA = 0x24; Pour modifier un bit on utilise l'écriture suivante : TRISB,F0 = 1; PORTB,F3 = 0;
TP microcontrôleurs
A. Oumnad
page 17
III.5 Créer un projet Mikroc Project -> New Project Donner un nom au projet Choisir un dossier pour le projet. Il est conseillé de créer un nouveau dossier pour chaque projet. ->Browse -> aller dans le dossier où vous stockez vos projets ->Cliquer sur le bouton Créer nouveau dossier -> donner au dossier le même nom que le projet Choisir votre PIC dans le champ device : PIC16F887 Choisir l'horloge 8 MHx Définir les switchs de configuration (2007 et 2008) Comme c'est le premier projet, on va définir une configuration typique et la sauvegarder pour la réutiliser par la suite : -> Cliquer sur le bouton new -> NewScheme apparait dans le champ de saisie à gauche -> remplacer NewScheme par un nom de votre choix, exemple 16F887_INTOSCIO -> Cocher les cases suivantes : -> INTOSCIO (Horloge interne, RA6,RA7=E/S) -> WDT_OFF (chien de garde désactivé) -> PWRTE_ON (activer la temporisation de 64ms après la mise sous tension) -> CP_OFF (code non protégé en lecture) -> CPD_OFF (EEPROM non protégée en lecture) -> BOR_ON (réinitialisation du PIC en cas de chute de Vdd en dessous de la valeur fixée par le switch BOR4V) -> IES0_OFF (désactiver le mode switch Over) -> FCMEN_OFF (désactiver le moniteur Fail Safe Clock) -> LVP_OFF (Désactiver le mode de programmation basse tension) -> DEBUG_OFF (Désactiver le débugger) -> BOR40V (fixer la tension du Brown Out à 4V) -> WRT_OFF (pas de protection en écriture de la mémoire flash) -> -> Cliquer sur le bouton SAVE pour sauvegarder ces chois sous le nom NewScheme Cliquer sur OK pour commencer à écrire votre code. Vous pouvez vérifier à gauche Saisir le programme C et le compiler en cliquant sur le bouton (Ctrl+F9). Les erreurs de compilation apparaissent dans la fenêtre en bas de l'écran. S'il n'ya pas d'erreur, on obtient Success (Release Build) en vert Flasher le pic en appuyant sur F11
III.6 Quelques fonctions utiles Delay_ms(n) : temporisation de n ms Delay_us(n) : temporisation de n µs Lcd_init(&PORTx) : initialise l'afficheur LCD branché sur le port PORTx voir le help pour plus de détail Lcd_config(&port,RS,E,WR,D7,D6,D5,D4) : initialise le l'afficheur LCD en précisant le brochage Lcd_out(l,c,chaine)
Exemple : Lcd_Config(&PORTD,0,1,7,5,4,3,2); : affiche une chaine sur le LCD en précisant la ligne et la colonne, ex : Lcd_Out(1, 3, "Hello!");
Lcd_out_cp(chaine) : affiche une chaine à la position courante du curseur Lcd_Chr(l,c,caractère) : affiche un caractère, ex: Lcd_Chr(2, 3, 'A'); Lcd_Chr_Cp(caractère) : affiche un caractère à la position courante, ex: Lcd_Chr('B');
Lcd_cmd(commande) : envoie une commande au LCD ex: Lcd_Cmd(LCD_CURSOR_OFF); Consulter le help de MikroC pour plus d'information
TP microcontrôleurs
A. Oumnad
page 18
IV TP no 1 L'objectif de ce TP est de prendre en main la carte EASYPIC5 et d'écrire un programme sous MPLAP qui utilise les LEDs et les boutons poussoirs, d'implanter ce programme sur la carte à l'aide du programme PicFlash et de faire des investigations pertinentes.
1) Observer la carte et localiser : a) Le Microcontrôleur 16F887 b) Le connecteur USB de programmation/alimentation c) Le connecteur Jack d'alimentation d) Le jumper J6 qui permet de choisir entre alimentation USB ou alimentation Jack e) Le bouton marche arrêt ON/OF f) Le switchSW6 qui permet de connecter les ports sur les LED g) Le jumper J17 qui permet de connecter les boutons poussoirs sur la masse ou sur Vdd h) Le jumper J13 qui permet de connecter/déconnecter le broche RA6 et RA& au quartz 2) Déterminer les configurations CONFIG1 (2007), CONFIG2 (2008) et OSCCON pour avoir a) Configuration A : Horloge à Oscillateur interne 8 MHz, WDT_OFF, CodeProtection_OFF, tempo_démarrage_ON, BrownOut_Reset_ON_4Volts, Write_Protect_OFF b) Configuration B Horloge à Oscillateur Quartz XT, WDT_OFF, CodeProtection_OFF, tempo_démarrage_ON, BrownOut_Reset_ON_4Volts, Write_Protect_OFF 3) Ecrire le programme TP1-1.asm sous MPLAB qui : a) Configure Le PIC avec la Configuration A définie ci-dessus b) Configure tous les ports en sorties numériques c) Fait clignoter tous les ports avec une temporisation de ½ s obtenue à l'aide de tempo3 4) Brancher la carte EasyPic5 sur votre PC à l'aide du câble USB. Vérifier que le jumper J6 est sur position USB. Vérifier sur le switch SW6 que tous les ports sont connectés aux LEDs Allumer la carte à l'aide de bouton ON/OFF. Démarrer le programme PicFlash, charger le fichier TP1-1.hex, vérifier que les switchs sont corrects Flasher le PIC, bouton write Observer les résultats. Pourquoi le bit RE3 ne clignote pas. Si RA6 et RA7 ne clignotent pas expliquer pourquoi 5) Modifier le programme en utilisant la configuration B définie plus haut. sauvegardez-le sous TP1-2.asm. 6) Compiler le programme et charger TP2-2.hex dans PicFlash. Vérifier les switchs de configuration 7) Flasher le PIC, Observer et commenter les résultats
TP microcontrôleurs
A. Oumnad
page 19
V TP no 2 L'objectif de ce TP est d'apprendre à utiliser l'afficheur LCD
V.1 La bibliothèque pic_asm_lib.asm Pour utiliser une fonction, il faut la déclarer au début du programme : #define nomfonction_
tempo1 : temporisation, T = 3W + 5 cycles, max = 773 cycles (#define tempo1_) tempo2 : temporisation, T = 770W + 5 cycles, max = 197125 cycles tempo3 : temporisation, T = 197122W + 5 cycles max = 50463237 cycles lcd_init : Initialise l'afficheur LCD. o Fait appel à des macros contenues dans le fichier macros.asm o Doit être déclarée comme suit : #define lcd_init_ o Nécessite la constante LCD_MODE qui définit le mode de connexion : 8 bits : #define LCD_MODE 0xFF 4 bits poids faible : #define LCD_MODE 0x0F 8 bits poids fort : #define LCD_MODE 0xF0 o Nécessite la constante LCD_PORT qui définit sur quel port est branché le LCD, Exemple : #define LCD_PORT PORTB o Nécessite les constante LCD_RS et LCD_E qui définissent les bits qui contrôlent RS et E Exemple : #define LCD_RS PORTB,3 #define LCD_E PORTB,2 o Nécessite les constante LFOSC_MHZ qui définit l'horloge système Exemple : #define FOSC_MHZ 8 lcd_data : affiche le caractère présent dans W sur le LCD lcd_cmd : envoie la commande présente dans W vers le LCD lcd_locate : Positionne le curseur à la position définie par W (0=début ligne 1, 64=début ligne 2) lcd_byte_d : affiche l'octet présent dans w en décimal lcd_word_d : affiche le word présent dans AH:AL en décimal umul8x8 : AL * W --> AH:AL … umul16x16 : AH:AL x BH:BL --> BH:BL:AH:AL div16by8 : Division AH:AL / W --> Q=AL, R=AH div16by16 : Division DH:DL / BH:BL --> Q=AH:AL, R=CH:CL div32by16 : Division BH:BL:AH:AL / DH:DL --> Q=AH:AL R=BH:BL byte2dec : Convertit le contenu de W en 3 chiffres décimaux --> tableau bcd exemple : W=234 ---> [bcd]=2, [bcd+1]=3, [bcd+2]=4 word2dec : Convertit AH:AL en 5 chiffres décimaux --> tableau bcd exemple : AH:AL=63421 => [bcd]=6, [bcd+1]=3, [bcd+2]=4, [bcd+3]=2, [bcd+2]=1 dword2dec : Convertit BH:BL:AH:AL en 10 chiffres décimaux --> tableau bcd
V.2 Travail pratique 1) Faire le programme tp2-1.asm qui affiche : TP PIC sur la première ligne et les deux nombres 125 et 2011 sur la 2ème ligne 2) Faire le programme tp2-2.asm qui affiche sur la première ligne un compteur 8 bits (0,1,2 …255) 3) Faire le programme tp2-3.asm qui affiche sur la deuxième line un compteur 16 bits (0, 1, 2,… 65535). 4) Faire le programme tp2-4.asm qui affiche simultanément les deux compteurs précédents