top of page

#include <xc.h>
#include "../headers/config.h"
#include"../headers/serial.h"

/*Configuration de la liaison série en mode 8 bits asynchrone: nécessite la broche RB7*/

void init_serial(void)
{
    //8 bits asynchrone
    //TX RB7
    // Configuration pour la réception et l'émission
    TRISBbits.TRISB7 = 0;
    TXEN = 1;
    SYNC = 0;
    CREN = 1;
    SPEN = 1;
    // On fixe le baudrate à 9600 en supposant que la fréquence d'oscillation du microcontrôleur est de 16Mhz
    SPBRGLbits.SPBRGL = 25;
    SPBRGHbits.SPBRGH = 0;
    TXEN = 1;
    return;
}

/* permet d'envoyer un char, passé en argument, dans la liaison série*/

void send_byte(char byte)
{
    TXREGbits.TXREG = byte;
    //On attend la fin de la transmission
    while(TXSTAbits.TRMT != 1)
    {
    }
}

/* Envoie un tableau de char dans la liaison série:
 * *tab: tableau de char à envoyer
 * nb_bytes: nombre de bytes à envoyer
 */

void send_data(char * tab, char nb_bytes)
{
    int i = 0;
    for(i = 0; i< nb_bytes; i++)
    {
        send_byte(tab[i]);
    }
}

void send_string(char * string)
{
    int i = 0;
    while(string[i] != '\0')
    {
        send_byte(string[i]);
        i++;
    }
}
 

bottom of page