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

Pic18F27K42 interruption impossible sur Timer1
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#1 Message par Temps-x » jeu. 17 juin 2021 21:12 lien vers la Data-Sheet : Cliquez ici

Bonjour tout le monde,

Voilà je n'arrive pas à provoquer une interruption sur le débordement du Timer1 avec le Pic18F27K42, les bit que j'ai configuré sont

PIR4,TMR1IF = 0 effacer flag interupttion
PIE4,TMR1IE = 1 autorisation d’interruption sur le débordement du timer1
INTCON0,GIE = 1 mise en fonction des interruption
T1CON,TMR1ON = 1 mise en route du timer1

Au départ du programme j'allume une LED, une fois les interruptions enclenchés, et après un certain temps, celle-ci devrait s'éteindre, et ce n''est pas le cas, :sifflotte: à mon avis j'ai du oublié un registre à configurer :roll: mais le-quelle ?

Avez-vous une idée ?

Voici le code qui est tout simple

Code : Tout sélectionner



    Errorlevel
-302                        ; supprime le message "Ensure that bank bits are correct" 
    Errorlevel
-311                        ; suprime le message "l'opérande de l'opérateur HIGH était plus grand que H'FFFF' "   

    radix dec                             
; par defaut en mode décimal

    list p
=18F27K42                       ; processeur utilisé                  
    
#include <p18F27K42.inc>              ; Définitions des constantes

;***********************************************************************************************

;
 CONFIG1L
  CONFIG  FEXTOSC 
= OFF                    ; Sélection de l'oscillateur externe (oscillateur non activé)
  CONFIG  RSTOSC = HFINTOSC_64MHZ          ; Réinitialiser la sélection de l'
oscillateur (HFINTOSC avec HFFRQ = 64 MHz et CDIV = 1: 1)

;
 CONFIG1H
  CONFIG  CLKOUTEN 
