Gavekort Skrevet 8. juni 2011 Del Skrevet 8. juni 2011 (endret) Hei! Jeg har problemer med at det ikke skjer noe når jeg trykker RB0 eller RB1! Hvorfor vil ikke betingelsen oppfylles? #include "Display_utils.h" unsigned short i; unsigned int button; void main() { //INTCON = 0; // Disable GIE, PEIE,INTE,RBIE,T0IE PORTA = 0; TRISA = 0; // PORTB = 0xFF; TRISB = 0xFF; PORTD = 0; TRISD = 0; PORTB=0x00; do { if(PORTB.RB0==1) { for (i = 0; i <= 9u; i++) { PORTA = 0; Delay_ms(120); // Turn off all 7seg displays PORTD = mask(i); // bring appropriate value to PORTD PORTA = 0b00000001; Delay_ms(120); PORTD = mask(i); PORTA = 0b00000010; Delay_ms(120); PORTD = mask(i); PORTA = 0b00000100; Delay_ms(120); PORTD = mask(i); PORTA = 0b00001000; Delay_ms(120); PORTD = mask(i); PORTA = 0b00010000; Delay_ms(120); PORTD = mask(i); PORTA = 0b00001000; Delay_ms(120); PORTD = mask(i); PORTA = 0b00000100; Delay_ms(120); PORTD = mask(i); PORTA = 0b00000010; Delay_ms(120); PORTD = mask(i); PORTA = 0b00000001; Delay_ms(120); PORTD = mask(i); PORTA = 0b00000000; } } else if(PORTB.RB1==1) { PORTD = mask(10); PORTA = 0b00001000; PORTD = mask(11); PORTA = 0b00000100; PORTD = mask(12); PORTA = 0b00000010; } } while(1); } Display_utils.h //-------------- Returns mask for common cathode 7-seg. display 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; case 10 : return 0x77; //A case 11 : return 0x7F; //B case 12 : return 0x39; //C case 13 : return 0x3F; //D case 14 : return 0x79; //E case 15 : return 0x71; //F case 16 : return 0x7D; //G case 17 : return 0x76; //H case 18 : return 0x06; //I case 19 : return 0x1E; //J //case X : return ????; //K case 20 : return 0x38; //L //case X : return ????; //M //case X : return ????; //N case 21 : return 0x3F; //O case 22 : return 0x73; //P //case X : return ????; //Q //case X : return ????; //R case 23 : return 0x6D; //S //case X : return ????; //T case 24 : return 0x3E; //U } //case end }//~ Endret 8. juni 2011 av Gavekort Lenke til kommentar
[kami] Skrevet 29. juni 2011 Del Skrevet 29. juni 2011 er det if(PORTB.RB0==1) ... else if(PORTB.RB1==1) som ikke trigger? isåfall, vil jeg foreslå å gjøre noe enklere i if'n.. som å toggle et lys eller noe. sjekk også at du har initialisert PORTB riktig, PIC mikrokontrollen er ganske nazi på småfeil. Eller rettere sagt compileren. Husker seff ikke hva verdiene skal settes til i huet, men det finnes på referanseskjemaet som fulgte med kontrolleren. Lenke til kommentar
Gavekort Skrevet 29. juni 2011 Forfatter Del Skrevet 29. juni 2011 Jeg fant ut av det. Det var en bug på PORTB, så det hjalp å bare skifte til PORTC. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå