Communication entre un pC et un pic 16F877 via rs232

cs_chabeka Messages postés 4 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 21 juillet 2008 - 26 juin 2008 à 16:20
EL4 Messages postés 4 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 5 mai 2009 - 5 mai 2009 à 13:49
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

mahdouchmehdi Messages postés 7 Date d'inscription mardi 2 septembre 2008 Statut Membre Dernière intervention 9 octobre 2008
9 oct. 2008 à 18:49
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.
0
EL4 Messages postés 4 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 5 mai 2009
5 mai 2009 à 13:49
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 />
0
Rejoignez-nous