PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : programmieren ohne verwendung von makros



proevofreak
10.12.2008, 18:32
hallo, um die c grundlagen mit dem rp6 mal richtig zu lernen, schreibe ich jetzt einzelne programme ohne die vordefinierten makros.

jetzt hab ich mal ausprobiert mit einem taster eine led anzusteuern.
Der taster ist am Register B am Pin 0 angeschlossen. Die ist am Register
B an Pin 7 angeschlossen. hier mein programm:
irgendwo liegt noch ein programmierfehler denn die led leuchtet nicht

woran liegt es?






#include "RP6RobotBaseLib.h"


void taster(void)

{if (PINB & (1<<0)) //wenn PINB high (taster gedrückt)

{
PORTB |= (1<<7);} //PIN7 von PORTB auf high

else
{PORTB &=~ (1<<7);} //PIN7 von PORTB auf low

}

int main(void) //Hauptprogramm
{initRobotBase();

DDRB&=~ (1<<0); //PIN0 von PORTB als Eingang
DDRB |= (1<<7); //PIN7 von PORTB als Ausgang

taster();
}







gruß

radbruch
10.12.2008, 21:09
Hallo

Versuche das mal ohne RP6-Library:


#include <avr/io.h> // I/O Port definitions
//#include "RP6RobotBaseLib.h"

void taster(void)
{
if (PINB & (1<<0)) //wenn PINB high (taster gedrückt)
{
PORTB |= (1<<7); //PIN7 von PORTB auf high
}
else
{
PORTB &=~ (1<<7); //PIN7 von PORTB auf low
}
}
int main(void) //Hauptprogramm
{
//initRobotBase();

DDRB&=~ (1<<0); //PIN0 von PORTB als Eingang
DDRB |= (1<<7); //PIN7 von PORTB als Ausgang

while(1) taster(); //endlos Taster abfragen
}

Ich hoffe, das funktioniert, ich habe es nicht getestet. Beachte die Anzahl der Bytes ohne RP6-Library!

Ein Programm für einen AVR darf nie beendet werden, deshalb muss immer eine Endlosschleife am Ende ausgeführt werden.

Gruß
mic