Bonsoir,
Je suis actuellement en train d'essayer d'apprendre a utiliser un PIC 16F877 afin d'effectuer un test sur le controle d'un servomoteur.
Après plusieurs recherches, et je me suis donc lancé dans la réalisation d'un programme en m'inspirant de ce que j'ai pu trouver.
Le compilateur utilisé est HI-TECH sous MPLAB ICD2.
Je rencontre actuellement un problème avec ce dernier, ce programme ne compile pas, et m'indique une erreur à partir du fichier 16F87.h .... Je n'ai pas créé de fichier de ce type, s'agit il d'une bibliothèque d'origine ou que je dois faire moi même...?
Pourriez vous m'éclairer sur ce programme?
Voici une ébauche de ce dernier :
Merci d'avance pour votre aide!Code:#include "htc.h" // Importation des librairies standards #include "pic16f87.h" // Importation des librairies standards //Variables globales //****************** int COMPTEUR1; int COMPTEUR2; int SIGNAL; int SENS; //Génération du signal //******************** #define TIME 4 // TIMER=3 #define PORT_SIGNAL RC1 #define TS 360 // 360*50=18000 µs #define STOP 30 // 30*50 =1500µs #define AV 40 // 40*50 =2000µs #define AR 20 // 20*50 =1000µs main() { PORTC = 0; // clear PortC TRISC = 0; // on défini le PortC en sortie init_timer(); while (1) //boucle infinie { SENS=AV; // en avant pendant 3" __delay_ms(3000); SENS=STOP; // stop 1" __delay_ms(1000); SENS=AR; // en arrière 3" __delay_ms(3000); SENS=STOP; // stop __delay_ms(1000); } } //Initialisation du timer //*********************** void init_timer() { OPTION = 0x07; //prescaler 256, entrée sur quartz TMR0 = 0x00; } //Interruptions //************** #interrupt_timer0 // Interruption toutes les (4*250)/20000000 = 50µs main_int () { set_timer0(TIME); COMPTEUR1 = 0; COMPTEUR2 = 0; if (COMPTEUR1 == 360) { COMPTEUR1 = 0; COMPTEUR2 = 0; SIGNAL = 1; PORTC = 1 COMPTEUR1 += 1; } else { if (SIGNAL==1) { if (COMPTEUR2 == SENS) { COMPTEUR2 +=1; SIGNAL = 0; PORTC = 0; } } } }
Bonne soirée à tous![]()
-----