Forum: Mikrocontroller und Digitale Elektronik Code umschreiben in AVR oder ist dieser Code kompatibel


von pfoste (Gast)


Lesenswert?

Der Max7219 soll damit angesteuert werden vielleicht gibt es hier auch 
Beispielprogramme nur noch keine gefunden.




Programm für CCS

Wie  muss der Code aussehen in AVR  hab davon keine Ahnung.

Routine AUSGABE():
void AUSGABE(char adresse,char wert)
{
char x;
// Bevor die Daten übertragen werden, wird zuerst der PIN LOAD auf LOW 
gesetzt.
// Die Daten beginnen mit dem Bit D15, also MSB
output_low(LOAD);
// Die Datenbits D15-D12 werden übertragen
// Da diese nicht wichtig sind, wird eine 0 übermittelt
for (x=0;x<4;x++)
{
output_low(DATA);
output_high(CLK);
output_low(CLK);
}
// Die Datenbits D11-D8 beinhalten die Registeradresse des MAX7219
for (x=4;x>0;x--)
{
if (bit_test(adresse,x-1)) output_high(DATA);
else output_low(DATA);
output_high(CLK);
output_low(CLK);



Routine AUSGABE_INIT():

void ausgabe_init()
{
ausgabe(0x0b,0x04); // Hier wird die Anzahl der Digits angegeben (5 
Digits)
ausgabe(0x0c,0x01); // Displays werden auf Normal-Betrieb gesetzt (kein 
Shutdown)
ausgabe(0x09,0xff); // Displays werden auf Normal-Betrieb gesetzt (kein 
Displaytest)
ausgabe(0x0a,0x00); // Die Helligkeit der Digits wird hier eingestellt
}

}
// Die Datenbits D7-D0 sind die Daten an den MAX7219
for (x=8;x>0;x--)
{
if (bit_test(wert,x-1)) output_high(DATA);
else output_low(DATA);
output_high(CLK);
output_low(CLK);
}
// Zum Schluß wird der PIN LOAD auf HIGH gesetzt, damit ist die
// Datenübertragung zu Ende
output_high(LOAD);
}


http://www.bobhobby.com/wp-content/uploads/2008/04/physical-hit-counter-interface.GIF 
das ist der Schaltplan den ich benutze


Und zur Ansteuerung benutze ich das MYAVR LPT Board das auch einen RS232 
Anschluss hat

von Gregor B. (gregor54321)


Lesenswert?

Ich hab den C-Code (die Programmiersprache heißt "c") mal 
übersichtlicher formatiert. Leider ist er syntaktisch unbrauchbar. (Du 
hast nicht alles kopiert). Solltest Du wirklich Interesse daran haben, 
etwas in einen Mikroprozessor zu programmieren, dann wirst Du mit Hilfe 
von http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial das alles 
ganz allein hinbekommen können.
1
//Routine AUSGABE():
2
void AUSGABE(char adresse,char wert)
3
{
4
  char x;
5
  // Bevor die Daten übertragen werden, wird zuerst der PIN LOAD auf LOW   gesetzt.
6
  // Die Daten beginnen mit dem Bit D15, also MSB
7
  output_low(LOAD);
8
  // Die Datenbits D15-D12 werden übertragen
9
  // Da diese nicht wichtig sind, wird eine 0 übermittelt
10
  for (x=0;x<4;x++) {
11
    output_low(DATA);
12
    output_high(CLK);
13
    output_low(CLK);
14
  }
15
  // Die Datenbits D11-D8 beinhalten die Registeradresse des MAX7219
16
  for (x=4;x>0;x--)
17
  {
18
    if (bit_test(adresse,x-1)) output_high(DATA);
19
    else output_low(DATA);
20
21
    output_high(CLK);
22
    output_low(CLK);
23
24
25
26
//  Routine AUSGABE_INIT():
27
    void ausgabe_init() {
28
      ausgabe(0x0b,0x04); // Hier wird die Anzahl der Digits angegeben (5Digits)
29
      ausgabe(0x0c,0x01); // Displays werden auf Normal-Betrieb gesetzt (keinShutdown)
30
      ausgabe(0x09,0xff); // Displays werden auf Normal-Betrieb gesetzt (keinDisplaytest)
31
      ausgabe(0x0a,0x00); // Die Helligkeit der Digits wird hier eingestellt
32
    }
33
  }
34
  // Die Datenbits D7-D0 sind die Daten an den MAX7219
35
  for (x=8;x>0;x--)   {
36
    if (bit_test(wert,x-1)) output_high(DATA);
37
    else output_low(DATA);
38
    output_high(CLK);
39
    output_low(CLK);
40
  }
41
  // Zum Schluß wird der PIN LOAD auf HIGH gesetzt, damit ist die
42
  // Datenübertragung zu Ende
43
  output_high(LOAD);
44
}

Grüße, Gregor

von Gregor B. (gregor54321)


Lesenswert?

Übrigens gibt's das ganze Projekt für den AVR ATiny25 hier:
http://www.bobhobby.com/2008/04/22/usb-physical-hit-counter-based-on-avr-attiny25/

Einfach nachbauen, ATiny programmieren, PC-Software (!) installieren und 
nach der Fehlersuche freuen oder heulen...

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.