II2 TD n°1 Voir WIKI en français (http://fr.wikibooks.org/wiki/Comment_d%C3%A9m
II2 TD n°1 Voir WIKI en français (http://fr.wikibooks.org/wiki/Comment_d%C3%A9marrer_avec_un_PIC16F84) Les PICs ont été introduits en 1977 par General Instrument Corporation (PIC1650 datasheet de l'époque disponible sur Internet http://www.rhoent.com/pic16xx.pdf). Les PICs représentent une famille tellement diversifiée qu'il est difficile de réaliser un ensemble de TDs suffisamment généraux pour les présenter. Nous avons choisi de présenter la série des 18F4550 et 16F877 qui seront utilisés en TPs. Pour la partie assembleur, seules seront présentées les instructions du 16F, le 16F84 étant encore très utilisé. Dans la partie description matérielle, on essaiera de montrer les architectures communes des deux modèles. 1°) La représentation des nombres La donnée de base de PIC (18FXX8) est l’octet. L’octet comporte 8 bits. Le bit 0 est le bit de poids faible et le bit 7 est le bit de poids fort. Mémoire programme : la mémoire programme du PIC (18FXX8) est organisée en mots de 16 bits. Le bit 0 est aussi le bit de poids faible et le bit 15 est le bit de poids fort. L'adressage de cette mémoire programme se fait sur 20 bits. La mémoire mémoire programme comporte donc 2Mo (2 Méga octets). Les 18FX48 disposent de 16ko de mémoire programme et les 18FX58 disposent de 32ko donc loin des 2Mo théoriques. Mémoire EEPROM : le PIC (18FXX8) dispose de 256 octets de mémoire EEPROM. L'accès est réalisé à l'aide de la directive ORG 0xF00000. Mémoire donnée : le PIC (18FXX8) dispose jusqu'à 4ko de mémoire donnée répartie en quinze banques subdivisées en deux parties : - cases mémoires spéciales (registres spéciaux) en banque 15 - cases mémoires libres que vous pouvez utiliser à votre guise 768 (18FX48) ou 1536 (18FX58) octets. L’unité centrale connaît trois représentations des nombres : Nombres entiers non signés (Unsigned Integer): Un octet peut avoir des valeurs entre 0 et 255 ($FF), un mot entre 0 et 65535 ($FFFF). Nombres entiers signés complément à 2 (Two’s complement). Un octet peut avoir des valeurs entre -128 ($80) et +127 ($7F), un mot entre -32768 ($8000) et 32767 ($7FFF). Le bit de poids fort indique toujours le signe. Décimal codé binaire (BCD Binary Coded Decimal): Un octet contient deux chiffres décimaux. Les bits 7,6,5,4 contiennent le chiffre de poids fort, les bits 3,2,1,0 contiennent le chiffre de poids faible. Un octet peut donc avoir des valeurs entre 0 ($00) et 99 ($99). Comme beaucoup de micro-contrôleur, le PIC (16F84) gère ce format à travers la demi- retenue (bit DC du registre status). Exercice 1 Convert the following decimal numbers to binary : +11, -11, -23 (two's complement representation with 8 bits). Then convert these numbers to hexadecimal. Convert the following binary numbers to decimal : 111011, 11010101. Perform the following binary substraction using (i) the « ordinary » substraction technique ; (ii) the two's complement method. 11011 - 10101 11100 - 1001 2°) Le modèle de programmation du PIC (18FXX8) TD II2 GEII-1 IUT Troyes Il peut être présenté de la manière très simplifiée suivante : 7 Accumulateur W 0 4 Pointeur de pile STKPTR 0 20 Compteur ordinal PC 0 Status - - - N OV Z DC C Z : zéro OV : Overflow DC : demi-retenue (demi-carry) N : Negatif C : retenue (Carry) Le pointeur de pile n'existe pas en tant que registre (d'où son grisé). Il n'est manipulé directement par aucune instruction (mais indirectement par PUSH et POP). Il ne comporte qu'une profondeur de 31 niveaux. Le sommet de la pile TOS (Top Of Stack) est accessible à travers 3 registres TOSU, TOSH et TOSL. Le compteur programme est en fait composé de trois registres 8 bits : - PCL (FF9h) pour les 8 bits de poids faibles (accessible en lecture/écriture) - PCH pour les 8 bits de poids moyens (inaccessible en lecture/écriture) - PCU pour les 5 bits de poids forts (inaccessible en lecture/écriture) Lors d'une écriture dans PCL (movwf, addwf ...) PCLATH (FFAh)est transféré dans PCH et PCLATU (FFBh) dans PCU. Le modèle de programmation complet est plus complexe, en particulier à cause des registres spéciaux. Il est présenté en annexe à la fin du document. 3°) Quelques instructions Toute zone définie par l’utilisateur commence avec la DIRECTIVE CBLOCK, suivie par l’adresse du début de la zone. En ce qui concerne le PIC (18FXXXX) la zone mémoire libre commence en adresse 0x0C on aura donc UDATA_ACS ; début de la zone variables w_temp :1 ; Zone de 1 byte montableau : 8 ; zone de 8 bytes ; Fin de la zone ou CBLOCK 0x00 ; début de mémoire ACCESS RAM :96 octets w_temp :1 ; Zone de 1 byte montableau : 8 ; zone de 8 bytes ENDC ; Fin de la zone Opérations littérales (adressage direct) et de contrôles pour 18FXXXX et 16FXXX Mnémonique Opérande Description Cycles 14/16 bits Opcode status affected notes GOTO k aller à l'adresse k ( sur 11bits pour les 16F et sur 20 bits pour les 18F) 2 10 1kkk kkkk kkkk 1110 1111 kkkk kkkk 1111 kkkk kkkk kkkk 2 / 40 Réalisé avec OpenOffice sous LINUX TD II2 GEII-1 IUT Troyes Voici en résumé le fonctionnement du goto : - L’adresse de saut sur 20 bits est chargée dans le PC. - La suite du programme s’effectue à la nouvelle adresse du PC. Souvenez-vous, que pour le 18FXXXX : Adresse de saut = adresse réelle. Opérations orientées octets entre registre et mémoire (File en anglais) pour 18FXXXX et 16FXXX Mnémonique Opérande Description Cycles 14/16 bits Opcode status affected notes INCF f,d INCF f[,d[,a]] Incrémente f 1 00 1010 dfff ffff 0010 10da ffff ffff C,DC,N,OV,Z 1,2,3,4 DECF f,d DECF f[,d[,a]] Décrémente f 1 00 0011 dfff ffff 0000 01da ffff ffff C,DC,N,OV,Z 1,2,3,4 Sauf spécification contraire, d vaut toujours, au choix : - 0 la destination est W et le contenu de l’emplacement mémoire n’est pas modifié. - 1 la destination est f (la lettre f) : dans ce cas le résultat est stocké dans l’emplacement mémoire. a est le RAM access bit : - 0 l'emplacement mémoire est en access RAM - 1 l'emplacement mémoire est en access Bank (déterminé par le registre BSR) Exemples incf mavariable , 1 ; le contenu de ma variable est augmenté de 1 ; le résultat est stocké dans mavariable. incf mavariable , 0 ; Le contenu de mavariable est chargé dans w et ; augmenté de 1. W contient donc le contenu de ; mavariable + 1. mavariable n’est pas modifiée Les modes d'adressage Le PIC (18FXXXX) connaît neuf modes d'adressage. Nous n'en verrons qu'un dans ce TD. Immédiat ou littéral (Immediate) : c'est l'adressage le plus facile. L'opérande se trouve directement dans le programme derrière le code de l'instruction. Opérations littérales (adressage immédiat) et de contrôles pour 18FXXXX et 16FXXX Mnémonique Opérande Description Cycles 14/16 bits Opcode status affected notes ADDLW k Addition de W et k 1 11 1110 kkkk kkkk 0000 1111 kkkk kkkk N,OV,C, DC,Z ANDLW k Et logique de W et k 1 11 1001 kkkk kkkk 0000 1011 kkkk kkkk N,Z IORLW k OU inclusif logique de W et k 11 1000 kkkk kkkk 0000 1001 kkkk kkkk N,Z MOVLW k chargement du littéral dans W 1 11 00xx kkkk kkkk 0000 1110 kkkk kkkk 0E 7F movlw d'127' ;charger 127 dans W 0F 10 addlw H'10' ;additionner 16 Expliquer assemblage et désassemblage. 4°) Bien comprendre le modèle de programmation Il est important de bien comprendre le fonctionnement général d'un micro-contrôleur pour bien se persuader qu'une connaissance parfaite d'un état permet de trouver ses états suivants. Pour un micro- 3 / 40 Réalisé avec OpenOffice sous LINUX TD II2 GEII-1 IUT Troyes contrôleur on appelle état la connaissance (partielle) des valeurs des registres et de celles des mémoires. Exercice 2 (données en hexadécimal) On donne les états (connaissance partielle : on ne connaît pas tout, mais c'est suffisant) suivants : PC=120 PC=040 W=FF DC=0 C=0 adresses mémoire 11F 30C6 03F 30FF 30FF 30C8 3E09 3E08 3908 3E40 38F9 124 30FF 1°) D'après le schéma donné ci-dessus, désassembler la partie utile du code. 2°) Exécuter ensuite les instructions que vous pouvez, et donner les états successifs. 4 / 40 Réalisé avec OpenOffice sous LINUX TD II2 GEII-1 IUT Troyes II2 : TD n°2 1°) Les banques mémoires du 16F84 La mémoire du 16FXXX est organisée en banques sélectionnées par le(s) bit(s) RP0 (et RP1) du registre STATUS. Seul RP0 est utilisé pour le 16F84, soit deux banques. File Address Banque 0 Banque 1 File Address 00h Indirect addr. Indirect addr. 80h bcf status,rp0 01h TMR0 OPTION_REG 81h bsf status,rp0 passe en 02h PCL PCL 82h passe en banque 0 03h STATUS STATUS 83h banque 1 04h FSR FSR 84h 05h PORTA TRISA 85h 06h PORTB TRISB 86h 07h --- --- 87h 08h EEDATA EECON1 88h 09h EEADR EECON2 89h 0Ah PCLATH PCLATH 8Ah 0Bh INTCON INTCON 8Bh 0Ch 68 cases mémoires SRAM correspond à la banque 0 8Ch ... 4Fh CFh inutilisé inutilisé 7Fh FFh 2°) Les banques des 18FXXXX La série uploads/Finance/ tdii2-pic18f-2009.pdf
Documents similaires








-
28
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Oct 03, 2021
- Catégorie Business / Finance
- Langue French
- Taille du fichier 0.5269MB