Krzysztof Wesołowski » 8051 http://kwesoly.net Programowanie, elektronika, automatyka - doświadczenia i projekty Wed, 07 Sep 2011 14:03:29 +0000 pl-PL hourly 1 Konwersje BIN/BCD w ASM 8051 http://kwesoly.net/programowanie/konwersje-binbcd-w-asm-8051/ http://kwesoly.net/programowanie/konwersje-binbcd-w-asm-8051/#comments Wed, 04 Nov 2009 23:06:03 +0000 http://kwesoly.net/?p=412 Kilka prostych procedur napisanych dla znajomych z innego kierunku:

Listing:
  1. ;poniższy kod można podmienić na prezentujący inna z załączonych procedurę.
  2.  
  3. mov R0,#0x14 ;przykladowa liczba do konwersji
  4. mov R1,#0x38 ;druga czesc liczby
  5.  
  6. lcall BCD2BIN2BYTES ;procedura konwertujaca
  7.  
  8. FINISH: ;petla zapobieajaca wykonywaniu dalszej części programu.
  9.     LJMP FINISH


Konwersja 2 bajtowa:

Listing:
  1. BCD2BIN2BYTES:
  2.     ;liczba jest w R0 i R1
  3.     ;bardziej znaczacy w R0, mniej w R1
  4.     ;wynik również tam umieścimy.
  5.     mov A,R0
  6.     lcall BCD2BIN1BYTE ;konwertujemy pierwszy
  7.     mov B, #100
  8.     MUL AB         ; wynik został pomnożony razy 100
  9.     mov R2, B
  10.     mov R3, A      ; wynik mnożenia zachowany
  11.  
  12.     mov A, R1
  13.     lcall BCD2BIN1BYTE ; konwersja mniej znaczącej części
  14.     CLR C             ; dodawania z przeniesieniem
  15.     ADDC A, R3
  16.     mov R3, A
  17.     mov A, R2
  18.     ADDC A, #0
  19.     mov R0,A
  20.     mov A,R3
  21.     mov R1, A
  22. RET
Listing:
  1. BIN2BCD1BYTE: ;konwersja BIN2BCD na jednym bajcie - pochodzi z datasheetu - proste i zrozumiałe
  2.     mov B, #10
  3.     DIV AB
  4.     SWAP A
  5.     ADD A, B
  6. RET
  7.  
  8. BCD2BIN1BYTE: ; i w druga stronę
  9.     mov R7, A
  10.     ANL A,#0xF0   ; zostawiamy tylko cyfrę dziesiątek
  11.     SWAP A
  12.     mov B, #10
  13.     MUL AB
  14.     XCH A, R7       ; zamiana miejscami
  15.     ANL A, #0x0F  ; cyfra jedności
  16.     ADD A, R7
  17. RET

Komentarze wyjaśniają mniej typowe rzeczy, zaś działanie pozostałych sprowadza się praktycznie do opisu działania instrukcji. W razie niezrozumienia jakiegoś szczegółów można zapytać na mailu komentarzu.

]]>
http://kwesoly.net/programowanie/konwersje-binbcd-w-asm-8051/feed/ 2
Symulacja działania mikrokontrolera opartego o rdzeń 8051 http://kwesoly.net/programowanie/symulacja-mikrokontrolera-rdzen-8051/ http://kwesoly.net/programowanie/symulacja-mikrokontrolera-rdzen-8051/#comments Wed, 04 Nov 2009 21:40:56 +0000 http://kwesoly.net/?p=409 Do samodzielnych eksperymentów z wspomnianym uC (nie na sprzęcie w laboratorium czy własnej płytce) przyda się nam jeszcze symulator rdzenia 8051. Z wielu dostępnych symulatorów, w większości jednak starych lub nie w pełni funkcjonalnych wybrałem moim zdaniem najlepszy, napisany w Javie, pozwalający od razu przetestować współpracę w podstawowej konfiguracji sprzętowej (P1 podłączony do linijki diodowej/wyświetlacza 7-segmentowego). Ponadto umożliwia on pisanie bezpośrednio w oknie kodu ASM, a ewentualne błędy wskazuje znacznie celniej niż stare programy asemblujące kod.

Wadą symulatora jest fakt, iż znalazłem go w formacie JAR, co czasem sprawia problemy z uruchomieniem (kilka osób zgłaszało iż  musiało zainstalować od nowa JRE).

Symulator rdzenia '51

Wkrótce zamieszczę proste programy napisane w tym symulatorze, będzie wtedy okazja dokładniej zerknąć w akceptowaną przez niego składnię.

]]>
http://kwesoly.net/programowanie/symulacja-mikrokontrolera-rdzen-8051/feed/ 0
Assembler 8051 – materiały do nauki, pierwsze sprawozdanie. http://kwesoly.net/programowanie/assembler-8051-materialy-nauka-sprawozdanie/ http://kwesoly.net/programowanie/assembler-8051-materialy-nauka-sprawozdanie/#comments Wed, 04 Nov 2009 21:30:11 +0000 http://kwesoly.net/?p=404 W ramach przedmiotu Technika Mikroprocesorowa (czy coś podobnego:)) na zajęciach zaczęliśmy zabawę z uC opartym o rdzeń '51, produkowany przez firmę Atmel. Ze względu na małą ilość spójnych informacji na temat programowania i działania tego uC którą udało się znaleźć postanowiłem zebrać i opublikować informację umożliwiające "rozpoczęcie przygody" :).

Po pierwsze jako źródło informacji na temat samego rdzenia poza książkami (np. dobrą pozycją pana Rydzewskiego) polecam:
Atmel 8051 Microcontrollers Hardware Manual (oryginalny plik na serwerze Atmela)
Atmel 8051 Microcontrollers Hardware Manual (lokalna kopia na tej stronie)

Zaś więcej szczegółów na temat konkretnych mikrokontrolerów można znaleźć w Datasheetach producentów. Dla dostępnych w budynku b1, s. 315 płytek deweloperskich sa to układy AT89S51 Atmela:
AT89S51 Datasheet (oryginalny plik na serwerze Atmela)
AT89S51 Datasheet (lokalna kopia na tej stronie)

Poniżej zamieszczam link do sprawozdania z  drugiego ćwiczenia (pierwsze polegało na mruganiu diodą w pętli głównej, niestety nie byłem na nim obecny). Zawiera ono pierwszy program, przygotowany koncepcyjnie/na symulatorze przeze mnie i Kubę Tutro (ale napisany na zajęciach), oraz drugi napisany już na zajęciach prezentujący działanie PWM w celu regulacji jasności świecenia diod. Oba programy pisałem na zajęciach wspólnie z Pawłem Górką, on również uzupełnił komentarze i przygotował sprawozdanie w formacie PDF.

Sprawozdanie z laboratorium 8051. Paweł Górka, Krzysztof Wesołowski

]]>
http://kwesoly.net/programowanie/assembler-8051-materialy-nauka-sprawozdanie/feed/ 0