Trame sous PIC 18F

Résolu
PIC08 Messages postés 2 Date d'inscription mercredi 21 juillet 2010 Statut Membre Dernière intervention 22 juillet 2010 - 21 juil. 2010 à 16:20
PIC08 Messages postés 2 Date d'inscription mercredi 21 juillet 2010 Statut Membre Dernière intervention 22 juillet 2010 - 22 juil. 2010 à 14:26
Bonjour,
Je suis entrain d'écrire un programme que j'ai compilé correctement, qui a pour but d'envoyer une trame(Information) en fonction du bouton poussé d'une télécommande, je dois synchroniser la durée de chaque bit de sortie du Port B et ajouter un bit de start et un bit de stop, malheureusement je ne sais comment faire.
merci de m'aider

Voici le programme :

#include

char trame0 = 0x00; //Trame nulle
//Température//
char trame1 = 0x01; //Affichage Température
char trame2 = 0x02; //Augmenter
char trame3 = 0x03; //Diminuer
char trame4 = 0x04; //Clim Marche


void main(void) // Entrée du programme principal

{
PORTA = 0x00; // Initialisation du port A
PORTB = 0x00; // Initialisation du port B
PORTC = 0x00; // Initialisation du port C
PORTD = 0x00; // Initialisation du port D

TRISC = 0xFF; // Le port C en entrée (Boutons de commande)
TRISD = 0xFF; // Le port D en entrée (Boutons de commande)
TRISB = 0x00; // Le port B en sortie (Sortie de trames)


while (1) //Boucle infinie
{
if (PORTC & PORTD 0) PORTB trame0;
else if (PORTCbits.RC0) PORTB = trame1; // Si le bouton1 est appuyé, le port B transmet la trame1
else if (PORTCbits.RC1) PORTB = trame2; // Si le bouton2 est appuyé, le port B transmet la trame2
else if (PORTCbits.RC2) PORTB = trame3; // Si le bouton3 est appuyé, le port B transmet la trame3
else if (PORTCbits.RC3) PORTB = trame4; // Si le bouton4 est appuyé, le port B transmet la trame4

}

}

}

2 réponses

Guilou34 Messages postés 142 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 29 janvier 2016 1
22 juil. 2010 à 14:16
Puisque tu parles de start bit et de stop bit on peut penser qu'il s'agit d'une liaison série asynchrone du type rs232. Fait une recherche sur ce mot et tu verras qu'il n'y a rien de compliqué. Tu parles aussi de télécommande, dans ce cas il faut connaître les caractéristiques du récepteur et il est rare que le signal transmis soit une suite de 1 et de 0 mais bien un signal modulé entre 20 et 40 kHZ.
Amicalement
PIC08 Messages postés 2 Date d'inscription mercredi 21 juillet 2010 Statut Membre Dernière intervention 22 juillet 2010
22 juil. 2010 à 14:26
Merci pour ta réponse, il s'agit en fait d'une télécommande de climatisation, j'ai le discpositif qui dispose d'un ancien Microcontroleur NEC et je dois donc le remplacer par un PIC 18F,je part d'un cahier de charge pour pouvoir envoyer une trame et pour l'afficheur et pour le récepteur.Comme tu as dit c'est un signal modulé entre 20 et 40 kHZ.le problème c que je ne trouve que des codes en HEXADECIMAL 20H 23H...et je ne comprend pas bien l'assembleur,c pour cela j'ai du mal à en déduire les codes des trames. C'est pour ca j'essai d'écrire un programme qui permet d'envoyer n'importe quelle trame, son identification devient facile après avoir obtenu son code de la part de mon tuteur.Avez vs des conseils SVP.
Merci
Rejoignez-nous