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<INT16CXX.H>
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]);
}
}
}
}