bonsoir,

dans une partie de mon projet je voudrais allumer des LED avec un 16F877 via un clavier 16 touches (relié à l'encodeur 74C922) et qui a chaque touche allume un certains nombre de diodes LED.


le programme en C :

Code:
 

encodeur=input_b() >> 4 ;

switch (encodeur)

   {
case (0x04) :     // bouton (ligne 2,colonne 1) appuyé

output_high(R1) ;  // LED allumée
output_low(R2)  ;  // LED éteinte
output_low(R3)  ;  // LED éteinte
output_high(R4) ; // LED allumée

 break;}


case (0x05) : 

   {
output_high(R1) ;
output_low(R2)  ;
output_low(R3)  ;
output_low(R4)  ;

break;}

bla, bla, bla...


}

encodeur, variable de type byte, est le signal que recoit le PIC par l'encodeur


lorseque j'ai réalisé la simulation sur ISIS certainnes Diodes ne s'allumaient pas, d'autres clignotaient à une fréquence constante,et même parfois celles qui s'allumaient ne corresspondaient pas à la combinaison attendue.

d'après vous,l'erreur viedrait-t-elle de mon code au niveau de l'allumage/extinction des LED:

Code:
output_high(R1) ;
output_low(R2)  ;
output_low(R3)  ;
output_low(R4)  ;
dois-je le changer avec output_c(0x01) par exemple??

et dans ce cas quel fichier header dois-je mettre dans l'entête car mon compilateur (CCS) a ignoré l'instruction output_c() et output_d() mais a reconnu output_a() !




voici d'ailleurs l'entête de mon programme, qu'est ce qui manque d'apès vous ? :

Code:
#include <16F877.h>
#device adc=8                  
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)


#define DEM1      PIN_A0  // pin reliée au démultiplexeur
#define DEM2      PIN_A1   
#define DEM3      PIN_A2
#define DEM4      PIN_A3
#define A4        PIN_A4
#define A5        PIN_A5


#define R1          PIN_C0  
#define R2          PIN_C1  
#define R3          PIN_C2  
#define R4          PIN_C3  
#define LED_isol    PIN_C4  
#define LED_temp    PIN_C5
#define C6          PIN_C6
#define C7          PIN_C7

autre chose,mon compilateur ignore aussi la commande setup_adc_ports(NO_ANALOG) , bien que j'utilise les ports A comme sorties numériques (vers un Démulitiplexeur) , bizarre , non ?


Rque : dans ce projet les LED que je voudrait allumer sont en réalité des relais , mais j'utilise des LED en simulation pour pouvoir visualiser l'exécution de ma commande .


et merci d'avance pour vos aides .