Communication entre un pC et un pic 16F877 via rs232

Signaler
Messages postés
4
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
21 juillet 2008
-
Messages postés
4
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
5 mai 2009
-
je cherche a etablir une protocole de communication entre un pc et un pic 16F877 via RS232 . j ai ecirs mon programme en language c et je demande comment implementer sur le pic etant donné que j utilise le compileteur cc5x.
voici un bout de programme que j ai ecris. par contre je constate que. c est du c pur. tandis que les code que je voix sur le site sont totalement different. je voulais savoir si je doit le traduire dans un autre language ou qoi franchement je n en sais rien .
je suis debutant et je ne connais que le C. merci de m avoir aider

/**********************************************************
  Programme:port serie emission
  MCU cible: 16F877
**********************************************************/

#include
uns16 trame[5];        // trame[5]={adrs recepteur,adrs emeteur,commande,adrs,donnee}
                                 // adrs = adresse de la donnée a envoyé
const uns16 adrs_rec=0x00FF; //adresse equipement
/****************************************************************/
void init_rs232()
{
TXSTA=0x24;           
RCSTA=0x90;           
SPBRG=12;           
}
/***************************************************************/
/**************************************************************/
void rs232 (uns8 t)
{
TXREG=t;            //registre d'envoi

while(TRMT==0);        //boucle tant que pour envoi de la donné
TRMT=0;                //remise à 0 du registre d'envoi
}
/***************************************************************/
/***************************************************************/
 void lecture(uns16 adrs)
{
    uns16 *p,a,b;
    p=adrs;
        a=trame[1]/256;   // deconcatenation
        b=trame[1]%256;   // deconcatenation
        rs232(a);
        rs232(b);
        rs232(*p);   
}
/***************************************************************/
/***************************************************************/
void ecriture(uns16 adrs,uns16 donnee)
{
    uns16 *p;
        p=adrs;
        *p=donnee;
}
/***************************************************************/
/***************************************************************/
void main (void)                
{   
    uns8 i=0,a,b;
    uns16    test;
    init_rs232();
    TRISC.7=1;            //Rx en entrée
    TRISC.6=0;            //Tx en sortie
    while(1)
    {
        i=0;
        do
        {
            while(RCIF==0); 
            a=RCREG;        
            while(RCIF==0);   
            b=RCREG;       
           
            test=a*256;
            test=test+b;
            trame[i]=test;
            i++;
        }while(i<5);
       
        if(trame[0]==0x00FF)
        {
            if(trame[2]==0x0041)
            {
            lecture(trame[3]);
            }
            if(trame[2]==0x0042)
            {
            ecriture(trame[3],trame[4]);
            }
        }
    }   
}

2 réponses

Messages postés
7
Date d'inscription
mardi 2 septembre 2008
Statut
Membre
Dernière intervention
9 octobre 2008

bonsoir,
Si c'est possible que tu m'aide.
Le problème c'est que c'est la première fois que j'utilise un PIC, bon je veux faire une liaison entre le PIC16F877 et le PC via une liaison série pour afficher sur l'écran du PC des informations.

Bon si vous avez quelque chose qui peut m'aider n'héritez pas.

Merci d'avance.
Messages postés
4
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
5 mai 2009

salut

je suis Radia étudiante et j'ai un projet . je doit réaliser
une carte d'acquisition de données par carte à puce on utilisant le
micro contrôleur le pic 16f877 . je doit programmer ma carte par le
Micro C . j'ai des difficultés avec ce language . la partie
d'acquisition de donnée est la plus difficile pour moi . si vous avez
une idée comment je peut programmer ma carte .

bonne journée

<hr />