aide sur le Pic 16F84
Répondre à la discussion
Affichage des résultats 1 à 23 sur 23

aide sur le Pic 16F84



  1. #1
    invite312192d3

    aide sur le Pic 16F84


    ------

    Bonjour,

    ce petit programme permet de mettre le portB en sortie avec les valeurs :01000010


    Code:
                 list          p=16f84  
    #include "p16f84.inc"	 
       	     org          0x00              
    reset   	     goto        debut         
    
    debut                              
        	    bsf        STATUS,RP0    		  
           	     clrf       TRISB ;  
           	     bcf        STATUS,RP0      
      
                       movlw          0x42           
         	     movwf        PORTB           
                             end
    je n'arrive pas à comprendre le role de des instructions:
    Code:
     bsf        STATUS,RP0
    et

    Code:
    bcf        STATUS,RP0
    et aussi je ne comprends pas le role du reset
    Je suis débutante en programmation PIC, pouvez-vous m'aider s'il vous plait

    -----

  2. #2
    thundertom

    Re : aide sur le Pic 16F84

    Salut,

    si tu regardes dans la datasheet de ton PIC, tu véras que la mémoire est partagée en bank, pour pouvoir accéder à un registre situer dans une bank, il faut en premier lieu accéder à cette bank.

    Le choix de la bank se fait au travers du bit RP0 du registre STATUS.

    Donc, bsf STATUS,RP0 on accède à la bank 1 dans laquelle se trouve TRISB
    bcf STATUS,RP0 on reviens à la bank 0 dans laquelle ce trouve PORTB

    si jamais les bank c'est à la page 6 dans la datasheet (tableau de droite)


    et si tu utilise MPLAB pour développer tu peux utiliser la commande banksel suivi du registre que tu souhaite atteindre (par ex. banksel TRISB). c'est plus simple et plus lisible.
    Fabricando fit faber

  3. #3
    invite312192d3

    Re : aide sur le Pic 16F84

    Merciiiiiiiiiii

  4. #4
    Gérard

    Re : aide sur le Pic 16F84

    Télécharge le cours N°1 de Bigonoff, c'est en français et très bien expliqué.
    http://www.abcelectronique.com/bigonoff/

  5. A voir en vidéo sur Futura
  6. #5
    invite312192d3

    Re : aide sur le Pic 16F84

    Merci pour le cours, je veillerai à le lire attentivement, cependant j'ai toujours quelque problème et je souhaiterais encore si vous le permettez une autre explication de votre part

    J'ai du mal à comprendre ce programme, pouvez vous me l'expliquer s'il vous plait et surtout le sous programme de temporistaion et je ne comprends toujours pas l'utilité du reset en début de programme

    list p=16f84
    #include "p16f84.inc"
    temp equ 0x1c
    temp2 equ temp+1
    org 0x00
    reset goto debut
    org 0x04
    debut
    bsf STATUS,RP0
    clrf TRISB
    bcf STATUS,RP0
    suite
    movlw 0x55
    movwf PORTB
    call tempo tempo
    movlw 0xAA
    movwf PORTB
    call tempo
    goto suite
    tempo
    movlw 0x04
    movwf temp2
    tempBC2 movwf temp
    tempBC1 decfsz temp,f
    goto tempBC1
    decfsz temp2,f
    goto tempBC2
    return tempo
    end
    Merci d'avance

  7. #6
    gedonet

    Re : aide sur le Pic 16F84

    Bonjour
    Tu devrai presenter ton programme avec les tabulations, tu le comprendrais mieux.
    Code:
    	list p=16f84 
    	#include "p16f84.inc" 
    temp 	equ 	0x1c 
    temp2 	equ 	temp+1 
    	org 	0x00 
    reset 	goto 	debut 
    	org 	0x04 
    debut 
    	bsf 	STATUS,RP0 
    	clrf 	TRISB 
    	bcf 	STATUS,RP0 
    suite 
    	movlw 	0x55 
    	movwf 	PORTB 
    	call 	tempo ;tempo 
    	movlw 	0xAA 
    	movwf 	PORTB 
    	call 	tempo 
    	goto 	suite 
    tempo 
    	movlw 	0x04 
    	movwf 	temp2 
    tempBC2 movwf 	temp 
    tempBC1 decfsz 	temp,f 
    	goto 	tempBC1 
    	decfsz 	temp2,f 
    	goto 	tempBC2 
    	return 	tempo 
    	end
    Le reset en debut de programme est une etiquette (un label) il ne sert à rien dans ton programme, il servirait si tu voulais provoquer un reset dans ton programme par "GOTO reset". C'est quand même une chose à eviter, un programme bien ecrit n'a pas besoin d'être reseter pour fonctionner.

    Pour la tempo, tu charges 4 dans w, tu le transferes dans temp2 et dans temp. Ensuite tu decrémentes temp tant qu'il ne vaut pas 0, à 0 tu decrementes temp2, tant qu'il ne vaut pas 0 tu retournes decrementer temp qui est rechargé au passage et ainsi de suite tant que temp et temp2 ne sont pas à zero.
    Gilles

  8. #7
    Gérard

    Re : aide sur le Pic 16F84

    Tout est dans le cours de Bigo.

  9. #8
    invite312192d3

    Re : aide sur le Pic 16F84

    Merci énormément pour votre aide

    J'ai une autre question:

    Code:
    movlw 	0xAA 
    movwf 	PORTB
    Pourquoi faut-il passer par le registre de travail d'abord pour pouvoir mettre la valeur 0xaa dans le port B??

    Code:
    temp 	equ 	0x1c 
    temp2 	equ 	temp+1
    Je n'arrive pas à comprendre quand est ce qu'on utilise le registre de travail w et pourquoi utiliser equ??

    Je sais que je pose beaucoup de question mais excusez mon ignorance

  10. #9
    Gérard

    Re : aide sur le Pic 16F84

    As-tu téléchargé Bigo ?
    Visiblement non, parce que les réponses à tes questions s'y trouvent.

  11. #10
    invite312192d3

    Re : aide sur le Pic 16F84

    Je viens de le télécharger....j'ai compris que equ veut dire égal

    mais je n'ai toujours pas compris pourquoi il faut toujours passer par le registre de travail W pour toute les opérations

    merciii

  12. #11
    Gérard

    Re : aide sur le Pic 16F84

    Citation Envoyé par syle Voir le message
    Je viens de le télécharger....j'ai compris que equ veut dire égal
    Voilà une bonne réponse.

    Citation Envoyé par syle Voir le message
    mais je n'ai toujours pas compris pourquoi il faut toujours passer par le registre de travail W pour toute les opérations

    merciii
    Je ne me suis jamais posé cette question et pourtant j'ai écrit quelques programmes.

  13. #12
    Forhorse

    Re : aide sur le Pic 16F84

    Citation Envoyé par syle Voir le message
    mais je n'ai toujours pas compris pourquoi il faut toujours passer par le registre de travail W pour toute les opérations
    Ben essayes de faire sans, tu comprendras pourquoi
    En même temps si ça s'appel registre de travail, c'est sans doute pas pour rien

  14. #13
    invite312192d3

    Re : aide sur le Pic 16F84

    Je ne me suis jamais posé cette question et pourtant j'ai écrit quelques programmes.


    Ok, si tu ne t'es pas posé cette question, alors je dois faire comme toi vu ton expérience......mille mercis

  15. #14
    Gérard

    Re : aide sur le Pic 16F84

    Citation Envoyé par syle Voir le message


    Ok, si tu ne t'es pas posé cette question, alors je dois faire comme toi vu ton expérience......mille mercis
    Tu peux toujours te poser cette question. S'interroger fait avancer.

    Maintenant, concernant les µC, je pense qu'il y a des questions plus importantes à se poser.

  16. #15
    ftorama

    Re : aide sur le Pic 16F84

    Citation Envoyé par syle Voir le message
    mais je n'ai toujours pas compris pourquoi il faut toujours passer par le registre de travail W pour toute les opérations
    C'est comme ça sur la plupart des microcontrôleurs et microprocesseurs d'il y a 30 ans, parce qu'on ne savait pas faire facilement communiquer n registres avec le système. Le registre de travail est la porte d'entrée vers le reste du système...et accessoirement un formidable goulet d'étranglement puisqu'il faut quasi systématiquement l'écrire et le sauvegarder.

    Sur les micros modernes, tu trouves facilement 16 à 32 registres de travail, et le compilateur C sait optimiser leur utilisation. En assembleur, tu peux réserver certains registres à tes variables les plus utilisées.

  17. #16
    PIC sur PAC

    Re : aide sur le Pic 16F84

    bonsoir,
    Petite question de béotien sur le fonctionnement de(s) bank(s) sur le (ou les) PIC.
    Le choix de la bank se fait au travers du bit RP0 du registre STATUS.

    Donc, bsf STATUS,RP0 on accède à la bank 1 dans laquelle se trouve TRISB
    bcf STATUS,RP0 on reviens à la bank 0 dans laquelle ce trouve PORTB
    Si l'on programme en C c'est transparent ou il faut aussi faire cette gymnastique?
    Dans le doute reboot

  18. #17
    thundertom

    Re : aide sur le Pic 16F84

    Perso je m'en suis jamais occupé et ça a toujours fonctionner. Ce doit être par-ce-que le compilo s'en charge =)

    Si tu es curieux, tu lis la doc du compilo ça doit être expliqué quelque-pars =)

    pour completer, il y a biens DES banks sur LES PIC tout du moins sur les 16F, 12F et 18F pour les autres je ne sais pas
    Dernière modification par thundertom ; 16/03/2011 à 22h25.
    Fabricando fit faber

  19. #18
    PIC sur PAC

    Re : aide sur le Pic 16F84

    Si tu es curieux, tu lis la doc du compilo ça doit être expliqué quelque-pars =)
    Houlaaa non j'ai déjà assez à lire la doc de mon µC et à me sortir des arcanes de l'environnement de dev.
    C'était juste de la curiosité.
    Dans le doute reboot

  20. #19
    gedonet

    Re : aide sur le Pic 16F84

    Citation Envoyé par syle Voir le message
    Je viens de le télécharger....j'ai compris que equ veut dire égal
    Bonjour
    Basiquement, c'est un peu cela, mais c'est legerement plus compliqué.
    EQU est une directive pour le compilateur,ce n'est pas une ligne de code qui sera dans le pic. Dans la ligne:
    Code:
    temp 	equ 	0x1c
    le compilateur va remplacer "temp" par "0x1c" ce qui, dans ton cas, impose une adresse pour la variable "temp". Il ne faut surtout pas comprendre que l'on ecrit la valeur 0x1c dans le registre temp.
    Gilles

  21. #20
    Forhorse

    Re : aide sur le Pic 16F84

    C'est ce qu'on appel une "declaration de variable"

  22. #21
    Gérard

    Re : aide sur le Pic 16F84

    Citation Envoyé par thundertom Voir le message
    Perso je m'en suis jamais occupé et ça a toujours fonctionner. Ce doit être par-ce-que le compilo s'en charge =)

    Si tu es curieux, tu lis la doc du compilo ça doit être expliqué quelque-pars =)

    pour completer, il y a biens DES banks sur LES PIC tout du moins sur les 16F, 12F et 18F pour les autres je ne sais pas
    C'est le compilateur qui s'en charge.
    Maintenant, concernant les bank de RAM, attention lors de la déclaration des variables plus grandes qu'un octet de le pas être à la limite de bank.

    Je m'explique, on déclare une variable de type word (2 octet) juste à la fin de bank1 pour le 1er octet, le 2e se trouvera en bank2 ce qui risque de poser problème.

    J'espère avoir été clair.

  23. #22
    gedonet

    Re : aide sur le Pic 16F84

    Citation Envoyé par Forhorse Voir le message
    C'est ce qu'on appel une "declaration de variable"
    Bonjour
    Dans le programme de syle c'est oui, mais ce n'est pas forcement le cas, par exemple si on avait:
    temp EQU 0x1C
    et par la suite
    movlw temp
    On peut, dans ce cas, dire que temp est une constante.
    EQU, veut simplement dire on remplace temp par une valeur, apres c'est selon le contexte.
    Gilles

  24. #23
    invitefaaca50b

    Re : aide sur le Pic 16F84

    tout est dans le cours, qui est super bien fait? Apres, si on ne sait pas lire...

Discussions similaires

  1. Pic 16f84
    Par invitecad1e610 dans le forum Électronique
    Réponses: 1
    Dernier message: 08/05/2009, 16h40
  2. Aide Sur Pic 16f84
    Par invite423d6f67 dans le forum Électronique
    Réponses: 4
    Dernier message: 14/03/2008, 13h42
  3. pic; 16F84;
    Par omar.STE dans le forum Électronique
    Réponses: 15
    Dernier message: 26/07/2007, 20h11
  4. pic 16F84
    Par invite894c2685 dans le forum Électronique
    Réponses: 0
    Dernier message: 21/09/2006, 14h47
  5. Pic 16f84
    Par invite59c54dd9 dans le forum Électronique
    Réponses: 3
    Dernier message: 04/03/2006, 15h36
Découvrez nos comparatifs produits sur l'informatique et les technologies.