Table des matières I. Présentation .................................................................................................................................... 2 II. Objectifs........................................................................................................................................... 2 III. Outils de développement ................................................................................................................ 3 IV. Test et application ‘PIC16F84A’ ....................................................................................................... 4 I. Présentation La PIC16F84 est un microcontrôleur de la famille PIC développé par Microchip Technology. Il offre une architecture RISC 8 bits, une mémoire flash de 1 024 mots et des capacités d'E/S polyvalentes. II. Objectifs 1- Le compte rendu du TP en Binôme est à adresser à [email protected] a. Réalisez l’implantation du programme ci-dessus dans votre environnement MPLAB X. b. A l’aide de l’outil de DEBUG exécutez en pas à pas votre programme et commentez la variation des registre STATUS et SFR, imprimez l’état des mémoires où se situent votre programme, vos data (Ram et EEROM), ainsi que la pile système lors de l’appel au tempo. Fournir un mini compte rendu de l’utilisation du débugger. 2 - Fournir le code asm qui permet de réaliser : ✓ L’Initialisation de la zone mémoire avec valeur 0x1A comprise entre 0x10 à 0x25 ✓ Imprimez l’image écran de la mémoire avant et après exécution du programme. III. Outils de développement MPLAB X IDE est un environnement de développement intégré (IDE) puissant et convivial développé par Microchip Technology. Il offre des fonctionnalités avancées pour la programmation, le débogage et la simulation de microcontrôleurs PIC, dsPIC et AVR. Doté d'une interface utilisateur intuitive, MPLAB X IDE facilite la création, le test et la mise au point des applications embarquées, ce qui en fait un outil essentiel pour les développeurs de systèmes embarqués. Tools Project Fenêtre MPLABE X IDE Debugger Code ASM Target memory view IV. Test et application ‘PIC16F84A’ ✓ Réalisez l’implantation du programme ci-dessus dans votre environnement MPLAB X. ✓ A l’aide de l’outil de DEBUG En utilisant l'outil de débogage de MPLAB X IDE, nous pouvons observer que lorsque nous cliquons sur le bouton bleu "RESET", le programme entre dans la partie reset_vect. ✓ L’Initialisation de la zone mémoire avec valeur 0x1A comprise entre 0x10 à 0x25 ;-----------------------------------------------------------------------------; Fonction : init_memory ; Description : Initialise une zone m�moire avec la valeur 0x1A de l'adresse 0x10 ; � l'adresse 0x25. ;-----------------------------------------------------------------------------init_memory: BANK0 ; Initialisation des param�tres movlw 0x1A ; Valeur � stocker movwf FSR ; Adresse de d�part movlw 0x16 ; Nombre d'octets � initialiser movwf COUNT ; Initialiser le compteur fill_memory_loop: movwf INDF incf FSR, 1 decfsz COUNT, 1 goto fill_memory_loop movlw 0x10 movwf FSR display_memory_loop: movf FSR, W movf INDF, W incf FSR, 1 decfsz COUNT, 1 goto display_memory_loop BANK1 return ✓ Imprimez l’image écran de la mémoire avant et après exécution du programme. ✓ Test d’une application simple a l’aide de Proteus 8 et MPLAB X IDE Une application en langage C utilisant la PIC16F84A pour simuler un feu rouge de rue. Lorsque l'utilisateur appuie sur le bouton, le feu rouge s'allume des deux côtés pendant 3 secondes pour permettre aux piétons de traverser en toute sécurité. void main() { TRISB = 0x00; // Définir le PORTB comme sortie TRISA = 0x00; // Définir le PORTA comme sortie TRISB.RB6 = 1; // Définir RB6 comme entrée for (;;) { // (si RB6 est à l'état bas) if (PORTB.RB6 == 0) { // Éteindre la LED PORTB = 0b00001001; delay_ms(3000); // temps pour que le passeger traverse la route PORTB.RB6 == 1; } else { // Allumer la sortie RB0 et RB6 PORTB = 0b00100001; delay_ms(1000); // Allumer la sortie RB1 et RB4 PORTB = 0b00010010; delay_ms(1000); // Allumer la sortie RB2 et RB3 PORTB = 0b00001100; delay_ms(1000); } } }