Bonjour
Je suis sur un projet et pour l'instant je cherche juste à envoyer un caractère d'un PIC16F689 à un PC via une liaison série.

Mon code est assez simple, j'ai repris en parti le code qui est sur le site en le modifiant. Il doit juste envoyer sans arrêt le caractère H au PC.

Mon mon tage est composé d'un PIC16F689, d'un max232 avec 4 capacités de 10µF chacune. J'ai testé en sorti j'ai bien les niveaux logiques du rs232.

Cependant je n'ai réussi qu'une fois à recevoir le caractère H en continu.

Voici mon code:

void Serial_Init(void); // Initialisation Port série 9600 baud 8 data bit ,1 bit stop, pas de parité
void Serial_Putchar(unsigned char cD); // Cette fonction envoie des données sur le port série
const char msgOK[]="H"; // Message ok
char cT; // Déclaration d'une variable char nommée cT




//****************** debut Main ******************************

void main()
{
GIE=1;
PEIE=1; // Autorise les intérruptions
TRISB=0b10000000; // RB7 TX en sortie

Serial_Init(); // Initialisation port série

/* boucle principale */

while(1)
{

Serial_Putchar(msgOK[cT]); // Envoi du message H
}

}



// ************************ Initialisation port série ******************************


void Serial_Init(void) // Initialisation Port série 9600 baud 8 data bit, 1 bit stop, pas de parité
{
RCIE=1; // valide l'interruption de réception
RCSTA=0b10010000; // SPEN=1 valide le port série, CREN=1 valide la réception de donnée
TXSTA=0b00100110; // high speed mode brgh1 , TXEN 1 autorise émission de donnée
SPBRG=25; // 9600 baud
}



// ************************ envoi caractère ******************************


void Serial_Putchar(unsigned char cD) // Emission de donnée sur le port série
{
while(!TXIF); // si 1 registre d'émission vide, donc on sort de la boucle
TXREG=cD; // On place le caractère cD à envoyer dans le registre TXREG
//while(!TRMT); // Lorsque TRMT passe à 1 TXREG recoit la donnée cD
}


Voilà donc mes questions sont celle-ci:
1 Déjà y a t il une erreur grossière que je n'aurai pas vu ?
2 Ca a fonctionné avec cette ligne enlevée:
//while(!TRMT); // Lorsque TRMT passe à 1 TXREG recoit la donnée cD
est-ce normal ?
3 J'ai que 4 capacités pour le max232 de 10µF en faut-il une 5ième ? Il y a-t-il selon vous un problème avec le montage ?
(les 4 capa sont montées sur les pattes: 1-3, 4-5, 6-GND et 2-16)
4 Est-ce que quelqu'un à un montage entre un PIC et un port série ?

Merci beaucoup