Dydaktyczny System Mikroprocesorowy 51
DSM-51 to urządzenie zaprojektowane z myślą o nauce elektroniki w szkołach średnich. Na zajęciach można się pobawić takim urządzeniem. Na kompie w notatniku piszesz kod, kompilujesz, przesyłasz do DSM i obserwujesz. Miła odmiana po symulatorach na kompie. Posiadam pliki źródłowe z lekcji, które można ściągnąć poniżej.
Ściągnij ćwiczenia DMS-51
Problem polega na tym, że nie każdy ma w domu zestaw DSM-51, więc jak się tu nauczyć? Proponuję kolejny symulator, o dziwnej nazwie.
Ściągnij Jagodę ;)
Skoro już zamieściłem tę Jagodę tutaj, to warto coś napisać. Programik ten doskonale zastępuje DSM-51. Wejdz w menu debugger i włącz następujące elementy: dioda i brzęczyk, wyświetlacz 7-segmentowy, wyświetlacz LCD, klawiatura matrycowa, klawiatura sekwencyjna. Jeżeli masz mały ekran to możesz się ograniczyć do elementów potrzebnych przy danym ćwiczeniu. Następnie tworzysz nowy plik (Ctrl+N), przeklejasz, lub piszesz własny program, kompilujesz (F9) i uruchamiasz (Ctrl+F9). Sprawdziłem kilka ćwiczeń z lekcji i wszystkie działały poprawnie. Ale wrócę już do tego, co dzieje się na zajęciach.
Kompilacja i uruchomienie
- Napisz program w notatniku i zapisz go jako "nazwa.ASM".
- Skompiluj kod programem "dsm51ass.exe" pisząc w linii poleceń Total Commandera lub DOSa komendę "dsm51ass.exe nazwa.ASM".
- Poczytaj plik wynikowy "nazwa.LST"
- Drugi plik wynikowy "nazwa.HEX" wyślij do DSM-51 używając załączonego programu
- Jeżeli nie ma błędów, to twój program już wykonuje się na urządzeniu.
Komendy
Ten podtytuł pozostanie pusty. Powód na dole strony.
Program I
Zadanie pierwsze polegało na zapaleniu diody TEST. Dioda zapali się, gdy napotka stan niski na linii siódmej portu pierwszego.
LJMP ZAPAL ZAPAL: CLR P1.7 KONIEC: LJMP KONIEC
; skok do etykiety ZAPAL ; etykieta ZAPAL ; zerowanie 7 linii 1 portu, czyli TEST ; etykieta KONIEC ; skok - pułapka
Teraz program z użyciem opóźnienia.
Program II
Mrugająca dioda test.
DIODA EQU P1.7 LJMP START START: CLR DIODA MOV A,#2 LCALL DELAY_100MS SETB DIODA MOV A,#2 LCALL DELAY_100MS LJMP START
; przypisanie nazwy dla linii 7 portu 1 ; skok do etykiety START ; etykieta START ; zeruj, czyli zapal TEST ; decymalnie 2 do akumulatora ; podprogram z EPROMu pobierze 2 z akumulatora pomnoży przez 100ms i tyle poczeka ; ustaw, czyli zgaś TEST ; decymalnie 2 do akumulatora ; podprogram z EPROMu pobierze 2 z akumulatora pomnoży przez 100ms i tyle poczeka ; od nowa
Najważniejsze w tym programie jest odwołanie się do podprogramu z pamięci EPROM. Ten podprogram nie robi nic, czeka 100 milisekund razy zawartość akumulatora. Gdyby nie opóźnienie, dioda test mrugałaby za szybko.
Program III
Wyświetlacze siedmiosegmentowe. Program ma za zadanie wyświetlić napis "-LIPA-" na tychże wyświetlaczach.
WLACZ EQU P1.6 PAUZA EQU 01000000B ZNAKL EQU 00111000B ZNAKI EQU 00110000B ZNAKP EQU 01110011B ZNAKA EQU 01110111B EKRAN EQU 30H MOV EKRAN,#PAUZA MOV EKRAN+1,#ZNAKA MOV EKRAN+2,#ZNAKP MOV EKRAN+3,#ZNAKI MOV EKRAN+4,#ZNAKL MOV EKRAN+5,#PAUZA PETLA_WYSWIE: MOV R0,#EKRAN MOV R2,#7 MOV R3,#00000001B PETLA: SETB WLACZ MOV R1,#CSDS MOV A,R3 MOVX @R1,A RL A MOV R3,A MOV R1,#CSDB MOV A,@R0 MOVX @R1,A INC R0 CLR WLACZ MOV A,#1 LCALL DELAY_MS DJNZ R2,PETLA SJMP PETLA_WYSWIE
Ten artykuł jest niekompletny - na pierwszych zajęciach połowę czasu pisałem kolokwium z AVSimZ80, a trzecie zajęcia się nie odbyły. Jeżeli posiadasz dobre sprawozdanie na ten temat, napisz do mnie na Gadu-Gadu: 4875413.