Hi,
ich wollte mal fragen wie ich Binär, Hex und Decimal untereinander umrechne um auf die Ports vom ATmega16 zuzugreifen.
Ich kann nähmlich nicht einfach 0xFF verwenden oder so da ich PortB2-4 als Input und PB5-7 als Outp brauche.Code:outp (<bits>, <port>);
inp (<port>);
Bitte ausführlich antworten da ich praktisch erst mein erstes programm :) in C überhaupt schreibe.
mfG
Thomas
Hier noch mein gesamter Code (hoofentlich geht er):
:-k :-k :-kCode:/****************************************************************************
by Thomas Grübler
je nach taster wird eine Led geschalten
****************************************************************************/
#include <io.h> // Wir brauchen Zugriff auf die I/O's des Controllers
// Typendefinition für ein BYTE
typedef unsigned char BYTE;
typedef unsigned int WORD;
int main (void)
/****************************************************************************
Programmbeginn
*/
{
/* PortB5-7 als outp configurieren
PortB2-4 als input confifurieren
outp (<bits>, <port>);
inp (<port>);
*/
outp (0x1F, DDRB); // Port B5-7 als Ausgang
//outp (PORTB6, DDRB); // Port B5-7 als Ausgang
//outp (PORTB7, DDRB); // Port B5-7 als Ausgang
//inp (PINB2); // Port B2-4 als Eingang
//inp (PINB3); // Port B2-4 als Eingang
//inp (PINB4); // Port B2-4 als Eingang
/* Hier beginnt die Endlosschleife. Dies könnte auch als
while (1)
definiert werden. Der Ausdruck for (;;) ist jedoch in C
eine übliche Schreibweise für sowas.
*/
for (;;) {
/* Pin 2 von Port B abfragen, eine logische 0 heisst 'Taster gedrückt'.
ACHTUNG: Es muss Register PIND abgefragt werden, nicht PORTD */
if (bit_is_clear (PINB, PINB2)) {
/* Wenn der Taster Gedrückt ist dann led einschalten */
sbi (PORTB, 5); //PortB2 einschalten
sbi (PORTB, 6);
sbi (PORTB, 7);
}
}
else {
/* Taster ist nicht gedrückt */
cbi (PORTB, 5); // Leds ausschalten
cbi (PORTB, 6);
cbi (PORTB, 7);
}
}
}