[PIC] Prog en assembleur 18f4320
Répondre à la discussion
Affichage des résultats 1 à 22 sur 22

[PIC] Prog en assembleur 18f4320



  1. #1
    invite8aaf941b

    [PIC] Prog en assembleur 18f4320


    ------

    Bonjour a tous,

    Je n'est aucune notion d'assembleur, pourtant jai deja 2 années d'études en langage C.

    Cela fait une semaine que je cherche sur le web en lisant les forum ainsi que les cours de bigonof, mais sans succès de compréhension....

    J'aimerais juste écrire un petit prog qui disent:
    char bouton;
    char sortie;
    if (bouton==0)
    sortie=1;
    else
    sortie =0;
    Sachant que la sortie est la broche 21 du pic ( RD2 du PORTD)
    Et l'entré est la broche 20 du pic ( RD1 du PORTD)

    J'ai éssayé mais sans succés jai juste voulu envoyé un 1 en sortie, donc 5 volt, et je n'y arrive même pas...

    Je me sent humilié par l'assembleur

    Plus sèrieusement j'aimerais avoir quelque conseille je suis ouvert a tout!!

    -----

  2. #2
    invite8aaf941b

    Re : [PIC] Prog en assembleur 18f4320

    Ne pouvant éditer!

    Je rajoute le bout de prog que j'ai écrie:
    ;;;;;;; Assembler directives ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;
    LIST P=18F4320
    #include <P18F4320.INC>

    __CONFIG _CONFIG1H, _IESO_OFF_1H & _FSCM_OFF_1H & _INTIO2_OSC_1H ;Internal rc, port sur RA7 et port sur RA6
    __CONFIG _CONFIG2L, _BOR_OFF_2L & _PWRT_ON_2L
    __CONFIG _CONFIG2H, _WDT_OFF_2H
    __CONFIG _CONFIG3H, _MCLRE_ON_3H & _PBAD_DIG_3H & _CCP2MX_C1_3H
    __CONFIG _CONFIG4L, _DEBUG_OFF_4L & _LVP_OFF_4L & _STVR_OFF_4L
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H

    ;***************************** ****************************** *******************
    ;Variable definitions

    CBLOCK 0x000
    ENDC
    ORG 0x002A
    ;goto main

    Initports

    BSF PORTD, 2 ; RD2 EN OUTPUT POUR TESTER LA MISE EN MARCHE DU MOTEUR POUR L4INSTANT
    BSF PORTD, 1 ; RD1 EN INPUT

    ;MOVF RD1, bouton1

    return

    MAIN

    call Initports

    CLRF PORTD
    CLRF LATD
    MOVLW 0XFF
    MOVWF TRISD

    end
    ;
    C'est le prog pour juste envoyer 1 en sortie et si j'y arrivait deja je serait content!!

  3. #3
    inviteb4b1e971

    Re : [PIC] Prog en assembleur 18f4320

    Salut pas mal le pseudo.

    T'a quoi comme assembleur?car j'en connais qu'un jpence pas être capable de t'aider mais je vais essayer.

    DSL

  4. #4
    invite8aaf941b

    Re : [PIC] Prog en assembleur 18f4320

    J'utilise MPLAB version 7.30 ( celle de l'entreprise en faite, vu que ca marche bien il ne veulent pas changer de version )

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

    Re : [PIC] Prog en assembleur 18f4320

    Ok moi je travaillais sur 16F84 y a surment des différences mais fodra que quelqu'un d'autres te les donnent.

    Je supose que tu utilise le port D
    J'ai repris tes valeurs je sais pâs si elle sont bonnes


    ****************************** **************
    DECLARATION DE VARIABLE
    ****************************** **********

    CBLOCK 0x000 ;début de la zone variable
    mavariable : 1 ;je déclare ma variable
    ENDC ;fin de la zone

    ****************************** ****
    déclaration de la zone eeprom
    ****************************** ****

    org 0x002A ;adress début zone eeprom

    ******************************
    init
    clrf PORTD ;Sortie portd a 0
    BANK1 ;passer en bank1
    bcf TRISD ;portD en sortie
    BANK0 ;passer en bank 0
    goto prog

    prog
    clrf mavariable ;mavariable a 0
    incf mavariable,f ;incrémente ma variable a 1
    goto prog ;boucle qui recommence tout
    END ;fin de prog

    Je sais pas si ca va marcher mais tu devrais pouvoir voir le 1er bit du port D a 1

    Alors?

  7. #6
    invitef26bdcba

    Re : [PIC] Prog en assembleur 18f4320

    Salut,

    C'est quatre lignes Assembleur...

    Code:
    btfss PORTD, 1 ; entrée à 1?
    bcf   PORTD, 2 ; non, alors sortie à 0
    btfsc PORTD, 1 ; entrée à 0?
    bsf   PORTD, 2 ; non, alors sortie à 1
    David.

  8. #7
    inviteb4b1e971

    Re : [PIC] Prog en assembleur 18f4320

    RE

    ca n'allait pas donc mon truc§

    il me semble que la 3eme ligne ne sert a rien et tu devrais faire une boucle du début a la fin de ce que tu as comme prog.

    Voila

  9. #8
    RISC

    Re : [PIC] Prog en assembleur 18f4320

    Fred,

    Plusieurs petites remarques pour t'aider:

    1/ Assembleur absolu / relogeable
    Le code que tu écris actuellement est en assembleur absolu. Je te recommande de plutôt écrire en assembleur relogeable. Pour cela il faut ajouter à ton projet le fichier linker script 18F4320.LKR .La synatxe est également légèrement différente.
    L'assembleur relogeable permet de s'affranchir de la déclaration des périphs et de la mémoire et permet SURTOUT d'utiliser plusieurs fichiers source, ce qui rend le logiciel plus lisible.

    2/ Banques de mémoire en RAM
    Si tu ne veux pas passer des heures à chercher les erreurs dues à l'oubli des changements de banques, je te recommande d'utiliser des macros. Je crois que Bigonoff les donne dans ses cours.

    3/ Note d'applications PIC18
    Il y a plein de notes d'application en assembleur ici :
    http://www.microchip.com/stellent/id...rects=appnotes

    Charges en quelques une et regardes les, cela te fera gagner du temps ;=)

    a+
    Dernière modification par RISC ; 03/06/2008 à 18h55. Motif: correction

  10. #9
    mat64

    Re : [PIC] Prog en assembleur 18f4320

    méfie-toi aussi de l'init des ports : je ne connais pas les 18F, mais sur les 16F c'est les registres TRIS (TRISA, TRSIB, etc) pour déclarer les broches en entrée ou sortie. La dans ta fonction initports, tu applique directement sur les registres des ports, ce qui est foireux (si c'est comme sur les 16F, à vérifier)

  11. #10
    RISC

    Re : [PIC] Prog en assembleur 18f4320

    Salut,

    Autres points importants :
    * Toute broche ayant plusieurs fonctions dont une analogique (ADC, comparateur) est TOUJOURS en analogique au RESET !!!
    Il faut donc impérativement initialiser le registre qui permet de choisir entre entée analogique ou E/S digitale (souvent c'est ANSEL)
    Lire les paragraphes sur le convertisseur et les PORTS (petits cadres gris dans la doc...)


    * Pour les broches en SORTIE TOUJOURS utilise LATx et SURTOUT PAS PORTx. C'est expliqué dans la doc Microchip et la source de nombreux problèmes surtout quand on tourne à vitesse élevée >= 20MHz. Même si tu ne comprends par bien pourquoi faire cela, fais le....
    exemple utiliser LATA au lieu de PORTA
    NB: ceci n'est vrai que pour chaque broche en SORTIE. Pour les broches en ENTREE il faut utiliser uniquement PORTx

    Je crois qu'il y a quelques tutos en assembleur ici : http://www.aix-mrs.iufm.fr/formation...indexPIC_C.htm

    a+

  12. #11
    invite8aaf941b

    Re : [PIC] Prog en assembleur 18f4320

    Je tient a préciser que je suis bien fredoleponge, j'ai du crée un nouveau car je ne pouvait plus me connecter a l'autre.

    Suite au remarque et aux différent liens j'ai pondu un nouveau programme.

    Voici mon nouveau programme:
    ;;;;;;; Assembler directives ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;
    LIST P=18F4320
    #include <P18F4320.INC>

    __CONFIG _CONFIG1H, _IESO_OFF_1H & _FSCM_OFF_1H & _INTIO2_OSC_1H ;Internal rc, port sur RA7 et port sur RA6
    __CONFIG _CONFIG2L, _BOR_OFF_2L & _PWRT_ON_2L
    __CONFIG _CONFIG2H, _WDT_OFF_2H
    __CONFIG _CONFIG3H, _MCLRE_ON_3H & _PBAD_DIG_3H & _CCP2MX_C1_3H
    __CONFIG _CONFIG4L, _DEBUG_ON_4L & _LVP_OFF_4L & _STVR_OFF_4L
    __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L
    __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
    __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L
    __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
    __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L
    __CONFIG _CONFIG7H, _EBTRB_OFF_7H

    ;***************************** ****************************** *******************
    ;Variable definitions

    CBLOCK 0x000
    bouton1
    MIN
    MAX
    MOY
    ENDC

    ORG 0x002A

    MOVWF OSCTUNE ; update register with factory cal value
    goto MAIN ;go to start of main code


    Initports
    MOVLW 0X60 ; 1MHZ 50
    MOVWF OSCCON
    MOVLW 0X1C ; RESET
    MOVWF RCON
    ;;;;;;;initialisation PORTD;;;;;;;;;;;;;;;;;;
    CLRF PORTD
    CLRF LATD
    MOVLW 0XC3
    MOVWF TRISD
    ;;;;;;;;initialisation du PORTC;;;;;;;;;;;;;;;;;
    CLRF PORTC
    CLRF LATC
    MOVLW 0XF9
    MOVWF TRISC
    ;;;;;;définition de variable
    MOVLW 0X05
    MOVWF MIN
    MOVLW 0X08
    MOVWF MOY
    MOVLW 0X14
    MOVWF MAX
    return

    MAIN



    call Initports
    ; appuie sur bouton2
    CLRF LATD
    MOVLW 0X02
    CPFSEQ PORTD
    goto clear1 ; instructions quand ce n'est pas vérifié RD3 à '0'
    BSF LATD, 4 ; RD3 à '1' quand c'est vérifié
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;
    ; appuie sur bouton 1
    suite1
    CLRF LATD
    MOVLW 0X01
    CPFSEQ PORTD
    goto clear2 ; RD4 à '0'
    BSF LATD, 5 ; RD4 à '1'
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;
    ; pas d'appuie sur les boutons
    suite2
    CLRF LATD
    MOVLW 0X03
    CPFSEQ PORTD
    GOTO Initports
    BcF LATD, 2
    BcF LATD, 3
    BcF LATD, 4
    GOTO Initports
    clear1
    BCF LATD, 2
    goto suite1
    clear2
    BCF LATD, 3
    goto suite2


    GOTO Initports
    end

    Donc en fonction de l'appuye sur des boutons poussoir ( 2 exactement qui sont sur RD0 et RD1 ) je mets ou non a 1 une de mes sortie ( RD2 ou RD3).
    Mon programme fonctionne mais lors du test en sortie je me retrouve bien avec zero lorsque je le veut mais je me retrouve avec 0,75 volts lorsque j'en atend 5... Après conseille de mon tuteur j'ai rajouté une resistance de pull-up mais ca n'as eu aucun effet... je m'en remet a votre aide!

    Mais la n'est pas le plus important maintenant vu que j'ai plutot bien compris comment cela marchais.
    Maintenant a la place de mettre des sorties à '1' j'aimerais envoyer des PWM qui vont me servir a piloter mon driver pour courant continue, je doit avoir 2 PWM car chacune d'elle va sur les deux entrées de sélection de mon driver.

    J'ai regarder la doc et si j'ai bien compris je doit remplacer la ligne ou j'envoie un '1' en sortie par cela?
    PR2=0b11111001
    T2CON=0b00000100
    CCPR1L=0b10111011
    CCP1CON=0b00011100
    Ce qui me permettra d'avoir en sortie un signal de 20khz a partir du 20mHz et un RC de 75%. Par la suite je ferais varier la valeur de mon rapport cyclique en fonction dune variable de grossisement que je comparerait à plusieurs valeur seuil (min moy max) mais cela n'est pas le point de cette discution mais permet de mieux comprendre le sujet.

    Je remercie toute aide par avance sur c'est deux point.
    Le premier probleme est plus pour ma comprehension et le deuxieme est plus en rapport avec le sujet.

  13. #12
    invite8aaf941b

    Re : [PIC] Prog en assembleur 18f4320

    les valeurs PWM je l'est trouver grace a se site
    Code HTML:
    http://www.micro-examples.com/public/microex-navig/doc/097-pwm-calculator.html
    Je voulais savoir aussi su quelle broche allait se retrouver mes deux signaux pwm.

    Merci.

  14. #13
    invite8aaf941b

    Exclamation Re : [PIC] Prog en assembleur 18f4320

    Un petit UP histoire que ce sujet ne tombe pas aux oubliette...

  15. #14
    mat64

    Re : [PIC] Prog en assembleur 18f4320

    Citation Envoyé par fredleponge Voir le message
    Mon programme fonctionne mais lors du test en sortie je me retrouve bien avec zero lorsque je le veut mais je me retrouve avec 0,75 volts lorsque j'en atend 5... Après conseille de mon tuteur j'ai rajouté une resistance de pull-up mais ca n'as eu aucun effet... je m'en remet a votre aide!
    Euh... moi ça m'inquièterais plutôt ça.... envoie ton schéma qu'on y jette un oeil.

  16. #15
    RISC

    Re : [PIC] Prog en assembleur 18f4320

    Salut,

    Regardes ce lien qui explique les bases de l'architecture PIC18 en assembleur avec des exemples simples (sur le PIC18F4520) :
    http://www.cwu.edu/~iet/programs/eet...1003/11003.htm

    Il y a aussi des exemples sur les périphériques mais ils sont en C : http://www.cwu.edu/~iet/programs/eet...1009/11009.htm

    a+

  17. #16
    invite8aaf941b

    Re : [PIC] Prog en assembleur 18f4320

    Pour le schéma de cablage j'ai juste mit 2 bouton poussoir et j'ai regardé a l'oscillo et au multimètre les sortie...

    5V
    |
    | |resistance de 10KOhm
    |
    |______________________directi on l'entrée d'un pic
    |
    masse

  18. #17
    invite8aaf941b

    Re : [PIC] Prog en assembleur 18f4320

    Nouveau petit problême pour mon PWM...


    J'initialise RC2 en sortie
    ;initialisation du PORTC
    CLRF PORTC
    CLRF LATC
    MOVLW 0XFB ; RC2(PW1) en sortie
    MOVWF TRISC
    Voici ma fonction pour envoyer mon PWM avec les caractéristiques suivantes
    ;Fpwm = 10000.00 Hz
    ;Duty Cycle = 40 %
    CLRF PR2
    MOVLW 0X7C ;PR2=0b0111 1100 0x7C
    MOVWF PR2

    CLRF T2CON
    MOVLW 0X05 ;T2CON=0b0000 0101 0x05
    MOVWF T2CON

    CLRF CCPR1L
    MOVLW 0x31 ;CCPR1L=0b0011 0001 0x31
    MOVWF CCPR1L

    CLRF CCP1CON
    MOVLW 0x3C ;CCP1CON=0b0011 1100 0x3C
    MOVWF CCP1CON
    En sortie, donc sur RC2 qui est la pin 17, je me retrouve avec rien...
    Pourtant il me semble que j'ai bien suivie toute les procédure pourpouvoir faire fonctionner mon module CCP et avoir un singnal PWM en sortie...

  19. #18
    mat64

    Re : [PIC] Prog en assembleur 18f4320

    Citation Envoyé par fredleponge Voir le message
    Pour le schéma de cablage j'ai juste mit 2 bouton poussoir et j'ai regardé a l'oscillo et au multimètre les sortie...

    5V
    |
    | |resistance de 10KOhm
    |
    |______________________directi on l'entrée d'un pic
    |
    masse
    bon, ce bout de schéma, c'est ce que tu as mis sur tes sorties RD2 et RD3 si j'ai bien suivi. Ben c'est pas trop étonnant que tu n'obtiennes jamais 5v. Ta sortie est reliée directement à la masse. Il arrive quand même à remonter le potentiel de 0.75 V ? ils sont costauds, ces pic... Tu risques quand même de lui griller les drivers de sortie. Changes vite ça....

  20. #19
    invite8aaf941b

    Re : [PIC] Prog en assembleur 18f4320

    Mon schéma pour les bouton ressemble a ca
    http://www.zimagez.com/zimage/montage193.php

    Et ensuite j'ai juste regardé l'evolution de ma sortie.

    Mais mon problême maintenant se situe plus au niveau du PWM car cette partie simple sortie n'etait la que pour comprendre la prog apres si le probleme vient de rajout de resistance ou autres...

  21. #20
    mat64

    Re : [PIC] Prog en assembleur 18f4320

    pour les boutons, c'est ok.

    Mais mon problême maintenant se situe plus au niveau du PWM car cette partie simple sortie n'etait la que pour comprendre la prog apres si le probleme vient de rajout de resistance ou autres...
    ben oui mais non....tu peux pas dire que tu t'intéresse au problème de soft et que le hard on verra plus tard...si tu résouds ton problème de soft, comment pourras tu tester avec une pin en court-circuit à la masse ? si ça se trouve ton soft marche très bien, et tu le vois pas parce que t'as grillé la sortie...

  22. #21
    invite8aaf941b

    Re : [PIC] Prog en assembleur 18f4320

    Oui tu a parfaitement raison, mais ces que cette pin je m'en sert que pour le test j'ai finalement réussie a envoyer le PWM sur les autres pin.
    Maintenant le problême ce que je veut l'envoyer quand j'appuye sur le bouton mais pour l'instant cela ne marche pas...

    Mais je vous tient au courant de l'avancer et si j'ai besoin d'aide je sais par ou passer

    Bne jrn à tous.

  23. #22
    invite73838812

    Re : [PIC] Prog en assembleur 18f4320

    Bonjour,

    est ce que quelqu'un pourait me définir l 'équivalent de ce code assembleur en langage C.

    Ca m'aiderai beaucoup.

    Merciii

    bsf LATD,7
    bcf TRISD,7
    bsf LATD,7

Discussions similaires

  1. PIC assembleur et gestion de mots de 16 bits
    Par invite427c7eae dans le forum Électronique
    Réponses: 10
    Dernier message: 07/10/2009, 06h53
  2. Assembleur pour PIC - BTFSC
    Par Toufinet dans le forum Électronique
    Réponses: 12
    Dernier message: 11/03/2008, 08h29
  3. recherche assembleur pour PIC
    Par BastienBastien dans le forum Électronique
    Réponses: 5
    Dernier message: 09/03/2008, 19h28
  4. truc en langage assembleur PIC
    Par invite412b515c dans le forum Électronique
    Réponses: 0
    Dernier message: 04/06/2007, 21h05
  5. Programmation assembleur sur PIC
    Par inviteebefde8d dans le forum Électronique
    Réponses: 0
    Dernier message: 19/03/2007, 10h38
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...