= OFF                  ; Bit d'activation de la sortie d'horloge (la fonction CLKOUT est désactivée)
  CONFIG  PR1WAY = OFF                    ; PRLOCKED One-Way Set Enable bit (le bit PRLOCK peut être défini et effacé à plusieurs reprises)
  CONFIG  CSWEN = ON                      ; Bit d'activation du commutateur d'horloge (l'écriture sur NOSC et NDIV est autorisée)
  CONFIG  FCMEN = OFF                     ; Bit d'
activation du moniteur d'horloge de sécurité (Fail-Safe Clock Monitor désactivé)

; CONFIG2L
  CONFIG  MCLRE = EXTMCLR                 ; Bit d'
activation MCLR (si LVP = 0, la broche MCLR est MCLR; si LVP = 1, la fonction de broche RE3 est MCLR)
  CONFIG  PWRTS = PWRT_64                 ; Bits de sélection du minuteur de mise sous tension (PWRT réglé à 64 ms)
  CONFIG  MVECEN = ON                     ; Bit d'activation multi-vecteur (multi-vecteur activé, table vectorielle utilisée pour les interruptions)
  CONFIG  IVT1WAY = OFF                   ; Bit IVTLOCK Bit d'
activation unidirectionnel (le bit IVTLOCK peut être effacé et réglé à plusieurs reprises)
  CONFIG  LPBOREN = OFF                   ; Bit d'activation BOR basse consommation (ULPBOR désactivé)
  CONFIG  BOREN = OFF                     ; Brown-out Reset Enable bits (Brown-out Reset désactivé)

; CONFIG2H
  CONFIG  BORV = VBOR_245                 ; Bits de sélection de tension de réinitialisation de Brown-out (tension de réinitialisation de Brown-out (VBOR) réglé sur 2,45 V)
  CONFIG  ZCD = OFF                       ; Bit de désactivation ZCD (ZCD désactivé. ZCD peut être activé en définissant le bit ZCDSEN de ZCDCON)
  CONFIG  PPS1WAY = OFF                   ; Bit PPSLOCK Bit d'
activation de réglage unidirectionnel (le bit PPSLOCK peut être défini et effacé à plusieurs reprises (sous réserve de la séquence de déverrouillage))
  CONFIG  STVREN = OFF                    ; Bit d'activation de la réinitialisation de la pile pleine / sous-débit (pile pleine / sous-débit ne provoquera pas de réinitialisation)
  CONFIG  DEBUG = OFF                     ; Bit d'
activation du débogueur (débogueur d'arrière-plan désactivé)
  CONFIG  XINST = OFF                     ; Extended Instruction Set Enable bit (Extended Instruction Set and Indexed Addressing Mode disabled)

; CONFIG3L
  CONFIG  WDTCPS = WDTCPS_11              ; Bits de sélection de période WDT (rapport de division 1: 65536)
  CONFIG  WDTE = OFF                      ; Mode de fonctionnement WDT (WDT désactivé; SWDTEN est ignoré)

; CONFIG3H
  CONFIG  WDTCWS = WDTCWS_7               ; Bits de sélection de fenêtre WDT (fenêtre toujours ouverte (100%); contrôle logiciel; accès par clé non requis)
  CONFIG  WDTCCS = SC                     ; Sélecteur d'
horloge d'entrée WDT (Software Control)

; CONFIG4L
  CONFIG  BBSIZE = BBSIZE_512            ; Bits de sélection de la taille du bloc de démarrage (la taille du bloc de démarrage est de 512 mots)
  CONFIG  BBEN = OFF                     ; Bit d'
activation du bloc de démarrage (bloc de démarrage désactivé)
  CONFIG  SAFEN = OFF                    ; Bit d'activation Flash de la zone de stockage (SAF désactivé)
  CONFIG  WRTAPP = OFF                   ; Bit de protection en écriture du bloc d'
application (bloc d'application non protégé en écriture)

; CONFIG4H
  CONFIG  WRTB = OFF                     ; Configuration Register Write Protection bit (Configuration registers (300000-30000Bh) not write-protected)
  CONFIG  WRTC = OFF                     ; Bit de protection en écriture du bloc de démarrage (bloc de démarrage (000000-0007FFh) non protégé en écriture)
  CONFIG  WRTD = OFF                     ; Bit de protection en écriture de l'
EEPROM de données (l'EEPROM de données n'est pas protégée en écriture)
  CONFIG  WRTSAF = OFF                   ; Bit de protection en écriture SAF (SAF non protégé en écriture)
  CONFIG  LVP = OFF                      ; Bit d'activation de la programmation basse tension (HV sur MCLR / VPP doit être utilisé pour la programmation)
; CONFIG5L
  CONFIG  CP = OFF                       ; Bit de protection du code PFM et des données EEPROM (protection du code PFM et EEPROM des données désactivée)

; CONFIG5H
 
;*************************************** assignations ***************************************** 

#DEFINE led1    LATB,5                 ; RB5 ==> led rouge, témoin de mise en fonction de l'
appareil
           
;********************************* "déclaration des variables" *********************************
     CBLOCK H'00'                         ; bank0
 
      loop1               
:1
      loop2               
:1
      loop3               
:1
      loop4               
:1
      loop5               
:1                    
    
      res8                
:
      res16               
:1

    ENDC

;********************************** "déclaration des macros" ***********************************
;*
                                                                                             *
;*************************
 "Macro pour se positionner dans un tableau" ************************* 
tableau MACRO adresse

      movlw UPPER
(adresse)                ; 
      movwf TBLPTRU                       
; 
      movlw HIGH
(adresse)                 ; 
      movwf TBLPTRH                       
; 
      movlw LOW
(adresse)                  ; 
      movwf TBLPTRL                 
     
    ENDM

;******************************* "adresse de depart après reset" *******************************
    ORG H'0'
      bra debut

     ORG H
'8'                             ; 
      bra declencher                      
; 
    ORG H
'18'                             ; 
     bra declencher                       
;

;***********************************************************************************************

declencher

      bcf led1                            
; éteindre la led

      bcf T1CON
,TMR1ON                    ; arrêt du timer1 
 
      clrf PIR4                           
; effacer flag interupttion du timer1 causé par le débordement             


      retfie 

debut
;**********************************************************************************************

      BANKSEL OSCCON1                     ; bank 57
      
      movlw 0x60                          
; 
      movwf OSCCON1 

;**********************************************************************************************

     BANKSEL ANSELA                       ; bank 58

;*************************** configuration du registre ANSELA ********************************** 

      movlw B
'00000000'                   ; en mode numérique : 
      movwf ANSELA                        
; en mode E/S       : 2(RA0), 3(RA1), 4(RA2), 5(RA3), 6(RA4), 7(RA5), 9(RA7), 10(RA6) 
;**************************** configuration du registre ANSELB ********************************* 

      movlw B
'00000000'                   ; en mode numérique : 
      movwf ANSELB                        
; en mode E/S       : 21(RB0), 22(RB1) 23(RB2), 24(RB3), 25(RB4), 26(RB5), 27(RB6), 28(RB7)  
             
;**************************** configuration du registre ANSELC ********************************* 

      movlw B
'00000000'                   ; en mode numérique :
      movwf ANSELC                        ; en mode E/S       : 11(RC0), 12(RC1), 13(RC2),  14(RC3), 15(RC4), 16(RC5), 17(RC6), 18(RC7)  

;**************************** configuration du registre WPUA *********************************** 
                                        
      movlw B
'00000000'                   ; tirage de résistance sur        :
      movwf WPUA                          ; pas de tirage de résistance sur :  2(RA0), 3(RA1), 4(RA2), 5(RA3), 6(RA4), 7(RA5), 10(RA6), 9(RA7)

;****************************
 configuration du registre WPUB *********************************** 
                                        
      movlw B
'00000000'                   ; tirage de résistance sur        
      movwf WPUB                          
; pas de tirage de résistance sur : 21(RB0), 22(RB1), 23(RB2), 24(RB3), 25(RB4), 26(RB5), 27(RB6), 28(RB7)
                                          
;**************************** configuration du registre WPUC *********************************** 
                                        
      movlw B
'00000000'                   ; tirage de résistance sur        :
      movwf WPUC                          ; pas de tirage de résistance sur : 11(RC0), 12(RC1), 13(RC2), 14(RC3), 15(RC4), 16(RC5), 17(RC6), 18(RC7)

;**********************************************************************************************

      BANKSEL CM1CON0                     ; bank 62 

;************************* configuration du registre CM1CON0 & CM2CON0 *************************

      movlw B'00000000'                   ; comparateur 1 off
      movwf CM1CON0 

      movlw B
'00000000'                   ; comparateur 2 off
      movwf CM2CON0 

;***************** configuration des registres TRISA & TRISB & TRISC & TRISE ******************* 

      BANKSEL TRISA                       
; bank 63

;**********************************************************************************************      

      movlw B
'00000000'                   ; 2(RA0), 3(RA1), 4(RA2), 5(RA3), 6(RA4), 7(RA5), 10(RA6), 9(RA7)   
      movwf TRISA                         
; 

      movlw B
'00000000'                   ; 21(RB0), 22(RB1), 23(RB2), 24(RB3), 25(RB4), 26(RB5), 27(RB6), 28(RB7)
      movwf TRISB                         ; 

      movlw B
'00000000'                   ; 11(RC0), 12(RC1), 13(RC2), 14(RC3), 15(RC4), 16(RC5), 17(RC6), 18(RC7)    
      movwf TRISC                         
; 
                                          
; 1(RE3) 

                                          
; 8,19(VSS), 20(VDD) 

;*************************** configuration du registre INTCON0 *********************************

       bcf INTCON0,GIE                  ; disable high priority interrupts, idem GIEH
                                          
;************************************ départ du programme **************************************

      clrf PORTA                         ; PORTA, PORTB, PORTC ,LATA,LATB,LATC bank 63
      clrf PORTB
      clrf PORTC
   
      clrf LATA
      clrf LATB 
      clrf LATC     

;************************************ départ du programme **************************************
;****************************
 "témoin visuel de mise en fonction" ****************************** 

      bsf led1                           
; allumage de la led1

;***********************************************************************************************

      BANKSEL PIE4                        ; bank 57

      clrf PIE4                           
; 
      bcf PIE4
,TMR1IE                     ; b0 = 1 autorisation d’interruption sur le débordement du timer1  

      clrf PIR4                           
; bank 57    
                                          
; effacer flag interupttion du timer1 causé par le débordement , 

;***********************************************************************************************

      BANKSEL INTCON0                     ; bank 63 

      clrf TMR1H                          
; bank 63
      clrf TMR1L                          
; bank 63
 
      clrf T1CON                          
; bank 63

      bsf T1CON
,TMR1ON                    ; T1CON bank 63
                                          
; mise en fonction du timer1
      bsf INTCON0
,GIE                     ; INTCON0 bank 63 
                                          
; mise en service des interruptions  

;*********************************************************************************************** 
terminer
      nop
      bra terminer

      End



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

Pic18F27K42 interruption impossible sur Timer1
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#2 Message par paulfjujo » ven. 18 juin 2021 09:20 lien vers la Data-Sheet : Cliquez ici

bonjour,

probleme de BANK ?
PIR4 est un registre, pas un bit !
priorité bit pour tmr1 ?


Code : Tout sélectionner

declencher

      bcf led1                            ; éteindre la led      <-- probleme de BANK ?

      bcf T1CON,TMR1ON                    ; arrêt du timer1
   ;     clrf PIR4                           ; effacer flag interupttion du timer1 causé par le débordement             
      bcf TMR1IF        ;                    <-----  flag interrupt Timer1
     
      retfie



en C

Code : Tout sélectionner

.. partie interrupt
  if (( TMR1IE_bit) && (TMR1IF_bit))
    {
     //  U1TXB='.';    <-----------------------------------   verifie si on entre dans l'interrupt
      Cpt1--;
      if (Cpt1 <1)   // x25ms at 64MHz
      {
       TMR1ON_bit=0;
       TMR1IE_bit=0; // stop comptage  timer1
       Flag_Timer1=1;
      }
      else
      {
        TMR1H         = 0x3C;
        TMR1L         = 0xB0;
      }
       TMR1IF_bit  = 0;
    }

void Init_Timer1(void)
 {
// FOSC=64MHz   
//Timer1
//Prescaler 1:8; TMR1 Preload = 15536; Actual Interrupt Time : 100 ms
  T1CKPS1_bit=1;
  T1CKPS0_bit=1;
  T1CON.B0=1;
  T1RD16_bit=1;
  T1CON         = 0x31;
  T1GCON=0;  //GE disabled
  T1CLK=1; //  FOSC/4   => 16MHz !    ==> 100mS
  TMR1H         = 0x3C;
  TMR1L         = 0xB0;
   TMR1IF_bit  = 0;
  TMR1IP_bit=1;   // high level interrupt
  Cpt1=4;
  Flag_Timer1=0;
  TMR1ON_bit=0;
  TMR1IE_bit =0;
}


void Arme_Timer1(signed int  Max_Timer1)
{
   // 100mS * Max_Timer1  (at 64Mhz/4 =16Mhz)
  T1CON         = 0x31;
  TMR1H         = 0x3C;
  TMR1L         = 0xB0;
  if (Max_Timer1>0) Cpt1=  Max_Timer1 ; else Cpt1=30; // 3sec par defaut
  Flag_Timer1=0;
  TMR1IF_bit  = 0;
  TMR1IE_bit= 1;
  TMR1ON_bit=1;     // Timer0 ON
  }
 
 
Aide toi, le ciel ou FantasPic t'aidera

Pic18F27K42 interruption impossible sur Timer1
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#3 Message par Temps-x » ven. 18 juin 2021 13:52 lien vers la Data-Sheet : Cliquez ici

Bonjour paulfjujo, et tout le forum,

Merci ! pour ta réponse

paulfjujo a écrit :Source du message probleme de BANK ?

Non pas cette fois-ci, j'ai bien regardé sur la datasheet

paulfjujo a écrit :Source du message PIR4 est un registre, pas un bit !

Oui je le sais, qui ta fait pensée que je l'avais pris comme un bit :?:

paulfjujo a écrit :Source du message priorité bit pour tmr1 ?

Comme est fait le programme, ça n'a pas d'importance, regarde par toi même

Code : Tout sélectionner

;******************************* "adresse de depart après reset" *******************************
    ORG H'0'
      bra debut

     ORG H
'8'                             ; 
      bra declencher                      
; 
    ORG H
'18'                             ; 
     bra declencher                       
;

;***********************************************************************************************
 

declencher

      BANKSEL PIR4                        
; bank 57

      clrf PIR4                           
; bank 57
                                          
; effacer flag interupttion du timer1 causé par le débordement              

      BANKSEL LATA                        
; bank 63

      bcf led1                            
; éteindre la led

      bcf T1CON
,TMR1ON                    ; bank 63
                                          
; arrêt du timer1 

       retfie FAST   



On lisant la datasheet, il précise les registre qui font appel au TImer1(page 115)

1) INTCON0, INTCON1 Control Registers
2) PIRx – Peripheral Interrupt Status Registers
3) PIEx – Peripheral Interrupt Enable Registers
4) IPRx – Peripheral Interrupt Priority Registers
5) IVTBASE[20:0] Address Registers
6) IVTLOCK Register declencher


