Hallo,
mein folgendes Programm zur Schieberegisteransteuerung funktioniert
nicht:
1 | #define SCL PD3 //Reset PD
|
2 | #define SCK PD2 //Schiebetakt
|
3 | #define RCK PD1 //Speichertakt
|
4 | #define SER PD0 //Serieller Dateneingang
|
5 |
|
6 | #define F_CPU
|
7 | #include <avr/io.h>
|
8 | #include <stdint.h>
|
9 |
|
10 | uint8_t ShiftWert; //Wert auszushiften
|
11 |
|
12 | void shiftOut(uint8_t data){
|
13 | PORTD &= ~(1<<RCK);
|
14 | for (int i=0; i<8; i++)
|
15 | {
|
16 | if (data & 0b1000000){
|
17 | PORTD |= (1<<SER);
|
18 | }
|
19 | else{
|
20 | PORTD &= ~(1<<SER);
|
21 | }
|
22 |
|
23 | PORTD |= (1<<SCK);
|
24 | PORTD &= ~(1<<SCK);
|
25 | data = data<<1;
|
26 | }
|
27 | PORTD |= (1<<RCK);
|
28 | }
|
29 |
|
30 | int main(void)
|
31 | {
|
32 | DDRD |= (1<<SCL) | (1<<SCK) | (1<<RCK) | (1<<SER);
|
33 | PORTD |= (1<<SCL); //Reset deaktiviert
|
34 |
|
35 | while(1)
|
36 | {
|
37 | ShiftWert = 0b11111111;
|
38 | shiftOut(ShiftWert);
|
39 | }
|
40 | }
|
Könnt ihr mir bitte sagen, ob mein Fehler in der Software liegt?
Danke schon einal im voraus,
MfG Bene