Forum: Mikrocontroller und Digitale Elektronik Binärcode wird nicht richtig erkannt


von Kaito C. (kaitocross)


Angehängte Dateien:

Lesenswert?

Hallo zusammen :)
Ich habe ein Problem bei folgender Schaltung.
Das Programm soll den Zahlenwert des DTMF am Display ausgeben.
Wenn ich dem DTMF-Decoder eine 8 oder 9 signalisiere, wird diese nicht 
auf dem Display angezeigt, er bleibt beim vorherigen Wert. Das Programm 
sollte eigendlich fehlerfrei sein. Wenn ich jedoch an PortC4 ein 
Messgerät anschließe (es reicht schon wenn ich nur einen Messfühler dran 
halte, üblicherweise messe ich dann gegen Masse, Ergebnis = 0) wird der 
richtige Wert angezeigt. Es werden die richtigen Werte vom Decoder 
ausgegeben.
Ich wäre dankbar wenn ihr mir helfen könntet.
1
#include <avr/io.h>
2
#define  F_CPU 3686400UL
3
#include <util/delay.h>
4
#include <avr/interrupt.h>
5
#include <stdbool.h>
6
7
uint8_t segcodeB[10];
8
bool segcodeD[10];
9
  uint8_t temp = 0;
10
int main(void)
11
{
12
  //welche Zahl welche leuchtenden Segmente
13
  //      = 0b00gfedcb
14
  segcodeB[0] = 0b00011111;
15
  segcodeB[1] = 0b00000011;
16
  segcodeB[2] = 0b00101101;
17
  segcodeB[3] = 0b00100111;
18
  segcodeB[4] = 0b00110011;
19
  segcodeB[5] = 0b00110110;
20
  segcodeB[6] = 0b00111110;
21
  segcodeB[7] = 0b00000011;
22
  segcodeB[8] = 0b00111111;
23
  segcodeB[9] = 0b00110111;
24
      //  = a
25
  segcodeD[0] = 1;
26
  segcodeD[1] = 0;
27
  segcodeD[2] = 1;
28
  segcodeD[3] = 1;
29
  segcodeD[4] = 0;
30
  segcodeD[5] = 1;
31
  segcodeD[6] = 1;
32
  segcodeD[7] = 1;
33
  segcodeD[8] = 1;
34
  segcodeD[9] = 1;
35
  //4 7seg Displays ansteuerbar machen + Element A
36
  DDRD &=~(1<<PD3)|(1<<PD4)|(1<<PD5)|(1<<PD6)|(1<<PD7);
37
        //Elemente b-g ansteuerbar machen
38
  DDRB &=~(1<<PB0)|(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB4)|(1<<PB5);
39
  PORTD|=(1<<PD2);
40
  PORTC |=(1<<PC0)|(1<<PC1)|(1<<PC2)|(1<<PC3);
41
  MCUCR=0b00000011;
42
  GICR=0b01000000;
43
  sei();
44
45
    while(1)
46
    {
47
  temp = PINC;
48
    if (temp<10)
49
    {
50
  PORTD=(1<<PD3)|(segcodeD[temp]<<PD7);
51
  PORTB=segcodeB[temp];
52
    }
53
    else
54
    {
55
    }
56
    }
57
58
}

: Bearbeitet durch User
von Fabian (Gast)


Lesenswert?

temp = PINC & 0x0F;

von Kaito C. (kaitocross)


Lesenswert?

Funktioniert, danke :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.