De plus il y a une aberration, pour être plus claire voici ce que je trouve en page 314

Page 314.jpg


Puis en page 337

Page 339.jpg


Il y a quoi de se perdre, avec ce TXCON ou T1CON, c'est du n'importe quoi de la par de Microchip

As tu une compilation pour l'exemple que tu donnes, avec fichier ASM généré automatiquement.

J'ai refait un essai rien à faire :cry: , ça ne veut pas......

==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Pic18F27K42 interruption impossible sur Timer1
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#4 Message par satinas » ven. 18 juin 2021 14:35 lien vers la Data-Sheet : Cliquez ici

Bonjour Temps-x et Paul,

d'après ce que je comprends
il y a une doc TxCON pour les timers 1,3,4 (marquée par erreur TXCON ?), et une autre doc TxCON pour les timers 2,4,6
Tu n'as pas initialisé T1CLK, et par défaut, il est à 0, donc source horloge extérieure.
Dans ton premier programme, tu resettes PIR4 sans sélectionner sa bank, alors que tu sortais de l'init avec la bank 63 (BANKSEL INTCON0).
Ce BANKSEL INTCON0 n'était pas nécessaire car il est en bank 63 et toujours accessible directement.

la sélection des banks, c'est vraiment une plaie, trop de registres et pas assez de ram access. Il y a 2 méthodes, soit on utilise BANKSEL à tout va, soit on épluche la doc pour savoir dans quel bank se trouve tel ou tel registre. Comme j'aime pas les instructions en trop, je préfère la 2ème solution, plutôt pénible.

