Bonjour
Je suis en train de commencer à programmer un PIC18F4685, avec lequel je contrôle une 20taine de LEDs. Mon problème est que quoi que je fasse, les PINs RD0, RD1, RD2, RD3 sont toujours à 0.
Sur les PINs de RD0, RD1, RD2, RD3 il y a aussi les entrées pour faire des comparaisons : C1IN+, C1IN-, C2IN+, C2IN-. Je pense que le problème vient de là, mais je ne trouve pas comment les désactiver… Une idée ?
Merci
Voici mon code :
Code:#include <p18f4685.h> #include <delays.h> #pragma config OSC = IRCIO67 #pragma config FCMEN = OFF #pragma config IESO = OFF #pragma config PWRT = OFF //#pragma config BOREN = OFF #pragma config WDT = OFF #pragma config MCLRE = ON #pragma config LPT1OSC = OFF #pragma config PBADEN = OFF #pragma config STVREN = OFF #pragma config LVP = OFF #pragma config XINST = OFF #pragma config DEBUG = OFF #pragma config CP0 = OFF #pragma config CP1 = OFF #pragma config CP2 = OFF #pragma config CPB = OFF #pragma config CPD = OFF #define POT1 PORTAbits.RA0 #define POT2 PORTAbits.RA1 #define POT3 PORTAbits.RA2 #define BT PORTAbits.RA3 #define SndIN PORTAbits.RA4 #define M1 PORTAbits.RA5 #define V2 PORTAbits.RA6 #define V1 PORTAbits.RA7 #define LED1 PORTBbits.RB0 #define LED2 PORTBbits.RB1 #define LED3 PORTBbits.RB2 #define LED4 PORTBbits.RB3 #define LED5 PORTBbits.RB4 #define LED6 PORTBbits.RB5 #define LED7 PORTBbits.RB6 #define LED8 PORTBbits.RB7 #define V3 PORTCbits.RC0 #define V4 PORTCbits.RC1 #define V5 PORTCbits.RC2 #define V6 PORTCbits.RC3 #define LED9 PORTCbits.RC4 #define LED10 PORTCbits.RC5 #define LED11 PORTCbits.RC6 #define LED12 PORTCbits.RC7 #define LED13 PORTDbits.RD0 #define LED14 PORTDbits.RD1 #define LED15 PORTDbits.RD2 #define LED16 PORTDbits.RD3 #define LED17 PORTDbits.RD4 #define LED18 PORTDbits.RD5 #define LED19 PORTDbits.RD6 #define LED20 PORTDbits.RD7 #define M2 PORTEbits.RE0 #define M3 PORTEbits.RE1 #define M4 PORTEbits.RE2 //#define PORTCbits.RE3 void Actualise(char*, char*) ; void main(void) { int i, j, k ; char LED[21] ; char M[5] ; TRISA = 0b00011111 ; // IN : RA2, RA3, RA4, RA5, (RA7) TRISB = 0b00000000 ; TRISC = 0b00000000 ; TRISD = 0b00000000 ; TRISE = 0b00000000 ; OSCTUNE = 0b10001111 ; OSCTUNEbits.INTSRC = 1 ; OSCTUNEbits.PLLEN = 0 ; OSCCONbits.IRCF2 = 1 ; OSCCONbits.IRCF1 = 1 ; OSCCONbits.IRCF0 = 1 ; OSCCONbits.SCS1 = 1 ; OSCCONbits.SCS0 = 1 ; ADCON1=0b00001010 ; //######################## V1=1; V2=0; V3=0; V4=0; V5=0; V6=0; for(i=0 ; i<20 ; i++) LED[i] = 1 ; for(i=0 ; i<4 ; i++) M[i] = 0 ; Actualise(LED, M) ; while(1) // Fait clignoter une LED (fonctionne) { M[0] = 1 ; LED[2] = 0 ; Actualise(LED, M) ; Delay10KTCYx(10) ; M[0] = 1 ; LED[2] = 1 ; Actualise(LED, M) ; Delay10KTCYx(10) ; } return ; } void Actualise(char LED[], char M[]) { M1=M[0] ; M2=M[1] ; M3=M[2] ; M4=M[3] ; LED1=LED[0] ; LED2=LED[1] ; LED3=LED[2] ; LED4=LED[3] ; LED5=LED[4] ; LED6=LED[5] ; LED7=LED[6] ; LED8=LED[7] ; LED9=LED[8] ; LED10=LED[9] ; LED11=LED[10] ; LED12=LED[11] ; LED13=LED[12] ; LED14=LED[13] ; LED15=LED[14] ; LED16=LED[15] ; LED17=LED[16] ; LED18=LED[17] ; LED19=LED[18] ; LED20=LED[19] ; return ; }
-----