Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

Config port A et C en mode I/O
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#11 Message par Temps-x » sam. 12 déc. 2020 04:33

Bonjour nondediode, satinas, et tout le forum


Content de te revoir :wink:

Avec ce code ça devrait fonctionner, ton problème venait surement du registre T1CON, mais il y a pas que ça comme le précise Satinas
si tu écris dans la même adresse qu'un registre tu le configure sans ton rendre compte.

Utilise CBLOCK quand tu déclares tes variables, avec l'adresse du début de la bank que tu veux utiliser, après le compilateur va
s'occuper de classer toutes tes variables dans l'ordre que tu l'as déclarer.

Code : Tout sélectionner



;--------------------------------------------------DIRECTIVE D'ASSEMBLAGE POUR MPLAB-------------------------------------------------------

     list p=16f877
    #include <p16f877.inc>

__CONFIG   _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC 


;-------------------------------------------------DEFINITION DES REGISTRES TEMPORAIRES------------------------------------------------------

    CBLOCK    0x20                          ; Début de la zone (0x20 à 0x6F)

            CPT2           :1                ; variable
            CPT3           :1                ; variable
            RETARD1        :1                ; variable
            RETARD2        :1                ; variable
            RETARD3        :1                ; variable
            RETARD4        :1                ; variable
            RETARD5        :1                ; variable
            VAL1           :1                ; variable
            VAL2           :1                ; variable
            VAL3           :1                ; variable
            VAL4           :1                ; variable
    ENDC

;******************************* "adresse de depart après reset" *******************************
    ORG H'
0'                              
      clrf PCLATH                         ; effacer sélecteur de pages
      goto init

;********************************** "adresse d'
interruption" ***********************************
    ORG H'4'                              
      retfie 

;-----------------------------------------PROGRAMME D'INITIALISATION----------------------------------------

init
 
    BANKSEL TRISA                         ; bank 1

    clrf TRISA                            ; On charge la valeur dans le registre W pour configuration des pattes
    clrf TRISB                               ; On charge la valeur dans le registre W pour configuration des pattes
    clrf TRISC                              ; On charge la valeur dans le registre W pour configuration des pattes

    MOVLW    B'11111111'                      ; On charge la valeur dans le registre W pour configuration des pattes
    MOVWF    TRISD                          ;

    clrf TRISE                            ; configuration des pattes de TRISE, et pouvoir utiliser le PORTD comme entrée/sortie
                                          ; pour plus d'information voir registre TRISE bit 4(PSPMODE)
    
    MOVLW    B'00000110'                      ; tous les convertisseurs analogique son hors fonction 
    MOVWF    ADCON1                          ; 

    movlw B'10000000'                       ;
    movwf OPTION_REG                      ; résistance pull-ups hors fonction sur PORTB

    BANKSEL T1CON                         ; bank 0

    clrf T1CON                            ; RC0, RC1, n'est pas en comptage 

    clrf INTCON                           ; interuption hors service

;-----------------------------------------PROGRAMME D'INITIALISATION----------------------------------------

    clrf PORTA                              ; On remet à  0 le port A
    clrf PORTB                              ; On remet à  0 le port B
    clrf PORTC                              ; On remet à  0 le port C
    clrf PORTD                              ; On remet à  0 le port D    
    clrf PORTE                              ; On remet à  0 le port E

;---------------------------------------------------------Programme PRINCIPAL-------------------------------------------------------
DEBUT
    CALL    TEMPO1

    MOVLW    B'00111111'                      ; RA0, RA1, RA2, RA3, RA4, RA5 en entrée     
    MOVWF    PORTA        

    CALL    TEMPO1

    MOVLW    B'00000000'                      ; RC0, RC1, RC2, RC3, RC4, RC5, RC6, RC7 en sortie
    MOVWF    PORTC        

    GOTO    debut

;-------------------------------------------------------------------------------


TEMPO1
    MOVLW    0X50                          ; On met 50 dans le registre W        
    MOVWF    RETARD1                          ; On met W dans le registre retard1
    MOVWF    RETARD2                          ; On met W dans le registre retard2

    MOVLW    0X12                          ; On met 12 dans le registre W
    MOVWF    RETARD3                          ; On met W dans le registre retard3