Pic18F27K42 interruption impossible sur Timer1
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#5 Message par paulfjujo » ven. 18 juin 2021 15:55 lien vers la Data-Sheet : Cliquez ici

Temps-x a écrit : PIR4 est un registre, pas un bit !

Oui je le sais, qui ta fait pensée que je l'avais pris comme un bit :?:
[/quote]

Oui, un registre,
ma remarque justement parce que tu n'isoles pas le bit correspondant à TMR1

Temps-x a écrit :As tu une compilation pour l'exemple que tu donnes, avec fichier ASM généré automatiquement.


ci joint source *.C et *.lst

dans l'init timer1 en C

Code : Tout sélectionner

T1CLK=1//  FOSC/4   => 16MHz !    ==> 100mS 


C_et_ASM_TRM1.zip


as-tu essayé le timer1 en mode pooling seulement ?
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par paulfjujo le ven. 18 juin 2021 16:10, modifié 1 fois.
Aide toi, le ciel ou FantasPic t'aidera

Pic18F27K42 interruption impossible sur Timer1
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#6 Message par satinas » ven. 18 juin 2021 16:04 lien vers la Data-Sheet : Cliquez ici

MVECEN = ON
Paul t'en penses quoi ?, j'ai pas encore testé.

Pic18F27K42 interruption impossible sur Timer1
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#7 Message par Temps-x » ven. 18 juin 2021 16:10 lien vers la Data-Sheet : Cliquez ici

