Skocz do zawartości

HELO LED


kocur_90

Pomocna odpowiedź

Witam.

Robię prezentację z procesorów rodziny AVR i doszedłem do momentu programowania. Chcę przedstawić przykładowy kod źródłowy 3 najpopularniejszych języków programowania, mianowicie: Bascom, C/C++ oraz Assemblera. I tutaj moja prośba. Może ktoś napisać program w Bascom'ie i Assemblerze mający zmieniać stan PORTA z wartości 0xff na wartość 0x00 z częstotliwością 1Hz. Osobiście programuje w C/C++. Prosiłbym też o powstawianie komentarzy bym wiedział mniej więcej co robi która część kodu. Osobiście dołączam kod w C/C++. Może komuś się przyda 😉

#define F_CPU 1000000	//określenie prędkości procesora
#include <avr/io.h>	//definicje rejestrów
#include <util/delay.h>	//funkcja opóźniająca

int main()	//funkcja główna
{
DDRA = 0b11111111;	//port jako wyjście
DDRB = 0b00000000;	//port jako wejście
while(1)	//pętla nieskończona
{
PORTA = 0xff;	//zapalenie LED
_delay_ms(500);	//odczekanie 0,5s
PORTA = 0x00;	//zgaszenie LED
_delay_ms(500);	//odczekanie 0,5s
}
return 0;	//zakończenie  programu
}

Z góry dzięki za pomoc.

Link do komentarza
Share on other sites

Witam

Nie programuję w asm, ale dzisiaj zrobię wyjątek 😉

Po mojemu to będzie wyglądać tak (UWAGA! nie testowane):

.include "m32def.inc"    ;typ proca, wstaw jaki uwazasz
.equ FCPU = 1000000      ;f_cpu
.def tmp1 = r20          ;rejestry pomocnicze, specjalnie
.def tmp2 = r21          ;uzywam dwoch aby przelaczac jak
.cseg                    ;najszybciej
.org 0
jmp reset
reset:  ldi tmp1, $ff    ;zaladowanie rejestrow
       ldi tmp2, 0
       out DDRA, tmp1   ;ustalenie kierunku
       out DDRB, tmp2   ;przeplywu danych
loop:   out PORTA, tmp1  ;stan wysoki na porcie A
       call delay       ;opoznienie 0.5 sek
       out PORTA, tmp2  ;czyli 500`000 cykli
       call delay       ;jesli uzywamy 1MHz
       jmp loop         ;od poczatku
delay:  ldi  R17, $0f    ;moja procedura opoznienia ;)
wait1:  ldi  R18, $37
wait2:  ldi  R19, $c9
wait3:  dec  R19
       brne wait3
       dec  R18
       brne wait2
       dec  R17
       brne wait1
       ret

Jeśli się mylę to proszę mnie poprawić 😉

  • Lubię! 1
Link do komentarza
Share on other sites

BASCOM:

$regfile = "m8def.DAT"                                      'deklaracja pliku dyrektywy wykorzytywanego procesora (tu Atmega8)
$crystal = 8000000                                          'taktowanie procesora

Config Portd = Output                                       'ustawienie wszystkich pinów portu D jako wyjścia
      Portd = &B00000000                                   'ustawienie stanu 0 na wszystkich pinach


Do                                                          'początek pętli

  Toggle Portd                                             'zmień stan portu D

  Waitms 500                                               'czekaj 500 ms

 Loop                                                      'powtórz pętlę

End                                                         'koniec

🙂

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Akurat klasa nic nie wie o programowaniu a pascal jest tak egzotyczny na uC że nie widzę sensu go przedstawiać. Potrzebowałem przedstawić te na najczęściej spotykane chociaż może wspomnę o pascalu 😉

Link do komentarza
Share on other sites

kocur_90, tak czytam Twój temat i mam taką propozycję może byś później swój artykuł/prezentacje opublikował w ramach naszego forum? Myślę, że znajdzie się dużo osób, którym to się na pewno przyda, a jak nie to choćby do przeczytania z czystej ciekawości też będzie 🙂?

Link do komentarza
Share on other sites

Jak dobrze wypadnie prezentacja to ją zamieszczę na forum. Właśnie jestem w klasie i czekam na nauczyciela 😉

@edit:

Prezentacja została odebrana pozytywnie. Może się komuś przyda jak będzie walczył o wyższą ocenę na koniec roku podobnie jak ja 😉

Wersja PPT jest trochę skopana na ostatnich slajdach

Prezentacja.zip

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.