Danke für den Tipp, ich bin nur am rumprobieren und testen, ist nicht das direkte Ziel ne Segmentanzeige zu betreiben
Wie sich was verhält und so.
Des ist mein aktueller Code, sicherlich einiges so wie es nicht sein sollte, aber es funzt, die Zahlen laufen durch von 0 bis 9:
Code:
//----------------------------------------------------------------------
// Titel : C Grundgerüst für das myAVR-Board
//----------------------------------------------------------------------
// Funktion : Skorpion-Roboter "Intelligentes Bein"
// Schaltung : ...
//----------------------------------------------------------------------
// Prozessor : ...
// Takt : 3.6864 MHz
// Sprache : C
// Datum : 10.10.2008
// Version : 0.1
// Autor : copious
//----------------------------------------------------------------------
#define F_CPU 3686400 // Taktferquenz des myAVR-Boards
// #define zahl PORTB // Port
#define eins (PORTD = 0b10000100) & (PORTB = 0b00000010) // 1
#define zwei (PORTD = 0b11111000) & (PORTB = 0b00000010) // 2
#define drei (PORTD = 0b11101100) & (PORTB = 0b00000010) // 3
#define vier (PORTD = 0b11000100) & (PORTB = 0b00000011) // 4
#define fuenf (PORTD = 0b01101100) & (PORTB = 0b00000011) // 5
#define sechs (PORTD = 0b01111100) & (PORTB = 0b00000011) // 6
#define sieben (PORTD = 0b10001100) & (PORTB = 0b00000010) // 7
#define acht (PORTD = 0b11111100) & (PORTB = 0b00000011) // 8
#define neun (PORTD = 0b11101100) & (PORTB = 0b00000011) // 9
#define null (PORTD = 0b10111100) & (PORTB = 0b00000011) // 0
#define off (PORTD = 0b00000000) & (PORTB = 0b00000000) // aus
#include <avr\io.h> // AVR Register und Konstantendefinitionen
#include <util\delay.h> // Bibliothek mit Warteroutinen
//----------------------------------------------------------------------
main (void) // Hauptprogramm, startet bei Power ON und Reset
{
DDRD = 0b11111100; // Pin 2 - 7 (Ausgang)
DDRB = 0b00111111; // Pin 0 - 5 (Ausgang)
DDRC = 0b00000000; // Pin 0 - 5 (Ausgang)
PORTC = 0b00000011;
unsigned char i; // Variable für Datenausgabe
i=1; // Bit 0 = 1, 0b00000001
do
{
if (eins) // Wenn Bit durchgelaufen
i;
_delay_ms(10000); // kurz warten
if (zwei)
i;
_delay_ms(10000); // kurz warten
if (drei)
i;
_delay_ms(10000); // kurz warten
if (vier)
i;
_delay_ms(10000); // kurz warten
if (fuenf)
i;
_delay_ms(10000); // kurz warten
if (sechs)
i;
_delay_ms(10000); // kurz warten
if (sieben)
i;
_delay_ms(10000); // kurz warten
if (acht)
i;
_delay_ms(10000); // kurz warten
if (neun)
i;
_delay_ms(10000); // kurz warten
if (null)
i;
_delay_ms(10000); // kurz warten
}
while (true); // Schleifenende Mainloop
}
//----------------------------------------------------------------------
Lesezeichen