Bonjour tt le monde;
je souhaite avoir votre aide SVP sur un projet sur lequel je travail.
je suis débutant en programmation des PIC et la je dois réaliser une communication entre un PC et un PIC 16F877 (juste la réception au moin)
bref vous allez me dire que y'a plein d'exemples sur le net, bien sure , j'ai déjà commencé et j'ai fais un premier programme pour la reception RS232 en C, mais ma surprise en connectant avec le pc y'a rien qui se passe sur Hyper terminal....
donc j'utilise un Pic 16f877, une carte PICDEM2plus avec OSC 4Mhz pour les test, je suis sous Windows 7
et le code que j'ai est le suivant:
donc voila, si quelqu’un a quelque minutes a consacré svpCode://********************************************************** //********************************************************** #include <int16cxx.h> #pragma chip PIC16F877 //******************************************** int i,j,k, T; unsigned char millisec; //******************************************** //*********************E/S******************* //******************************************** #define CP_off |= 0x3F30 #define LVP |= 128 #pragma config CP_off, PWRTE = on, WDTE=off,FOSC = HS, BODEN = on, LVP #pragma origin 4 interrupt passge_par_zero(void) { int_save_registers // sauvegarde des registres de travail if(INTF){ //test de la communication //***********tempo en milisec avant l'impultion********** // millisec = 20; OPTION = 2; // prescaler divide by 8 do { TMR0 = 0; clrwdt(); // only if necessary while (TMR0 < 125); // 125us * 8 =1000us } while (-- millisec > 0); // variable de tempo avt impultion a recuperer (millisec) //****************************************************** PORTA.1=1; // mettre le port A à 1 //***********tempo duree de l'impultion ***************** for (i=0; i<10; i++) //10 micro S { clrwdt(); // only if necessary, nop(); a la place nop(); nop(); nop(); nop(); } //****************************************************** PORTA.1=0; //remettre le port A à 0 //******************************************************* INTF=0; // REMISE A ZERO DU FLAG. } int_restore_registers // réstauration } //**************************************************** //*************************init usart***************** void InitUSART() { PORTA = 0; //init port A PORTB = 0; // init port B PORTC = 0; // init portC TRISC.7 = 1; // autiser la reception TRISC.6 = 0; // pas de transmission BRGH = 1; // high speed serial port mode SPBRG = 25; //Set 9600 baud for 4 MHz oscillator SYNC = 0; //clear sync bit; set_async_mode; SPEN = 1; //set serial port enable TX9 = 0; //8-bit transmissions sans parité //TXEN = 1; //Enable transmission RCIE = 1; //Rx interrupts are desired RX9 = 0; //enable 8-bit receptions CREN = 1; //enable reception TXIE=0; //disable tx interrupts RCIE=0; //disable rx interrupts TXEN=0; //reset transmitter SREN=0; //no effect TXEN=1; } //******************************************************* unsigned char dummy; #define clear_usart_errors_inline \ if (OERR) \ { \ TXEN=0; \ TXEN=1; \ CREN=0; \ CREN=1; \ } \ if (FERR) \ { \ dummy=RCREG; \ TXEN=0; \ TXEN=1; \ } //******************************************************* //gets a character from the serial port without timeout unsigned char getch(void) { unsigned char Ch; // while(!RCIF) if (RCIF) { Ch = RCREG; // this clears the RCIF flag clrwdt(); clear_usart_errors_inline; } return Ch; } //******************************************************** //---------------------------- Programme Principal ---------------------------------------- void main ( void ) { TRISB = 0b11111111; //port b en entree TRISA = 0b00000000; //port a en sortie InitUSART(); millisec=40; PORTA = 0x00; //initialisation du portA PORTB = 0x00; //initialisation du portB INTCON = 0b10010000 ; // autorisation des interruptions en general et RB0 en particulier OPTION_REG =0b01000000; //interruption sur le front montant //OPTION = 0b11000011 ; // Pré division de l'horloge par 16 cela conduit à une durée de cycle de 3,2 micro secondes while(1) { millisec = getch(); } } //*********************************************************************************** //********************************************************************************
-----