[BASCOM] AVR początki

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Domel
-
Posty: 19
Rejestracja: 19 paź 2005, 12:03
Lokalizacja: Sosnowiec
Kontakt:

[BASCOM] AVR początki

Post autor: Domel » 19 maja 2008, 16:30

Witam

Mam płytke zestaw Bascom AVR oraz ksiażke Piotra Góreckiego "Mikrokontrolery dla początkujących".

Ucze sie programowac i Bascom jak najbardziej mi sie do tego nadaje.

Robie przykłady z ksiazki. Program C005b

Kod: Zaznacz cały

'        C005b  Przesuwanie bitów w rejestrze - SHIFT
Config Portb = 255       'wszystkie końcówki jako wyjścia
       Portb = &B11111111       'wszystkie segmenty wyłączone
Config Portd = &B1111100 'wszystkie końcówki jako wyjścia
       Portd = &B0000111 'właczone wszystkie wyświetlacze
Do                       'pętla nieskończona
   Waitms 200            'czekaj 200ms
  Shift Portb , Left     'przesuń o jeden bit w lewo
                            'a do najmłodszego bitu "wsuń" zero
   If Portb = &B10000000 Then Portb = &B11111111       'i od nowa
'też na króciutki ułamek sekundy zaświecany jest segment g
Loop
End

Jak można zmodyfikować taki program bo cos mi nie wychodzi.Aby po kolei najpierw przesuwał wyświetlacz pierwszy i zaświecał po kolei kazdy segment...

Potem drugi wyświetlacz potem 3 potem 4. Resetował i od nowa.

Czyli zaczynam od wyświetlacza 1 od segmentu D np i następuje ruch kołowy segmentów

Jak zrobi np kilka pełnych kółek włącza sie wyświetlacz 2 i zaczyna świecić w kołko i potem wyświetlacz 3 i 4.

Nie wiem czy dobrze to opisałem ale jak ktos załaduje ten program do AVRa powinien zrozumieć o co mi chodzi.

Program świeci od razu i zatacza koła na czterech wyświetlaczach od razu.

A ja chce po kolei...

Kod: Zaznacz cały

Do                       'pętla nieskończona
   Waitms 200            'czekaj 200ms
   If Pind.6 = 0 Then Shift , Left       'przesuń o jeden bit w lewo
                            'a do najmłodszego bitu "wsuń" zero
   If Portb = &B10000000 Then Portb = &B11111111       'i od nowa
'też na króciutki ułamek sekundy zaświecany jest segment g
Loop
End
Chciałem żeby zaczynał od PD.6

Obrazek

ale errory mi wyskakują...

Może to jest gdzieś dalej w ksiażce ale lece od poczatku i taki problem sobie wymyśliłem do rozwiazania.

jakies podpowiedzi?


pozdrawiam :)
Ostatnio zmieniony 19 maja 2008, 18:41 przez Domel, łącznie zmieniany 1 raz.

ZbeeGin

Post autor: ZbeeGin » 19 maja 2008, 18:40

Domel pisze:

Kod: Zaznacz cały

If Pind.6 = 0 Then Shift , Left 'przesuń o jeden bit w lewo
Nie podałeś co instrukcja Shift ma przesunąć. Ma sobie sama wybrać?

ps. Programy wkłada się w tagi CODE nie QUOTE.

ODPOWIEDZ