| Author |
Message
|
tomekel Poziom 9

Joined: 07 Feb 2003 Posts: 32
|
#1
14 Nov 2004 02:38 Prosty programik w C, problem |
|
|
|
Napisałem w CodeVisionAVR program, który powinien gasići zapalać ledy podpięte do jednego portu ale nie działa i nie wiem dlaczego
| Code: |
#include <90s2313.h>
void czekaj(unsigned long pt)
{
unsigned char a;
for(;pt>0;pt--)
{
for(a=255;a!=0;a--);
}
}
void main(void)
{
unsigned char licznik;
while(1)
{
for(licznik=0;licznik<10;licznik++)
{
PORTB=0xff;
czekaj(3500);
PORTB=0x00;
}
}
}
|
Porszę o pomoc
|
|
| Back to top |
|
 |
yarpen2 Poziom 18

Joined: 10 Apr 2003 Posts: 455 Location: Śląsk (Piekary Śląskie)
|
#2
14 Nov 2004 09:58 Re: Prosty programik w C, problem |
|
|
|
trzeba chyba skonfigurować wyprowadzenia portu B w trybie wyjścia
DDRB=0xff;
| Code: |
#include <90s2313.h>
void czekaj(unsigned long pt)
{
unsigned char a;
for(;pt>0;pt--)
{
for(a=255;a!=0;a--);
}
}
void main(void)
{
unsigned char licznik;
DDRB=0xff;
while(1)
{
for(licznik=0;licznik<10;licznik++)
{
PORTB=0xff;
czekaj(3500);
PORTB=0x00;
}
}
}
|
|
|
| Back to top |
|
 |
tomekel Poziom 9

Joined: 07 Feb 2003 Posts: 32
|
#3
14 Nov 2004 10:09 Prosty programik w C, problem |
|
|
|
Niestety dalej nie działa , diody nie mrugają( nie świecą)
Czy mógłby mi tu napisą program który mrugał by diodą?
|
|
| Back to top |
|
 |
Google

|
#
14 Nov 2004 10:09 |
|
|
|
|
|
| Back to top |
|
 |
gmp Poziom 16

Joined: 12 Jun 2003 Posts: 337 Location: Wroclaw
|
#4
14 Nov 2004 11:31 Re: Prosty programik w C, problem |
|
|
|
| tomekel wrote: |
Niestety dalej nie działa , diody nie mrugają( nie świecą)
Czy mógłby mi tu napisą program który mrugał by diodą? |
A jak masz podlaczona diode? Wez ustaw RESET procesora na sta niski, i podaj na nozke do ktorej podalczona jest dioda najpierw L a potem H (z zasialnia procesora) jesli swieci to OK i progra MUSI dzialc przy dobrym procesorze(no i dobrze ustawionych FUSE),
Poza tym wewnetrzna petla 'for' w funkcji main nie ma najmnijeszego sensu.
|
|
| Back to top |
|
 |
yarpen2 Poziom 18

Joined: 10 Apr 2003 Posts: 455 Location: Śląsk (Piekary Śląskie)
|
#5
14 Nov 2004 11:44 Re: Prosty programik w C, problem |
|
|
|
sorry !
teraz powinno działać:
#include <90s2313.h>
void czekaj(unsigned long pt)
{
unsigned char a;
for(;pt>0;pt--)
{
for(a=255;a!=0;a--);
}
}
void main(void)
{
unsigned char licznik;
DDRB=0xff;
while(1)
{
for(licznik=0;licznik<10;licznik++)
{
PORTB=0xff;
czekaj(3500);
PORTB=0x00;
czekaj(3500); <--- jak tego nie było to zaraz wracał do poprzedniego stanu
}
}
}
|
|
| Back to top |
|
 |
tomekel Poziom 9

Joined: 07 Feb 2003 Posts: 32
|
#6
14 Nov 2004 13:33 Prosty programik w C, problem |
|
|
|
Wielkie dzięki, oczywiście że teraz działa.
|
|
| Back to top |
|
 |
Google

|
#
14 Nov 2004 13:33 |
|
|
|
|
|
| Back to top |
|
 |
tomekel Poziom 9

Joined: 07 Feb 2003 Posts: 32
|
#7
14 Nov 2004 14:42 Re: Prosty programik w C, problem |
|
|
|
I mam następny problem
Chcę uzyskać efekt "płynącego światełka" czyli diody zaświecają się jena po drugiej.
Napisałem takie coś:
| Code: |
c=01111111;
for (licznik=0;licznik<7;licznik++)
{
d=(c>>1);
PORTB=c;
czekaj(1500);
}
|
ale całkowicie głupoty to wyświetla
Jak to zrobić??
|
|
| Back to top |
|
 |
Google

|
#
14 Nov 2004 14:42 |
|
|
|
|
|
| Back to top |
|
 |
yarpen2 Poziom 18

Joined: 10 Apr 2003 Posts: 455 Location: Śląsk (Piekary Śląskie)
|
#8
14 Nov 2004 14:43 Re: Prosty programik w C, problem |
|
|
|
super !
to teraz zrób linijkę swietlną ( niech np. świeci się raz b.0 potem b.1 itd. a potem z powrotem)
spróbuj
|
|
| Back to top |
|
 |
tomekel Poziom 9

Joined: 07 Feb 2003 Posts: 32
|
#9
14 Nov 2004 15:01 Prosty programik w C, problem |
|
|
|
Napisałem niby program który zaświeća od b.0 do b.7 ale to nei działa
czy mogę tak nadawać wartości na port?
c=00000000;
portb=c;
|
|
| Back to top |
|
 |
yarpen2 Poziom 18

Joined: 10 Apr 2003 Posts: 455 Location: Śląsk (Piekary Śląskie)
|
#10
14 Nov 2004 15:47 Re: Prosty programik w C, problem |
|
|
|
tak na szybko bo zaraz wychodzę:
| Code: |
c=0xef;
for (licznik=0;licznik<7;licznik++)
{
c=(c>>1); <-- tylko co to robi ? ja bym dał wstawkę asemblerową do przesuwania bo codevision za dobrze nie znam
PORTB=c;
czekaj(1500);
}
|
ale głowy to ja za to nie dam
|
|
| Back to top |
|
 |