Bonsoir paulfjujo, satinas, et tout le forum,

oops Ça fonctionne, mais on aurais pu chercher longtemps, ça viens de 2 choses, la configuration des bits dans CONFIG2L


Ça c'est pas bon

Code : Tout sélectionner

; CONFIG2L
  CONFIG  MVECEN 
= ON                  ; activation multi-vecteur (multi-vecteur activé, table vectorielle utilisée pour les interruptions)


Ça c'est bon

Code : Tout sélectionner

; CONFIG2L
  CONFIG  MVECEN 
= OFF                 ; Le contrôleur d'interruption n'utilise pas de table vectorielle pour hiérarchiser les interruptions


De plus il fallait comme le dit satinas activer T1CLK

Code : Tout sélectionner


      movlw B
'00000001'                   ; bank 63  
      movwf T1CLK 


Ce pic est vraiment compliqué, ça par dans tout les sens..... c'est pas un cadeau...

Merci ! à vous deux, ainsi qu'au forum....

==> A+
Modifié en dernier par Temps-x le ven. 18 juin 2021 16:19, modifié 3 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Pic18F27K42 interruption impossible sur Timer1
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#8 Message par paulfjujo » ven. 18 juin 2021 16:13 lien vers la Data-Sheet : Cliquez ici

par contre l'usage des interruptions vectorisées
apres l'avoir testé, J' ACHETE !
c'est plus confortable et pas plus compliqué ..


