Technical Site

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</

Ś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ę ;)

Ś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

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.

-LIPA- ;)
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.