Bonjour, pour un projet de TPE j'ai décidé de faire un exemple de contrôle de led par ordinateur. J'ai fait le circuit, le programme mais le pic n'actionne pas les led et ce depuis plus d'un mois. Même avec un travail acharné ^^. Je pense que le problème vien du code donc pouvez vous m'aider. Merci.
le usart.h:Code:le main: #include <stdio.h> #include <htc.h> #include "usart.h" #include "pic16f62xa.h" __CONFIG(HS & WDTDIS & PWRTDIS & UNPROTECT); void main(void) { INTCON=0; // pour desactiver l'interruption TRISB0 = 0;//déclarations des sorties TRISB3 = 0; TRISB4 = 0; TRISB5 = 0; TRISB6 = 0; RB0=1;//activation de la led d'etat init_comms(); // init les paramètres usart printf("hi"); while(1) { unsigned char input = getche(); //attend une commande switch (input)//cherche ou va la commande { case 2: RB3 = !RB3;//inverse la valeur du pin break; case 3: RB4 = !RB4; break; case 4: RB5 = !RB5; break; case 5: RB6 = !RB6; break; case 6: RB7 = !RB7; break; case 7: RA1 = !RA1; break; default: //ne rien faire break; } } }
Code:#ifndef _SERIAL_H_ #define _SERIAL_H_ #include "pic16f62xa.h" #define BAUD 9600 #define FOSC 26625000 #define NINE 0 /* Use 9bit communication? FALSE=8bit */ #define DIVIDER ((int)(FOSC/(16UL * BAUD) -1)) #define HIGH_SPEED 1 #if NINE == 1 #define NINE_BITS 0x40 #else #define NINE_BITS 0 #endif #if HIGH_SPEED == 1 #define SPEED 0x4 #else #define SPEED 0 #endif #define RX_PIN TRISB1 #define TX_PIN TRISB2 /* Serial initialization */ #define init_comms()\ RX_PIN = 1; \ TX_PIN = 1; \ SPBRG = DIVIDER; \ RCSTA = (NINE_BITS|0x90); \ TXSTA = (SPEED|NINE_BITS|0x20) void putch(unsigned char); unsigned char getch(void); unsigned char getche(void); #endif
-----