PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC16F877-20/P tut garnix



GoTo
29.04.2005, 10:54
Hiho,

ich habe einen PIC16F877 mit 20MHz. Diesen hab ich mit ICPROG mit einem beispiel programm beschrieben, sodass die LED an RB0 eigentlich mit 1Hz blinken sollte. Ich habe den PIC auch verified. Die Vdd ist bis auf 1mV stabil! Der Wachhund ist aus und kann also net stören! Ich habe dieses Beispiel Programm genommen:



void pause()
{
OPTION = 3;
TMR0 = 99;
while (TMR0);
}

void main()
{
TRISB = 0b.1111.1110;
bit out @ PORTB.0;

for(;;)
{
out = 1;
for(char i = 0; i < 1000; i++)
{
pause();
}
out = 0;
for(char i = 0; i < 1000; i++)
{
pause();
}
}
}

Das Problem: Die LED, die an RB0 angeschlossen ist, leuchtet garnicht!!! Woran um alles in der Welt liegt das?????

P.S.:Ich habe keine Erfahrung mit µC's. Das sind alles meine ersten Versuche!

Also schon mal DANKE!

mfg BuschenSen

PicNick
29.04.2005, 11:20
Fang die for-schleife mal mit "out = 0" an., damit die LED mal leuchtet.

Ich mißtraue deiner pause-funktion. Laß den Aufruf "pause();" mal weg.
wie ist den "i" definiert ? kann 1000 überhaupt erreicht werden ?

Mobius
29.04.2005, 17:24
also, dein Fehler liegt in der Ersten (und damit auch 2.) for-schleife... Eigentlich gaaanz einfach und PickNick hatte es auch gefunden ;). Ein char (=byte) kann nur von 0 bis 255 zählen, dann läuft er über, also zählt wieder von 0 los. Ist eine einfache Unendlichschleife, d.h. da kommst du erst raus, wenn du deinem PIC den Saft wegnimmst um ihn wieder in den Brenner zu stecken ;)

Also, die 1000 mal auf 255 ändern und probieren. Wenn es dann noch immer nicht geht, guck dir mal die Pause an, sollte aber eigentlich so gehen...
MfG
Mobius