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

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.