Bonjour;
sur la présente image j'utilise un deux 7-seg à cathode commune une chose, que je pige pas c'est pourquoi les données s'affichent pas sur les afficheurs, je n'ai pas pu résoudre se problème je crois que c'est un problème hard car les données je peux remarquer qu'il viennent à l'entrée de mon afficheur mais elle s'affiche pas prière de m'aider.
voici le code:
Code:unsigned short mask(unsigned short num) { switch (num) { case 0 : return 0x3F; case 1 : return 0x06; case 2 : return 0x5B; case 3 : return 0x4F; case 4 : return 0x66; case 5 : return 0x6D; case 6 : return 0x7D; case 7 : return 0x07; case 8 : return 0x7F; case 9 : return 0x6F; } } unsigned short digit_no , digit10 , digit1 , digit , i; void interrupt () { if (digit_no ==0) { PORTA = 0; // Turn off all 7seg displays PORTD = digit1; // send mask for ones digit to PORTD PORTA = 1; // turn on 1st 7 seg., turn off 2nd digit_no = 1; } else { PORTA = 0; // Turn off all 7seg displays PORTD = digit10; // send mask for tens digit to PORTD PORTA = 2; // turn on 2nd 7 seg., turn off 1st digit_no = 0; } TMR0 = 0; // clear TMRO INTCON = 0x20; // clear TMR0IF and set TMR0IE } void main () { OPTION_REG = 0x80; // Timer0 settings TMR0 = 0; INTCON = 0xA0; // Disable PEIE ,INTE ,RBIE ,T0IE PORTA = 0; // clear PORTA (make sure both displays are off) TRISA = 0; // designate PORTA pins as output PORTD = 0; // clear PORTD (make sure LEDs are off) TRISD = 0; // designate PORTD pins as output do { for (i = 0; i <=99; i++) { // count from 0 to 99 digit = i % 10u; digit1 = mask(digit ); // prepare ones digit digit = (char)(i / 10u) % 10u; digit10 = mask(digit ); // prepare tens digit Delay_ms (1000); } } while (1); // endless loop }
-----