Forum: Mikrocontroller und Digitale Elektronik 74 hc 595 - C - reagiert nicht


von Fabian G. (deloz)


Lesenswert?

Hallo,

ich ärgere mich jetzt schon ein Weilchen mit der Porterweiterung herum.

Findet jemand den Fehler?

Ich hab mich schon durch etliche Beiträge hier, sowie das Datenblatt 
gelesen und bin nicht wirklich weiter...

Den Code von hier: 
http://www.mikrocontroller.net/articles/Porterweiterungen habe ich noch 
nicht ausprobiert, wollte das ganze etwas "kompakter" halten.

Danke!
1
int main() {
2
  uint8_t si;   // an:  PB 00  1
3
  int g;        //      PB 01  2
4
  int sck;     //       PB 02  4  
5
  int sclr;    //       PB 03  8
6
  int rck;     //       PB 04  16
7
8
9
  int i;      //laufvariable  
10
11
12
  DDRB = 0x00; 
13
  PORTB = 0x00;
14
  
15
  
16
  _delay_ms(1000);
17
18
  si = 0xf0;      //gewünschte ausgabe
19
  
20
  
21
  g = 1;                  //output disable
22
  PORTB |= (0x02 & g);  
23
  PORTB |= (0x08 & 0);    //shift register cleared
24
  PORTB |= (0x08 & 1);    //sclr - aufnahmebereit
25
26
  for(i=0; i<8; i++){
27
    PORTB |= (0x01 & (si >> (7 - i))); 
28
    
29
    sck = 1;
30
    PORTB |= (0x04 & sck); 
31
32
    _delay_us(5); 
33
    
34
    sck = 0;  
35
    PORTB |= (0x04 & sck); 
36
37
38
    }
39
 
40
  rck = 1;
41
42
  _delay_us(5);
43
44
  rck = 0; 
45
  PORTB |= (0x10 & rck); 
46
47
  g = 0; 
48
  PORTB |= (0x02 & g);
49
50
  _delay_ms(500); 
51
52
  while(1){
53
  ;
54
55
56
  }  
57
58
}

von Uwe N. (ulegan)


Lesenswert?

Schalte deinen Port auf Ausgabe, nicht auf Eingabe.
DDRB=0xff;

von Uwe N. (ulegan)


Lesenswert?

nochwas:
Bits löschen geht nicht mit
  PORTB |= (0x04 & sck);
sondern
  PORTB &= ~(0x04 & sck);

von g457 (Gast)


Lesenswert?

> g = 1;                  //output disable
> PORTB |= (0x02 & g);
> PORTB |= (0x08 & 0);    //shift register cleared
> PORTB |= (0x08 & 1);    //sclr - aufnahmebereit

..ähm.. ich möchte - ohne Dir zu nahe treten zu wollen - dringend 
empfehlen, ein C-Buch zu lesen. Oder den Code anzusehen, den Du oben 
schon verlinkt hast. So wird das nix..

HTH

von Fabian G. (deloz)


Lesenswert?

kopfgegenwandhau

memo an mich selbst: programmieren frühmorgens ist nicht gut.

deswegen werde ich morgen mal das OR zum löschen eines bits überreden ;)

edit: was wäre denn ein richtig gutes c-buch?

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.