testé avec MPLABX ....
void __interrupt(irq(U1RX),base(8)) UART1_rx_vect_isr(void);
void __interrupt(irq(TMR6),base(8),low_priority) TMR6_ISR(void);
void __interrupt(irq(TMR2),base(8),low_priority) TMR2_ISR(void);
void __interrupt(irq(INT0),base(8),low_priority) INT0_ISR(void);
void __interrupt(irq(AD),base(8),low_priority) ADCC_ISR(void);
void __interrupt(irq(default),base(8),low_priority) Default_ISR(void);
Modifié en dernier par paulfjujo le ven. 18 juin 2021 16:20, modifié 1 fois.
Aide toi, le ciel ou FantasPic t'aidera

Pic18F27K42 interruption impossible sur Timer1
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#9 Message par Temps-x » ven. 18 juin 2021 16:17 lien vers la Data-Sheet : Cliquez ici

Re

paulfjujo a écrit :Source du message par contre l'usage des interruptions vectorisées
apres l'avoir testé, J' ACHETE !
c'est plus confortable et pas plus compliqué ..


C'est une option en plus, mais on va pas tout configurer, c'est vrai que c'est mieux, mais je préfère mon passé. :-D

Merci !

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


Retourner vers « Langage ASM »

Qui est en ligne

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