programmer le pic 16F88
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 47

programmer le pic 16F88



  1. #1
    coeur noire
    Invité

    programmer le pic 16F88


    ------

    bonjour


    j'ai ajouter sur ma carte en sorti du uln2803A un chenillard de quatre diodes rouge
    mon code toujours avec mikroC dois activer le chenillard sur les PORTS PA0,PA1,PA7,PA6 lorsque le fin de course NO gauche est fermé sur le port PA4

    mais avec ce code les diodes ne s'allume pas .
    Code:
    /*PB0 PB7 en sorti commande les deux transistors 2N222A*/
    /*PA0,PA1,PA7,PA6 en sorti commande les deux ULN2803A*/
    /*PA4 PB4 en entrer fin de course gauche droit*/
    /*PA2 en sorti commande le transistor pour commander le pont de diode*/
    /*PA3 en entrer pour verifier la tention du pont du diode */
    
    
    void FinDeCourse(int *a);
    
    
    void main (void)
    
    {
    int gauche=0;
    int *a=0;
    *a=&gauche;
    OPTION_REG = 0b00000111;
    OSCCON     = 0b01100010;
    ANSEL = 0;
    CMCON = 0x07;
    TRISA = 0b00000000;
    TRISB = 0b00000000;
    
    
    while (1)
    
    {
    FinDeCourse(a);
    if(gauche)
    {
    PORTB = 0b10000001 ;// bit7 AND bit0 5VDC
    PORTA = 0b01000001 ;// Bit6 AND bit0 5VDC
    delay_ms (1000) ;// Tempo
    PORTA = 0b10000010 ;// bit7 AND Bit1 5VDC
    delay_ms (100) ;// Tempo
    }
    }
    }
          void FinDeCourse(int *a)
          {
          if(PORTA==0b00010000)
          {*a=1;}
          else if (PORTA==0b00000000)
          {*a=0;}
          }

    -----
    Images attachées Images attachées  
    Dernière modification par coeur noire ; 06/04/2010 à 17h41.

  2. #2
    coeur noire
    Invité

    Re : programmer le pic 16F88

    Citation Envoyé par coeur noire Voir le message
    bonjour


    j'ai ajouter sur ma carte en sorti du uln2803A un chenillard de quatre diodes rouge
    mon code toujours avec mikroC dois activer le chenillard sur les PORTS PA0,PA1,PA7,PA6 lorsque le fin de course NO gauche est fermé sur le port PA4

    mais avec ce code les diodes ne s'allume pas .
    Code:
    /*PB0 PB7 en sorti commande les deux transistors 2N222A*/
    /*PA0,PA1,PA7,PA6 en sorti commande les deux ULN2803A*/
    /*PA4 PB4 en entrer fin de course gauche droit*/
    /*PA2 en sorti commande le transistor pour commander le pont de diode*/
    /*PA3 en entrer pour verifier la tention du pont du diode */
    
    
    void FinDeCourse(int *a);
    
    
    void main (void)
    
    {
    int gauche=0;
    int *a=0;
    *a=&gauche;
    OPTION_REG = 0b00000111;
    OSCCON     = 0b01100010;
    ANSEL = 0;
    CMCON = 0x07;
    TRISA = 0b00000000;
    TRISB = 0b00000000;
    
    
    while (1)
    
    {
    PORTA=0b00000000;
    FinDeCourse(a);
    if(gauche)
    {
    PORTB = 0b10000001 ;// bit7 AND bit0 5VDC
    PORTA = 0b01000001 ;// Bit6 AND bit0 5VDC
    delay_ms (1000) ;// Tempo
    PORTA = 0b10000010 ;// bit7 AND Bit1 5VDC
    delay_ms (100) ;// Tempo
    }
    }
    }
          void FinDeCourse(int *a)
          {
          if(PORTA==0b00010000)
          {*a=1;}
          else if (PORTA==0b00000000)
          {*a=0;}
          }
    .............................. ............

  3. #3
    freepicbasic

    Re : programmer le pic 16F88

    Y a comme un problème là ;

    /*PA4 PB4 en entrer fin de course gauche droit*/
    TRISA = 0b00000000;
    TRISB = 0b00000000;

    mettre les entrées
    TRISA = 0b00010000;
    TRISB = 0b00010000;
    A+, pat

  4. #4
    coeur noire
    Invité

    Re : programmer le pic 16F88

    j'ai fais la correction
    mais les diode rouge ne s'allume pas

  5. A voir en vidéo sur Futura
  6. #5
    coeur noire
    Invité

    Re : programmer le pic 16F88

    avec ce nouveaux code le chenillard fonctionne et quand j'appuis sur le fin de course PA4 les diodes rouge ne s'allume plus donc les port sont a 1
    mais quand j'utilise le portB4 comme fin de course c'est l'inverse le chenillard fonctionne et quand j'appuis tout les diodes rouge reste allumé donc tout les ports sont a 0
    la je comprend pas.




    Code:
    void main (void)
    
    {
    
    
    OPTION_REG = 0b00000111;
    OSCCON     = 0b01100010;
    ANSEL = 0;
    CMCON = 0x07;
    TRISA = 0b00010000;
    TRISB = 0b00010000;
    
    
    while (1)
    
    {
    PORTA=0b00000000;
    
    if(PORTA==0b00010000)
    {
    PORTB = 0b10000001 ;// bit7 AND bit0 5VDC
    PORTA = 0b01000001 ;// Bit6 AND bit0 5VDC
    delay_ms (1000) ;// Tempo
    PORTA = 0b10000010 ;// bit7 AND Bit1 5VDC
    delay_ms (100) ;// Tempo
    }
    }
    }

  7. #6
    freepicbasic

    Re : programmer le pic 16F88

    vérifie le cablâge.
    Et aussi si les pull down sont bien en placées sur les entrées et le contact bien relié au plus.

    Et ou les leds portb sont elles éteintes ?
    A+, pat

  8. #7
    coeur noire
    Invité

    Re : programmer le pic 16F88

    salut

    j'ai de nouveaux modifier le code sans passer par un pointer
    la tout fonctionne
    Code:
    /*PB0 PB7 en sorti commande les deux transistors 2N222A*/
    /*PA0,PA1,PA7,PA6 en sorti commande les deux ULN2803A*/
    /*PA4 PB4 en entrer fin de course gauche droit*/
    /*PA2 en sorti commande le transistor pour commander le pont de diode*/
    /*PA3 en entrer pour verifier la tention du pont du diode */
    
    
    
    int FinDeCourse(int a);
    void main (void)
    
    {
    int gauche=0;
    int a=0;
    
    OPTION_REG = 0b00000111;
    OSCCON     = 0b01100010;
    ANSEL = 0;
    CMCON = 0x07;
    TRISA = 0b00010000;
    TRISB = 0b00010000;
    
    
    while (1)
    
    {
    PORTB = 0b00000000 ;
    PORTA = 0b00000000 ;
    gauche=FinDeCourse(a);
    
    if(gauche)
    {
    PORTB = 0b10000001 ;// bit7 AND bit0 5VDC
    PORTA = 0b01000001 ;// Bit6 AND bit0 5VDC
    delay_ms (1000) ;// Tempo
    PORTA = 0b10000010 ;// bit7 AND Bit1 5VDC
    delay_ms (100) ;// Tempo
    }
    }
    }
          int FinDeCourse(int a)
          {
          if(PORTA==0b00000000)
          {return 1;}
          else if (PORTA==0b00010000)
          {return 0;}
          }
    est ce que mikroC prend en compte les pointer ?
    Images attachées Images attachées  

  9. #8
    freepicbasic

    Re : programmer le pic 16F88

    il est préférable de faire un mask

    Code:
       if( (PORTA & 0b00010000) != 0 )
          {return 0;}
          else 
         {return 0;}
    pour les pointeurs normalement oui, sinon ça n'est pas du C.
    A+, pat

  10. #9
    coeur noire
    Invité

    Re : programmer le pic 16F88

    salut

    pour la question<< Et ou les leds portb sont elles éteintes ?>>
    il n'y pas de diode rouge sur le portB4 mais un fin de course NO que je peux placer sur le portB4 ou portA4
    les résistances sont externe placer aux +5VDC

    aujourd'hui j'ai essayé l'usart du pic avec l'hyperterminal sur XP + max232
    9600bauds 8BITS 1BITS sans parité
    si on appui sur a =01100001 on éclaire les diodes et on les éteint avec z
    c'est pas gagné! alors si on appui sur n'importe qu'elle touche du clavier
    les diodes s'éclaire et impossible de les éteindre

    Code:
    /*PB0 PB7 en sorti commande les deux transistors 2N222A*/
    /*PA0,PA1,PA7,PA6 en sorti commande les deux ULN2803A*/
    /*PA4 PB4 en entrer fin de course gauche droit*/
    /*PA2 en sorti commande le transistor pour commander le pont de diode*/
    /*PA3 en entrer pour verifier la tention du pont du diode */
    /*PB2 PB5 en entrer pour USART */
    /* la lettre a =01100001 la lettre z =01111010*/
    
    
    void main (void)
    
    {
    int gauche=0,i,j;
    char codeRecu;
    char code[2][11]={0};
         code[1][11]=0b01100001;/*la lettre a allumé les diodes*/
         code[2][11]=0b01111010;/*la lettre z pour arreter les diodes */
    OPTION_REG = 0b00000111;
    OSCCON     = 0b01100010;
    ANSEL = 0;
    CMCON = 0x07;
    TRISA = 0b00010000;
    TRISB = 0b00110100;
    
    while (1)
    
    {
    PORTB = 0b00000000 ;
    PORTA = 0b00000000 ;
    
      Usart_Init (9600);
      Delay_ms(100);
    
    if (USART_Data_Ready())
    {
    codeRecu=USART_Read();
    }
    
    
    if(code[1][11])/*condition if pour allumé les diodes*/
      {
     if (strcmp(codeRecu,code) == 0)/*on compare les deux variables*/
        {
        gauche=1;
        }
        else
        {
        gauche=0;
        }
      }
      else if(code[2][11])/*condition if pour arrèté les diodes*/
      {
     if (strcmp(codeRecu,code) == 0)
        {
        gauche=0;
        }
    
      }
    
    while(gauche)/*diodes allumé*/
    {
    PORTB = 0b10000001 ;// bit7 AND bit0 5VDC
    PORTA = 0b01000001 ;// Bit6 AND bit0 5VDC
    delay_ms (1000) ;// Tempo
    PORTA = 0b10000010 ;// bit7 AND Bit1 5VDC:peur:
    delay_ms (100) ;// Tempo
    }
    }
    }

  11. #10
    freepicbasic

    Re : programmer le pic 16F88

    c'est quoi ce tableau ?
    Qui en plus ne semble pas utilisé.
    un simple char suffit
    le strcmp compare une chaine pas un simple char .

    char code1=0b01100001;/*la lettre a allumé les diodes*/
    char code2=0b01111010;/*la lettre z pour arreter les diodes */

    if (codeRecu==code1)/*on compare les deux chars*/
    ...
    if (codeRecu==code2)/*on compare les deux chars*/
    ...
    A+, pat

  12. #11
    coeur noire
    Invité

    Re : programmer le pic 16F88

    désolé pour mes faiblesse en C
    un simple char c'est une variable de type char avec un chiffre décimal ou binaire ,hexadécimal
    une chaine c'est des lettres avec des "" ou pour une lettre deux ''

    le code ci-dessous pour la liaison série du pic a l'hyperterminal
    les diodes reste allumée tapé sur les lettres du clavier n'a aucun effet

    Code:
    /*PB0 PB7 en sorti commande les deux transistors 2N222A*/
    /*PA0,PA1,PA7,PA6 en sorti commande les deux ULN2803A*/
    /*PA4 PB4 en entrer fin de course gauche droit*/
    /*PA2 en sorti commande le transistor pour commander le pont diviseur de tension*/
    /*PA3 en entrer pour verifier la tention du pont du diode */
    /*PB2 PB5 en entrer pour USART */
    /* la lettre a =01100001 la lettre z =01111010*/
    
    
    void main (void)
    
    {
    int gauche=0;
    char codeRecu;
    
    char code1=0b01100001;/*la lettre a allumé les diodes*/
    char code2=0b01111010;/*la lettre z pour arreter les diodes */
    OPTION_REG = 0b00000111;
    OSCCON     = 0b01100010;
    ANSEL = 0;
    CMCON = 0x07;
    TRISA = 0b00010000;
    TRISB = 0b00110100;
    Usart_Init (9600);
    Delay_ms(100);
    while (1)
    
    {
    
    
    PORTB = 0b00000000 ;
    PORTA = 0b00000000 ;
    
    
    
    if (USART_Data_Ready())
    {
    codeRecu=USART_Read();
    }
    
    
    
     if (codeRecu==code1)
        {
        gauche=1;
        }
    
     if (codeRecu==code2)
        {
        gauche=0;
        }
    
    while(gauche)/*diodes allumé */
    {
    PORTB = 0b10000001 ;// bit7 AND bit0 5VDC
    PORTA = 0b01000001 ;// Bit6 AND bit0 5VDC
    delay_ms (1000) ;// Tempo
    PORTA = 0b10000010 ;// bit7 AND Bit1 5VDC
    delay_ms (100) ;// Tempo
    }
    }
    }
    Dernière modification par coeur noire ; 08/04/2010 à 21h26.

  13. #12
    freepicbasic

    Re : programmer le pic 16F88

    tu met un while qui fige le prog pour l'éternité.
    while(gauche)/*diodes allumé */

    met un if

    et gère le else si besoin.
    A+, pat

  14. #13
    coeur noire
    Invité

    Re : programmer le pic 16F88

    salut

    j'ai mis un if a la place de while mais les diodes reste toujours allumer
    j'ai regarder l'aide de USART Library de mikroC pour le 16F88
    avec cet fonction void Usart_Init(const unsigned long baud_rate);
    j'utilise PORTB2 rx en entrer mais PORTB5 tx si je l'utilisais je le mais aussi en entrer?
    je n'y arrive pas
    Code:
    void main (void)
    
    {
    int gauche=0;
    char rec=0;
    char codeRecu=0;
    char code1=0b01100001;/*la lettre a allumé les diodes*/
    char code2=0b01111010;/*la lettre z pour arreter les diodes */
    OPTION_REG=0b10000111;/*je désactive les pull up sur le portb*/
    INTCON    =0b01000000;/*j'autorise les interruptions périphérique*/
    PIE1      =0b00100000;/*bit5=1 active usart*/
    OSCCON    =0b01100010;/*4Mhz INTRC_IO*/
    ANSEL = 0;/*entrer en digital*/
    CMCON = 0x07;
    RCSTA=0b10000000;/*port série activé*/
    TXSTA=0b00000100;/*vitesse haut*/
    TRISA = 0b00010000;
    TRISB = 0b00110100;
    Soft_Uart_Init(PORTB, 2, 5, 9600, 0);/*portb2 rx portb5 tx 9600bauds pas de parité  */
    Delay_ms(100);
    while (1)
    
    {
    PORTB = 0b00000000 ;
    PORTA = 0b00000000 ;
    do
      {
    codeRecu=Soft_Uart_Read(rec);
    if (codeRecu==code1)
        {
        gauche=1;
        }
    
     else if (codeRecu==code2)
        {
        gauche=0;
        }
      }while(!rec);
    
    if(gauche)/*diodes allumé*/
    {
    PORTB = 0b10000001 ;// bit7 AND bit0 5VDC
    PORTA = 0b01000001 ;// Bit6 AND bit0 5VDC
    delay_ms (1000) ;// Tempo
    PORTA = 0b10000010 ;// bit7 AND Bit1 5VDC
    delay_ms (100) ;// Tempo
    }
    Soft_Uart_Write(rec);
    }
    
    
    }
    Images attachées Images attachées  

  15. #14
    invite7a49d0d5

    Cool Re : programmer le pic 16F88

    Hi,

    quelques suggestions :

    - la ligne CMCOM = 7 est inutile
    (c'est la valeur par défaut au Power)

    -OPTION_REG=0b10000111;/*je désactive les pull up sur le portb*/
    ça non plus ça sert à rien... les pull-ups sont désactivées au Power...

    -RB5 est la sortie RS232, ne peut en aucun cas être utilisé en entrée RS232...
    tout du moins en utilisant le module HARD UART...
    Edit : donc là tu peux...
    Soft_Uart_Init(PORTB, 5, 2, 9600, 0)

    -je vois que tu mets 9600 comme vitesse...
    le compilo ne te propose pas un "ajustage" lors du Build? style 9615...

    -tu choisis 4Mhz comme FOsc... tentes avec 8Mhz...
    (OSCCON =0b01110010)

    vede
    ;O]
    __________________________
    ...

  16. #15
    coeur noire
    Invité

    Re : programmer le pic 16F88

    j'ai fais les modifie mais sans effets ?
    et j'ai tester le cable avec une boucle j'ai mis une résistance entre
    le pin 9 et 10 du max232 puis tapé des lettres qui apparaisse bien a l'écran
    <<le compilo ne te propose pas un "ajustage" lors du Build? style 9615...>>
    non aucun ajustage le code compile bien mais sur la ligne 34 un petit message implicite cast of integral value pointer
    Code:
    /*PB0 PB7 en sorti commande les deux transistors 2N222A*/
    /*PA0,PA1,PA7,PA6 en sorti commande les deux ULN2803A*/
    /*PA4 PB4 en entrer fin de course gauche droit*/
    /*PA2 en sorti commande le transistor pour commander le pont diviseur de tension*/
    /*PA3 en entrer pour verifier la tention du pont diviseur de tention*/
    /*PB2 PB5 en entrer pour USART */
    /* la lettre a =01100001 la lettre z =01111010*/
    
    
    
    void main (void)
    
    {
    int gauche=0;
    char rec=0;
    char codeRecu=0;
    char code1=0b01100001;/*la lettre a allumé les diodes*/
    char code2=0b01111010;/*la lettre z pour arreter les diodes */
    OPTION_REG=0b00000111;
    INTCON    =0b01000000;
    PIE1      =0b00100000;/*bit5=1*/
    OSCCON    =0b01110010;/*8Mhz INTRC_IO*/
    ANSEL = 0;/*digital*/
    CMCON = 0x07;
    RCSTA=0b10000000;
    TXSTA=0b00000100;
    TRISA = 0b00010000;
    TRISB = 0b00110100;
    Soft_Uart_Init(PORTB, 5, 2, 9600, 0);
    Delay_ms(100);
    while (1)
    
    {
    PORTB = 0b00000000 ;
    PORTA = 0b00000000 ;
    do
      {
    codeRecu=Soft_Uart_Read(rec);
    if (codeRecu==code1)
        {
        gauche=1;
        }
    
     else if (codeRecu==code2)
        {
        gauche=0;
        }
      }while(!rec);
    
    if(gauche)/*diodes allumé*/
    {
    PORTB = 0b10000001 ;// bit7 AND bit0 5VDC
    PORTA = 0b01000001 ;// Bit6 AND bit0 5VDC
    delay_ms (1000) ;// Tempo
    PORTA = 0b10000010 ;// bit7 AND Bit1 5VDC
    delay_ms (100) ;// Tempo
    }
    Soft_Uart_Write(rec);
    }
    
    
    }

  17. #16
    invite7a49d0d5

    Cool Re : programmer le pic 16F88

    re ;O]

    à quoi servent ces 2 lignes?

    INTCON =0b01000000;
    PIE1 =0b00100000;/*bit5=1*/

    vede
    ;O]
    ____________________
    ...

  18. #17
    freepicbasic

    Re : programmer le pic 16F88

    pas de CMCON sur le pic16F88 , bizarre le compilo aurait dû le dire.
    J'en déduit que le type de pic n'est pas éfini ou est faux.

    IntCon et PIE1 inutiles si on ne gère pas les int
    pour le option_reg idem les pullup sont disable au reset


    pourquoi encore un do while qui bloque le programme ?
    la logique est fausse!
    A+, pat

  19. #18
    invite7a49d0d5

    Cool Re : programmer le pic 16F88

    Citation Envoyé par freepicbasic Voir le message
    pas de CMCON sur le pic16F88 , bizarre le compilo aurait dû le dire.
    J'en déduit que le type de pic n'est pas éfini ou est faux.

    IntCon et PIE1 inutiles si on ne gère pas les int
    pour le option_reg idem les pullup sont disable au reset


    pourquoi encore un do while qui bloque le programme ?
    la logique est fausse!
    Hi FreeBasic,

    si, le 16F88 à un registre CMCON...
    mais il est désactivé par défaut...
    donc pas besoin d'y "toucher"...
    si on n'utilise pas le module comparateur...

    sur un 16F88 il n'y a que le module ADC à désactiver...
    pour qu'il soit opérationnel niveau I/O numériques...

    vede
    ;O]

  20. #19
    invite7a49d0d5

    Cool Re : programmer le pic 16F88

    re ;O]

    laisse tomber ce programme...
    avec tes tests on est à prêt de savoir ou ça bug...

    prends le programme exemple de l'aide (MikroC > Help...)
    dans la section soft ou hard UART librairie... chercher...

    c'est un programme qui renvoie chaque caractère tapé dans le terminal...
    dans le terminal de MikroC (Tools >...) ...

    delà on met au point la communication...
    et quand ça fonctionnera...
    on rajoutera des tests "a", "z"...

    je dis ça parce que là ça avance pas...
    et si il faut c'est un problème hard...
    donc commencer par tester le hard...
    avec un programme "basique"...
    moi c'est comme ça que je fait...
    quand ça bug...

    vede
    ;O]
    __________________________
    ....

  21. #20
    invite7a49d0d5

    Cool Re : programmer le pic 16F88

    rere ;O]

    c'est pareil, d'ou sors:
    //CMCON = 0x07;
    RCSTA=0b10000000;
    TXSTA=0b00000100;

    le code de l'exemple fourni...
    qui fonctionne à tous les coups...
    si c'est bien connecté...

    Code:
    char i, error, byte_read;                 // Auxiliary variables
    
    void main(){
    // rajouter OSCON...
      ANSEL  = 0;                             // Configure AN pins as digital I/O  
      TRISB = 0x00;                           // Set PORTB as output
    // et pas besoin de plus ...
    
      error = Soft_UART_Init(&PORTB, 5, 2, 9600, 0); // Initialize Soft UART 
       
      while(1) {                              // Endless loop
        byte_read = Soft_UART_Read(&error);   // Read byte
        if (error)                            // If error was detected
          PORTB = error;                      //   signal it on PORTB
        else
          Soft_UART_Write(byte_read);         //  return byte read
        }      
    }

  22. #21
    invite7a49d0d5

    Cool Re : programmer le pic 16F88

    Edit :

    ps : si soucis avec ce code, je câble chez moi...

  23. #22
    invite7a49d0d5

    Cool Re : programmer le pic 16F88

    Edit ps (désolé, merci de fusionner) :

    et si vraiment... faudra aller sur les forums MikroE...
    pour trouver explications et correctifs...

    ce que j'ai du faire pour l'exemple MikroC Pro de la librairie USB HID...
    cf un vieux fil sur ce forum...

  24. #23
    coeur noire
    Invité

    Re : programmer le pic 16F88

    salut


    le code fonctionne tout ce que je tape au clavier apparais a l'écran

    Code:
    char i, error, byte_read;                 /* Auxiliary variables */
    
    void main()
    {
    
      OSCCON    =0b01110010;
      ANSEL  = 0;                             /* Configure AN pins as digital I/O */
      TRISB = 0x00;                           /* Set PORTB as output*/
    
    
      error = Soft_UART_Init(PORTB, 2, 5, 9600, 0);
    
      while(1) {
        byte_read = Soft_UART_Read(&error);
        if (error)
          PORTB = error;
        else
          Soft_UART_Write(byte_read);
        }
    }

  25. #24
    coeur noire
    Invité

    Re : programmer le pic 16F88

    la variable i est inutile, pourquoi on écris dans cette ligne "byte_read = Soft_UART_Read(&error);" &error avec ce symbole &
    on a pas de structure, en fait c'est une valeur qui represente l 'erreur

    et pourquoi tout le PORTB est en sorti ?
    le portB devrais etre configuré en entré ?

  26. #25
    invite7a49d0d5

    Cool Re : programmer le pic 16F88

    Hi,

    oui i est inutile...

    pour le & je sais pas exactement...
    mais c'est pas une structure en MikroC...
    c'est soit un AND...
    soit une opération sur des pointeurs... (c'est plutôt ça je pense...)
    d'après l'aide de MikroC Pro...

    et oui on met les PortB en sortie... par défaut...
    c'est ensuite la fonction/librairie Soft_Uart_Init(args)
    qui s'occupe de paramétrer les ports selon les
    arguments qu'elle a reçu (Port, pins...)...

    vede
    ;O]
    __________________
    ...

  27. #26
    invite7a49d0d5

    Cool Re : programmer le pic 16F88

    Edit :

    >d'après l'aide de MikroC Pro...

    plutôt d'après ce que j'ai compris après un rapide coup d'oeil à la doc...

  28. #27
    coeur noire
    Invité

    Re : programmer le pic 16F88

    salut

    merciiii de m'avoir répondu vede freepicbasic
    j'ai toujours pas réussi a faire clignoté mes petite diodes avec l'hyperterminal
    j'ai posté sur le forum mikroC
    a+++

  29. #28
    invite7a49d0d5

    Cool Re : programmer le pic 16F88

    salut,

    c'est bizarre... vu que la communication fonctionne...
    je reprends le code... et ajoute allume une led sur PortB.1
    si appui sur "a", l'éteint si appui si "z"... pseudo-code :
    Code:
    char error, byte_read;                 /* Auxiliary variables */
    
    void main()
    {
      OSCCON    =0b01110010;
      ANSEL  = 0;                             /* Configure AN pins as digital I/O */
      TRISB = 0x00;                           /* Set PORTB as output*/
    
      error = Soft_UART_Init(PORTB, 2, 5, 9600, 0);
    
      while(1) {
        byte_read = Soft_UART_Read(&error);
        if (error)
          // PORTB = error;
        else
          Soft_UART_Write(byte_read);
           // on/off led
           if byte_read="a"
               PortB.1 = 1;
           if byte_read="z"
               PortB.1 = 0;       
        }
    }
    vede
    ;O]
    _______________
    ...

  30. #29
    coeur noire
    Invité

    Re : programmer le pic 16F88

    je ne peux utiliser que le PORTA
    alors tout mes diodes reste allumé vu que les ports PA0,PA1,PA7,PA6 ont 0VDC et tout ce que je tape apparais a l'écran

    a mon avis il faut faire apparaitre dans le code que l'on autorise les interruptions causées par les périphérique INTICON=0b01000000
    PIE1=0b00100000 active la réception puis un if(RCIF==1)
    pour voire si le buffer est plein
    après on comparer un a un tout l'octet récupérer par le PORTB2 a la variable qui contiens la lettre Z en binaire en séparent le bit de start et le bit de stop


    Code:
    char error, byte_read;                 /* Auxiliary variables */
    
    void main()
    {
      OSCCON    =0b01110010;
      ANSEL  = 0;                             /* Configure AN pins as digital I/O */
      TRISB = 0x00;                           /* Set PORTB as output*/
    
      error = Soft_UART_Init(PORTB, 2, 5, 9600, 0);
    
      while(1) {
        byte_read = Soft_UART_Read(&error);
        if (error)
          {PORTB = error;}
        else
          Soft_UART_Write(byte_read);
          PORTA =0b00000000;/*tout mes leds sont allumées */
          if (byte_read="a")
               {PORTA =0b00000001;}
          if (byte_read="z")
               {PORTA =0b00000000;}
        }
    }

  31. #30
    coeur noire
    Invité

    Re : programmer le pic 16F88

    j'ai oublier de mettre la bonne configuration du PORTB PORTA
    TRISA = 0b00010000;
    TRISB = 0b00110100;

    tout les diodes sont éteintes si je tape z c'est r qui apparais a l'écran
    sinon pas de changement aux niveau des diodes

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Pont en H et Pic 16F88
    Par bypbop dans le forum Électronique
    Réponses: 84
    Dernier message: 16/12/2009, 14h56
  2. pic 16f88 et SPI
    Par invite7973ef56 dans le forum Électronique
    Réponses: 21
    Dernier message: 17/07/2009, 09h14
  3. Pic 16f88 grillé
    Par invite61c07ffe dans le forum Électronique
    Réponses: 2
    Dernier message: 27/04/2009, 23h09
  4. Pic 16f88
    Par invite61c07ffe dans le forum Électronique
    Réponses: 6
    Dernier message: 26/04/2009, 23h36
  5. Programmer avec ICprog un 16F88
    Par yuopaznn dans le forum Électronique
    Réponses: 0
    Dernier message: 31/05/2008, 21h08
Découvrez nos comparatifs produits sur l'informatique et les technologies.