A voir également:
- Programmation RS232
- Programmation - Guide
- Application de programmation - Guide
- Programmation logo tortue télécharger - Télécharger - Études & Formations
- Rs232 usb schema ✓ - Forum Réseau
- Terminal rs232 windows 10 - Télécharger - Utilitaires
13 réponses
j ai trouvé que du code assembleur ...
https://codes-sources.commentcamarche.net/
au pire tu peux tjs inclure du code ASM dans ton code C.... desolé de pas t aider plus
https://codes-sources.commentcamarche.net/
au pire tu peux tjs inclure du code ASM dans ton code C.... desolé de pas t aider plus
Salut. Es tu allé voir sur le site de microchip ?
re bonjour,
j'ai regardé sur le site mais je suis dsl je vois pas en quoi cela peut m'aider.
SVP aidé moi il faut que se soit fait pour vendredi. Comment je fait pour déclarer le registre du moins pour le mettre actif? Comment je fait pour lui dir de prendre tel ou tel donnée? est-ce au moins le bon registre TXSTA pour envoyer?
Merci de m'aider.
j'ai regardé sur le site mais je suis dsl je vois pas en quoi cela peut m'aider.
SVP aidé moi il faut que se soit fait pour vendredi. Comment je fait pour déclarer le registre du moins pour le mettre actif? Comment je fait pour lui dir de prendre tel ou tel donnée? est-ce au moins le bon registre TXSTA pour envoyer?
Merci de m'aider.
J'en avait deja trouvé en assembleur, mais deja que le langage C met difficile là c'est pas la peine !!
Merci quand même pour ton aide mais je ne peut pas inclure ce programme au mien il faut que je sache quand même l'expliquer !
Je vais essayer de me débrouiller et si j'y arrive je posterai mon programme sur le forum, comme sa ce sera résolu.
Mais si quelqu'un a une idée je prend !
Milie
Merci quand même pour ton aide mais je ne peut pas inclure ce programme au mien il faut que je sache quand même l'expliquer !
Je vais essayer de me débrouiller et si j'y arrive je posterai mon programme sur le forum, comme sa ce sera résolu.
Mais si quelqu'un a une idée je prend !
Milie
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je pense que tu les a deja, mais bon...
datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/39582b.pdf
chapitre 9 ....
datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/39582b.pdf
chapitre 9 ....
qu'st-ce que sa veut dir?? est-ce que c'est quelques chose que je dois venir lire pour savoir s'il est occupé ou c'est moi qui doit imposer se mode :
bit 4 CREN: Continuous Receive Enable bit
Synchronous mode:
1 = Enables continuous receive until enable bit CREN is cleared (CREN overrides SREN)
0 = Disables continuous receive
bit 4 CREN: Continuous Receive Enable bit
Synchronous mode:
1 = Enables continuous receive until enable bit CREN is cleared (CREN overrides SREN)
0 = Disables continuous receive
Pour le registre SPBRG, je pense que c'est pour régler l'horloge, il y a un tableau pour trouver la valeur que l'on doit lui mettre:
BAUD
RATE
(K) // qu'est-ce que c'est??
KBAUD // qu'est-ce que c'est??
FOSC = 20 MHz // pour mon cas
P98 http://ww1.microchip.com/downloads/en/DeviceDoc/39582b.pdf
merci
BAUD
RATE
(K) // qu'est-ce que c'est??
KBAUD // qu'est-ce que c'est??
FOSC = 20 MHz // pour mon cas
P98 http://ww1.microchip.com/downloads/en/DeviceDoc/39582b.pdf
merci
BAUD c est le nombre d etats possibles a la seconde, deririere un modem... sur une ligne telephonique. il y a souvent une confusion avec les bits par seconde. dans ton cas, le signal est binaire, donc bits envoyés un par un, donc BAUD=bps.
http://fr.wikipedia.org/wiki/Baud_(mesure)
je pense pas que la page 98 s applique a toi: c est de la communication serie i2C, pas rs232
j ai trouvé ce site: j espere que tu trouvera qqch...
n hesite pas a regarder des codes pour d autres pic ! ca se ressemble ces bébètes...
http://bepelectronique.free.fr/index.php?option=com_weblinks&catid=76&Itemid=23
bon courrage
petite question, tu fais quoi comme etude pour te retrouver a programmer ca en stage sans y avoir vu avant ? BTS IRIS ?
http://fr.wikipedia.org/wiki/Baud_(mesure)
je pense pas que la page 98 s applique a toi: c est de la communication serie i2C, pas rs232
j ai trouvé ce site: j espere que tu trouvera qqch...
n hesite pas a regarder des codes pour d autres pic ! ca se ressemble ces bébètes...
http://bepelectronique.free.fr/index.php?option=com_weblinks&catid=76&Itemid=23
bon courrage
petite question, tu fais quoi comme etude pour te retrouver a programmer ca en stage sans y avoir vu avant ? BTS IRIS ?
https://forums.futura-sciences.com/archive/index.php/
mais c est encore de l assembleur... ceci dit, tu peux tjs toruver qqcn pour t expliquer !
mais c est encore de l assembleur... ceci dit, tu peux tjs toruver qqcn pour t expliquer !
Merci pour tous ces liens, pour l'instant voila ce que j'ai réussi à faire :
void RS_init (void){
//initialisation poour la liaison série RS232
// pour le registre TXSTA : transmit status and control registrer
CSRC=1; //clock source
TX9=0; //8bits transmit
SYNC=1; //usart synchronous mode
BRGH=1; //high speed
TX9D=0; //envoi 8bits sans parité
//pour le registre RCSTA : RECEIVE STATUS AND CONTROL REGISTER
SPEN=1;
// pour le registre SPBRG :BAUD RATES FOR ASYNCHRONOUS MODE
SPBRG=129;
}
void RS (void){
TXEN=1; //transmit enable bit
while(TRMT==0); //Transmit shift register status bit (empty)
TXREG='1'; //envoi du chiffre 1
Delay_ms(10);
}
J'en été toute contente malheureusement sa ne marche pas !
Et pour répondre à ta petite question je suis en IUT GEII et peut être bien que l'on a deja du faire quelque chose dans le genre malheureusement... ce n'été pas mon dada et je m'en mort les doigts maintenan !
MILIE
void RS_init (void){
//initialisation poour la liaison série RS232
// pour le registre TXSTA : transmit status and control registrer
CSRC=1; //clock source
TX9=0; //8bits transmit
SYNC=1; //usart synchronous mode
BRGH=1; //high speed
TX9D=0; //envoi 8bits sans parité
//pour le registre RCSTA : RECEIVE STATUS AND CONTROL REGISTER
SPEN=1;
// pour le registre SPBRG :BAUD RATES FOR ASYNCHRONOUS MODE
SPBRG=129;
}
void RS (void){
TXEN=1; //transmit enable bit
while(TRMT==0); //Transmit shift register status bit (empty)
TXREG='1'; //envoi du chiffre 1
Delay_ms(10);
}
J'en été toute contente malheureusement sa ne marche pas !
Et pour répondre à ta petite question je suis en IUT GEII et peut être bien que l'on a deja du faire quelque chose dans le genre malheureusement... ce n'été pas mon dada et je m'en mort les doigts maintenan !
MILIE
Bon voila où j'en suis :
void LCD_1 (void){
i=0;
tab1[0]='W';
tab1[1]='E';
tab1[2]='L';
tab1[3]='C';
tab1[4]='O';
tab1[5]='M';
tab1[6]='E'; // rentre dans la table 1 le mot 'WELCOME'
for (i=0; i<7; i++){ //boucle permetant d'écrire le mot 'WELCOME' sur le LCD
PORTD.6=1;
PORTD.5=0;
PORTB=tab1[i];
PORTD.4=1;
PORTD.4=0;
Delay_ms(10);
a=(PORTD && 0b10000000);
while ( a == 0b10000000); // masque avec la fonction
//Read Busy Flag and Address Counter pour savoir s'il écrit tjrs
}
}
void RS_transmit (void){
SREN=0; //stop receive
TXEN=1; //transmit enable bit
i=0;
for (i=0; i<7; i++){ //boucle permetant d'envoyer WELCOME avec RS232
while(TRMT==0);//Transmit shift register status bit (empty)
TXREG=tab1[i]; //envoi WELCOME du tableau1
Delay_ms(10);
}
}
void Bp1 (void){
// Bouton poussoir 1
while (PORTD.0==1);
LCD_init();
PORTC.0=0; // allume la led rouge: INDC
PORTD.2=0; // eteind la led bicolor vert
PORTD.3=1; // allume la led bicolor en rouge
Delay_ms(5);
LCD_1();
RS_transmit();
}
void RS_receive (void){
TXEN=0; //stop transmit
SREN=1; //receive enable bit
k=0;
for (k=0; k<7; k++){ //boucle permetant de lire les données envoyé par rs232
while(CREN==1); //Continuous Receive Enable bit
tab2[k]=RCREG; //read and save data in tab2
Delay_ms(10);
}
}
void LCD_2 (void){
k=0;
for (k=0; k<7; k++){ //boucle permetant d'écrire le mot 'WELCOME' sur le LCD
PORTD.6=1;
PORTD.5=0;
PORTB=tab2[k];
PORTD.4=1;
PORTD.4=0;
Delay_ms(10);
a=(PORTD && 0b10000000);
while ( a == 0b10000000); // masque avec la fonction
//Read Busy Flag and Address Counter pour savoir s'il écrit tjrs
}
}
void Bp2 (void){
// Bouton poussoir 2
RS_receive();
while (PORTD.1==1);
PORTC.0=1; // eteind la led rouge: INDC
PORTD.2=1; //allume la led bicolor en vert
PORTD.3=0; // eteind le led bicolor rouge
LCD_init();
Delay_ms(10);
LCD_2(); //affiche les données recus
}
void RS_init (void){
//initialisation poour la liaison série RS232
// pour le registre TXSTA : transmit status and control registrer
CSRC=1; //clock source
TX9=0; //8bits transmit
SYNC=1; //usart synchronous mode
BRGH=1; //high speed
TX9D=0; //envoi 8bits sans parité
//pour le registre RCSTA : RECEIVE STATUS AND CONTROL REGISTER
SPEN=1; //serial port enable bit
RX9=0; // 8bits receive
// pour le registre SPBRG :BAUD RATES FOR ASYNCHRONOUS MODE
SPBRG=129;
}
au final j'affiche correctement sur l'écran LCD mes leds et Bouton poussoir fonctionne mais ma liaison RS232 ne marche pas du tout que se soit pour envoyer ou recevoir.
S'il vous plai que quelqu'un m'aide !!!
merci MILIE
void LCD_1 (void){
i=0;
tab1[0]='W';
tab1[1]='E';
tab1[2]='L';
tab1[3]='C';
tab1[4]='O';
tab1[5]='M';
tab1[6]='E'; // rentre dans la table 1 le mot 'WELCOME'
for (i=0; i<7; i++){ //boucle permetant d'écrire le mot 'WELCOME' sur le LCD
PORTD.6=1;
PORTD.5=0;
PORTB=tab1[i];
PORTD.4=1;
PORTD.4=0;
Delay_ms(10);
a=(PORTD && 0b10000000);
while ( a == 0b10000000); // masque avec la fonction
//Read Busy Flag and Address Counter pour savoir s'il écrit tjrs
}
}
void RS_transmit (void){
SREN=0; //stop receive
TXEN=1; //transmit enable bit
i=0;
for (i=0; i<7; i++){ //boucle permetant d'envoyer WELCOME avec RS232
while(TRMT==0);//Transmit shift register status bit (empty)
TXREG=tab1[i]; //envoi WELCOME du tableau1
Delay_ms(10);
}
}
void Bp1 (void){
// Bouton poussoir 1
while (PORTD.0==1);
LCD_init();
PORTC.0=0; // allume la led rouge: INDC
PORTD.2=0; // eteind la led bicolor vert
PORTD.3=1; // allume la led bicolor en rouge
Delay_ms(5);
LCD_1();
RS_transmit();
}
void RS_receive (void){
TXEN=0; //stop transmit
SREN=1; //receive enable bit
k=0;
for (k=0; k<7; k++){ //boucle permetant de lire les données envoyé par rs232
while(CREN==1); //Continuous Receive Enable bit
tab2[k]=RCREG; //read and save data in tab2
Delay_ms(10);
}
}
void LCD_2 (void){
k=0;
for (k=0; k<7; k++){ //boucle permetant d'écrire le mot 'WELCOME' sur le LCD
PORTD.6=1;
PORTD.5=0;
PORTB=tab2[k];
PORTD.4=1;
PORTD.4=0;
Delay_ms(10);
a=(PORTD && 0b10000000);
while ( a == 0b10000000); // masque avec la fonction
//Read Busy Flag and Address Counter pour savoir s'il écrit tjrs
}
}
void Bp2 (void){
// Bouton poussoir 2
RS_receive();
while (PORTD.1==1);
PORTC.0=1; // eteind la led rouge: INDC
PORTD.2=1; //allume la led bicolor en vert
PORTD.3=0; // eteind le led bicolor rouge
LCD_init();
Delay_ms(10);
LCD_2(); //affiche les données recus
}
void RS_init (void){
//initialisation poour la liaison série RS232
// pour le registre TXSTA : transmit status and control registrer
CSRC=1; //clock source
TX9=0; //8bits transmit
SYNC=1; //usart synchronous mode
BRGH=1; //high speed
TX9D=0; //envoi 8bits sans parité
//pour le registre RCSTA : RECEIVE STATUS AND CONTROL REGISTER
SPEN=1; //serial port enable bit
RX9=0; // 8bits receive
// pour le registre SPBRG :BAUD RATES FOR ASYNCHRONOUS MODE
SPBRG=129;
}
au final j'affiche correctement sur l'écran LCD mes leds et Bouton poussoir fonctionne mais ma liaison RS232 ne marche pas du tout que se soit pour envoyer ou recevoir.
S'il vous plai que quelqu'un m'aide !!!
merci MILIE
tchoubaka
Messages postés
61
Date d'inscription
samedi 7 février 2009
Statut
Membre
Dernière intervention
25 mai 2023
11
8 avril 2009 à 14:36
8 avril 2009 à 14:36
s'lut emilie, travaille aussi sur mplab(pic 16f876) et mon programme porte sur le projet de commande d'un pont roulant. concernant le port serie, je suis entrain de l'etudier pour connaitre le fonctionnement. donc nous devons travailler ensemble pour nous en sortir car j'aimerais aussi programmer mon projet en langage c++ mais je ne sais pas comment incorporer le programme dans mplab.
a bientôt
a bientôt