Hallo Ralf,
Assembler ist super für den Einstieg. Bei Sprut gibt es auch gleich das richtige Beispiel zu Deiner Anwendung, sogar mit dem 10F:
http://www.sprut.de/electronic/pic/prog ... k_10f.html
Falls Du mal in C "reinschnüffeln" möchtest, findest Du ein Blinkiprogramm im Anhang mit (kurzen) Kommentaren. Ansonsten bitte einfach Fragen, falls die Kommentare unverständlich.
Für Dein akutes Problem: Ich weiß zwar nicht warum Du Dich so gegen den 555er sträubst, das wird sicher seine Gründe haben, aber mit 47k, 47k und 100µF + Standardbeschaltung könntest Du sehr einfach und platzsparend Deine Schaltung aufbauen. Laut
http://www.elektronik-kompendium.de/sit ... 310131.htm bekommt man ein ton von 6,5141s und ein toff von 3,257s, das währe doch eine gute Basis zum feintunen
Also wenn Du wirklich erwägst Programmieren zu lernen und das hardwarenah, dann würde ich Dir ehrlich gesagt nicht empfehlen das vorher auf dem PC zu beginnen. Programmieren auf einem Betriebssystem fern jeder Hardware (naja etwas übertrieben

) mit Heap, Stack und Multitasking ist wieder eine ganz andere Welt.
Auf dem Controller benutzt man direkt Register und Interruptvektoren, Hardwarepins, etc.
und Du must u. U. auf den Speicherbedarf achten und ggf. Speicherbänke umschalten das gibt´s beim PC nicht so häufig
Schaden kann es auf jeden Fall auch nicht wenn Du mit der PC-Programmierung Erfahrungen machst. So ein komplettes µC Starterkit ist eine wirklich gute Grundlage mit vielen Lehrbeispielen zum leichten Einstieg, sowohl Assembler als auch C.
Viele Grüße,
Daniel
P.s.: Leider durfte ich keine .c oder .txt Dateien anfügen, deshalb nachfolgend der Code:
// Hinweis: Die Notation wie z. B. PORTD &= (~0x01); oder PORTD |= 0x02; ist nur eine (ANSI-Konforme) Art Bit´s zu löschen oder zu setzen.
// In der Funktion delay wird Zeit durch sinnfreies Zählen verbraten. In der Praxis nutzt man ein Timer-Modul das jeder PIC bereit
// stellt. Der Timer ist in Hardware realisiert, sodass dann die Software nahezu unbeeinflusst abgearbeitet werden kann.
// Es funktioniert so aber auch und ist leichter zu verstehen.
#include <P18F8722.h> // Verweis auf Datei P18F8722.h, welche prozessorspezifische Informationen definiert und bereitstellt
void delay (unsigned int hundmsecs); // Funktionsprototyp, d. h. die Funktion delay wird "bekannt gemacht"
void main (void) // main ist DIE Funktion die immer zuerst aufgerufen wird.
{
TRISD &= (~0x01); // Im TRIS Register wird eingestellt, ob ein Pin ein Ein- oder Ausgang ist
TRISD &= (~0x02); // Hier TRIS für PORTD, Bit gelöscht also Ausgang für LED
PORTD &= (~0x01); // Dann Ausgang auf low (0V setzen)
PORTD &= (~0x02); // und nochmal für LED2
while (1) // Alles was in der nachfolgenden Klammer steht, wird wiederholt solange 1 größer 0 ist, also immer
{
PORTD &= (~0x01); // LED1 aus
PORTD |= 0x02; // LED2 an
delay (3000); // Funktion delay mit dem Übergabeparameter 3000 (msek) aufrufen
PORTD |= 0x01; // LED1 an
PORTD &= (~0x02); // LED2 aus
delay (5000); // Funktion delay mit dem Übergabeparameter 5000 (msek) aufrufen
}
} // Ende der Funktion "main"
void delay (unsigned int hundmsecs) // Funktionskopf. Int = 16 Bit = 65535 Werte ohne Vorzeichen (unsigned)
{
unsigned int i; // Variable i wird deklariert
unsigned int i2 = hundmsecs; // Variable i2 wird deklariert, gleichzeitig wird der Übergabeparameter zugewiesen
while (i2) // die nachfolgenden Klammern werden solange durchlaufen wie i2 größer 0 ist
{
i = 0x00FF; // Der Variablen i wird der Wert 0x00FF zugewiesen (muß auf die Oszillatorfrequenz angepasst werden)
while (i) // die nachfolgenden Klammern werden solange durchlaufen wie i größer 0 ist
{
i--; // i wird um 1 erniedrigt. Weil i davor 0x00FF (255) zugewiesen wurde läuft die Schleife 255 mal durch
}
i2--; // i2 wird um 1 erniedrigt. Weil i2 davor hundmsecs zugewiesen wurde läuft die Schleife x mal 255 durch
}
}