ATTENTE1
    DECFSZ    RETARD1,F                      ; On décrémente retard1 et on saute la prochaine instruction si le registre retard1 = 0
    GOTO    ATTENTE1                      ; Sinon retour Ã  attente1
    MOVLW    0XC8                          ; On met C8 dans le registre W    
    MOVWF    RETARD1                          ; On met W dans RETARD1

    DECFSZ    RETARD2,F                      ; On décrémente retard2 et on saute la prochaine instruction si le registre retard2 = 0
    GOTO    ATTENTE1                      ; Sinon retour Ã  attente1

    MOVLW    0X50                          ; On met 50 dans le registre W        
    MOVWF    RETARD2                          ; On met W dans RETARD2 

    DECFSZ    RETARD3,F                      ; On décrémente retard3 et on saute la prochaine instruction si le registre retard3 = 0
    GOTO    ATTENTE1                      ; Sinon retour Ã  attente2
    RETURN                                  ; Retour au programme principal après l'instruction call

;-------------------------------------------------------------------------------
debut
    movlw B'11111111'
    movwf PORTC                           ; allumage de tout le PORTC

;-------------------------------------------------------------------------------
terminer   
   nop 
   goto terminer 

END





==> A+
Modifié en dernier par Temps-x le sam. 12 déc. 2020 13:07, modifié 4 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Config port A et C en mode I/O
nondediode
Amateur
Amateur
Messages : 148
Enregistré en : novembre 2018
Localisation : Lyon

#12 Message par nondediode » sam. 12 déc. 2020 07:55

Bonjour à tous!

Encore une fois un grand merci à vous tous vous êtes vraiment super :wink:

Je vais aller voir tout ça et corriger ttes ces erreurs après avoir fini mes corvées matinales. :cry:

Je suis resté plus d'1 an sans toucher au PIC et on perd vite.

Merci et je reviens en milieu de journée pour vous donner les résultats


JP

Config port A et C en mode I/O
nondediode
Amateur
Amateur
Messages : 148
Enregistré en : novembre 2018
Localisation : Lyon

#13 Message par nondediode » sam. 12 déc. 2020 10:15

:bravo: Merci !

Super! mon portC fonctionne et dire que j'ai passé 2 jrs à chercher

A présent je vais pouvoir continuer mon programme, je reviendrai vers vous si besoin est.

En attendant, je vous remercie tous pour votre réactivité et votre expérience

A bientôt

JP

Config port A et C en mode I/O
nondediode
Amateur
Amateur
Messages : 148
Enregistré en : novembre 2018
Localisation : Lyon

#14 Message par nondediode » sam. 12 déc. 2020 11:59

Mon programme est fini et grace à votre participation il fonctionne impec :-D :-D :-D

JP

Config port A et C en mode I/O
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#15 Message par Temps-x » sam. 12 déc. 2020 12:34

Re

Attention j'ai fait une petite rectification sur le code ci-dessus, car il y a un piège sur le PORTD

Si on veut utiliser le PORTD comme entrée/sortie il faut mettre le bit 4(PSPMODE) du registre TRISE à zéro.

Toujours un plaisir de te revoir sur le forum :wink:

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Config port A et C en mode I/O
nondediode
Amateur
Amateur
Messages : 148
Enregistré en : novembre 2018
Localisation : Lyon

#16 Message par nondediode » sam. 12 déc. 2020 16:11

Là ça fonctionne très bien avec les modifs que tu m'as donné, j'ai tout monté dans la boîte et le collègue va être heureux quand il va venir le récupérer le 19
J'ai réussi à faire plaisir à qq'un grace au forum :sifflotte:

J'ai un sujet costaud qui me trotte dans la tête; réaliser un drive CD à partir d'un bloc optique Philips CDM4 ou CDM9. Je ne suis jamais arrivé à récupérer un protocole pour CDM mais nous aurons l'occasion d'en reparler pour l'instant j'essaie de me documenter sur le sujet.


Bon week end à tous confinés sous la grisaille


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 50 invités