PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Aller Anfang ist schwer :-)



rauf81
23.11.2011, 16:30
Hallo zusammen.

Ich versuche ein Schieberegister 74HC595 gerade mit daten zu füllen.
Ich treibe damit eine 7 Segment Anzeige.
Meine Schaltung ist IO mit bascom funktioniert sie.
Soviel mal vorab.
Da ich mich momentan in C einarbeite benutze ich das Beispiel aus Rn Wissen für Soft SPI.
Und wie Ihr euch sicher denken könnt habe ich so meine Probleme.
Code hänge ich mal an, würde mich freuen wenn mal einer darauf schauen könnte und mir die Fehler veranschaulicht :-)

#include <avr/io.h>
#include "serpa.h"

unsigned char serpa[SERPA_SIZE];

int main(void){

void serpa_init (void)
{

//**********************************************

DDRB |= (1<<DDB0) |(1<<DDB1)|(1<<DDB2);

//**********************************************

PORTB |=(1<<PINB1); //SCK auf Hi_Level
PORTB |=(1<<PINB2); //RCK auf HI_Level

//**********************************************
}

void serpa_out (void)
{
unsigned char anz = SERPA_SIZE;
unsigned char* serp = serpa+SERPA_SIZE;
serpa[0] = 0xFF;

do
{
unsigned char bits;
unsigned char data = *--serp;

for (bits = 8; bits > 0; bits--)
{
PORTB &= ~(1<<PINB0);//SER Reset
if (data & 0x80)
{
PORTB |=(1<<PINB0);//SER Set
}
data<<1;
PORTB &= ~(1<<PINB1);//Strobe an SCK schiebt Daten im Gaensemarsch
PORTB |=(1<<PINB1); //um 1 Position weiter durch alle Schieberegister
}
}
while (--anz > 0);

PORTB &= ~(1<<PINB2);
PORTB |=(1<<PINB2);

}
}

Grüße Flo

sternst
23.11.2011, 20:34
Code hänge ich mal an, würde mich freuen wenn mal einer darauf schauen könnte und mir die Fehler veranschaulicht 1) Man definiert in C keine Funktionen innerhalb anderer Funktionen.

2) Dein main() ist leer, dein Programm macht also rein gar nichts.

rauf81
23.11.2011, 23:46
Hallo sternst

Danke für die Antwort.
Das Programm macht nichts hast recht habe es im Simulator gesehen.
Wieso ist das so?
In den geschweifent Klammern steht doch der gewünschte auszufürende Code.

1) Man definiert in C keine Funktionen innerhalb anderer Funktionen.
Also eine Funktion ist doch zusammengefaster Programmcode der je wie ich ihn definiere einen Wert zurück gibt bzw nicht zurück gibt.

sternst
24.11.2011, 01:24
Das Programm macht nichts hast recht habe es im Simulator gesehen.
Wieso ist das so?
In den geschweifent Klammern steht doch der gewünschte auszufürende Code.Du definierst damit aber nur zwei neue Funktionen. Du rufst diese Funktionen niemals auf, und führst damit ihren Code auch niemals aus.

Also wenn dir solch grundlegende Sachen nicht klar sind, dann besorge dir erst mal geeignetes Lehrmaterial (am besten ein Buch, aber Online-Tutorial geht notfalls auch), und arbeite das vernünftig durch. Man lernt eine Programmiersprache nicht mal eben so, indem man mit kopierten Programmschnipseln einfach drauflos probiert.

rauf81
24.11.2011, 07:10
Denk du hast recht.
Muß mir zuerst die grundlagen aneignen. Damit wir auch die gleiche Sprache sprechen :-)
Dieses Unterfangen führt zu nix.

Grüße