2STE Lycée Technique Mohamed VI – Azilal [2019/2020] N. EL-GAOUTI Application A

2STE Lycée Technique Mohamed VI – Azilal [2019/2020] N. EL-GAOUTI Application A T C Page | 36 Microcontrôleur PIC16F84 : Aspect Programmation I. Fonctions générales sur des Registres :  Programme 1 : Charger/déplacer un registre Charger la constante b'11011011' dans le registre 0x8C (bank1) Charger la constante b'00100100' dans le registre 0x10 (bank0) Déplacer le contenu du registre 0x10 au registre 0x11 Déplacer le contenu du registre 0x8C au registre 0x0D Label Instruction Opérande Commentaires List p=16f84 ; (instruction logiciel) choix du μC à programmer include "p16f84.inc" ; (instruction logiciel) Librairie, qui contient les adresses des registres et des bits ORG 0x000 ; (instruction logiciel) Adresse Mémoire programme à laquelle commence ; l’écriture de notre programme ; 0x000 la ligne du programme exécutée au démarrage ou après MCLR GOTO debut ; Sauter au label debut (adresse Mém. Prog. Aléatoire définie par le logiciel) ; Chargement des constantes debut BSF STATUS, RP0 ; Aller à la bank1 de la RAM MOVLW b'11011011' ; mettre une constante binaire dans le registre de travail W MOVWF 0x8C ; Déplacer le contenu de W vers l'adresse 0x8C BCF STATUS, RP0 ; Aller à la bank0 de la RAM MOVLW b'00100100' ; mettre une constante binaire dans le registre de travail W MOVWF 0x10 ; Déplacer le contenu de W vers l'adresse 0x10 ; Déplacement des registre ; BCF STATUS, RP0 ; Rester à la bank0 car les registres GPR de la bank1 sont MOVF 0x10,W ; Déplacer le contenu de 0x10 dans le registre de travail W, résultat dans W MOVWF 0x11 ; Déplacer le contenu de W vers l'adresse 0x11 ; BCF STATUS, RP0 ; Rester à la bank0 car les registres GPR de la bank1 sont ; dupliqués dans la bak0 (reg 0x8C = reg 0x0C) –voir structure de la RAM – MOVF 0x0C, W ; Déplacer le Contenu du registre 0x0C vers le registre W MOVWF 0x0D ; Déplacer le contenu de W vers l'adresse 0x0D END ; (instruction logiciel) fin programme  Programme 2 : Complément Mettre les valeurs d’15’ et b’11001100’ dans les Variable var1 et var2, puis appliquer le compliment à ces 2 adresses. Label Instruction Opérande Commentaire List p=16f84 ; (instruction logiciel) choix du μC à programmer include "p16f84.inc" ; (instruction logiciel) inclure la librairie du μC ORG 0x000 ; (instruction logiciel) Adresse de démarrage après reset (instruction logiciel) var1 RES 0x0C ; (instruction logiciel) Réserver des adresses pour les variables var2 RES 0x0D GOTO debut ; Aller au label debut (adresse définie par le logiciel) debut ; BCF STATUS, RP0 ; Aller à la bank0 ; on peut ignorer cette instruction car au démarrage on est à la bank0 car (RP0=0) MOVLW d’15' ; mettre une constante décimale dans W MOVWF var1 ; Déplacer le contenu de W vers la variable var1 MOVLW b'11001100' ; mettre une constante binaire dans W MOVWF var2 ; déplacer le contenu de W vers la variable var2 COMF var1, 1 ; Complément du contenu de la variable var1, résultat dans la même variable COMF var2, 1 ; Complément du contenu de la variable var2, résultat dans la même variable END ; (instruction logiciel) fin programme  Programme 3 : Somme et Soustraction 2STE Lycée Technique Mohamed VI – Azilal [2019/2020] N. EL-GAOUTI Application A T C Page | 37 Mettre les valeurs h’33’ et b’11001100’ dans les variables var1 et var2, La variable resu1 reçoit l’addition des contenus de var1 et var2, puis resu2 reçoit la soustraction var1 – var2 Label Instruction Opérande Commentaire List p=16f84 ; Choix du μC à programmer (instruction logiciel) include "p16f84.inc" ; inclure la librairie du uC (instruction logiciel) ORG 0x000 ; Adresse de la 1ère instruction dans la mémoire programme(instruction logiciel) var1 res 0x0C ; Réserver des adresses pour les variables var2 res 0x0D resu1 res 0x10 resu2 res 0x11 GOTO debut ; Aller au label debut (adresse définie par le logiciel) debut MOVLW h’33' ; mettre une constante hexadécimale dans W MOVWF var1 ; Déplacer le contenu de W vers var1 MOVLW b'11001100' ; mettre une constante binaire dans W MOVWF var2 ; Déplacer le contenu de W vers var2 MOVF var1,W ; copier contenu de var1 vers W ADDWF var2,W ; additionner le contenu de W et de var2, résultat dans W MOVWF resu1 ; Déplacer le contenu de W vers resu1 MOVF var2,W ; copier contenu de var2 vers W SUBWF var1,W ; soustraction des contenus var1 – W , résultat dans W MOVF resu2 ; Déplacer le contenu de W vers resu2 END ; (instruction logiciel) fin programme II. Utilisation des ports Entrée/Sortie :  Programme 4 : Port en Sortie Les ports A et B sont reliés à des afficheurs (Voir simulation) Utiliser le PORTA pour afficher les valeurs hexadécimales sur 4 bits (5)16 (F)16 (A)16 Utiliser le PORTB pour afficher les valeurs binaires (11011011)2 (11110000)2 (00001111)2 Label Instruction Opérande Commentaire List p=16f84 ; Choix du μC à programmer (instruction logiciel) include "p16f84.inc" ; inclure la librairie du uC (instruction logiciel) ORG 0x000 ; Adresse de la 1ère instruction dans la mémoire programme(instruction logiciel) GOTO debut ; Aller au label debut (adresse définie par le logiciel) ; Configuration des ports A et B debut BSF STATUS, RP0 ; Aller à la bank1 MOVLW h'00' ; Configurer le port en Sortie (en mettant à 0 MOVWF TRISA ; les bits du TRIS) par constante b'0000 0000'  W  TRIS CLRF TRISB ; ou par RAZ du registre TRIS (TRISB pour configurer PORTB) ; Utilisation des ports A et B BCF STATUS, RP0 ; Aller à la bank0 MOVLW h'05' ; Charger une constante héxadécimale dans le reg W MOVWF PORTA ; Contenu du reg W vers le reg PORTA MOVLW b'11011011' ; Charger une constante binaire dans le reg W MOVWF PORTB ; Contenu du reg W vers le reg PORTB Call temp ; appeler sous-programme « temp » MOVLW h'0F' ; Charger une constante héxadécimale dans le reg W MOVWF PORTA ; Contenu du reg W vers le reg PORTA MOVLW b'11110000' ; Charger une constante hexadécimale dans le reg W MOVWF PORTB ; Contenu du reg W vers le reg PORTB Call temp ; appeler sous-programme « temp » MOVLW h'0A' ; Charger une constante héxadécimale dans le reg W MOVWF PORTA ; Contenu du reg W vers le reg PORTA MOVLW b'00001111' ; Charger une constante binaire dans le reg W MOVWF PORTB ; Contenu du reg W vers le reg PORTB Call temp ; appeler sous-programme « temp » END ; fin programme (instruction logiciel)  Programme 5 : Port en entrée Configurer le PORTA en entrée et stocker son contenu dans l’adresse 0x10 2STE Lycée Technique Mohamed VI – Azilal [2019/2020] N. EL-GAOUTI Application A T C Page | 38 Label Instruction Opérande Commentaire List p=16f84 ; Choix du μC à programmer (instruction logiciel) include "p16f84.inc" ; inclure la librairie du uC (instruction logiciel) ORG 0x000 ; Adresse de la 1ère instruction dans la mémoire programme(instruction logiciel) GOTO debut ; Aller au label debut (adresse définie par le logiciel) ; Configuration du Port /// la configuration n’est pas obligatoire, au démarrage les PORTs sont configurés en entrée Debut BSF STATUS, RP0 ; Aller à la bank1 MOVLW h'FF' ; Configurer le port A en entrée (en mettant à 1 MOVWF TRISA ; les bits du TRISA) par constante b'11111111'  W  TRISA ;CLRF TRISA ; ou par RAZ du registre TRISA puis le complément ;COMF TRISA,1 ; ; Utilisation du Port BCF STATUS, RP0 ; Aller à la bank0 MOVF PORTA, 0 ; Contenu du reg PORTA vers le reg W MOVWF 0x10 ; Contenu du reg W vers le reg 0x10 END ; fin programme (instruction logiciel)  Programme 6 : PORTA (Entrée) vers le PORTB (Sortie) Configurer le PORTA en entrée et recopier son contenu vers le PORTB en sortie Label Instruction Opérande Commentaire List p=16f84 ; Choix du μC à programmer (instruction logiciel) include "p16f84.inc" ; inclure la librairie du uC (instruction logiciel) ORG 0x000 ; Adresse de la 1ère instruction dans la mémoire programme(instruction logiciel) GOTO debut ; Aller au label debut (adresse définie par le logiciel) ; Configuration du Port : au démarrage les PORTs sont configurés en entrée, on configure seulement le PORTB en sortie debut BSF STATUS, RP0 ; Aller à la bank1 MOVLW h'00' ; Configurer PORTB en Sortie (en mettant à 0 MOVWF TRISB ; les bits du TRISB) par constante b'0000 0000'  W  TRISB ; CLRF TRISB ; ou par mise à 0 du registre ; Utilisation du Port BCF STATUS, RP0 ; Aller à la bank0 boucle MOVF PORTA, 0 ; Déplacer le Contenu du reg PORTA vers le reg W MOVWF PORTB ; Déplacer le Contenu du reg W vers le reg PORTB GOTO boucle ; répéter la boucle END ; fin programme (instruction logiciel)  Programme 7 : PORTB (4 Entrées) vers PORTB (4 Sorties) Configurer le PORTA en entrée et stocker son contenu dans l’adresse 0x10 uploads/Litterature/ rep-2.pdf

  • 21
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager