-Na wyposażeniu Pracowni Elektronicznej znajdują się m.in. systemy mikroprocesorowe do nauki programowania. Producentem tych urządzeń jest firma MicroMade

Tu znajdziesz więcej informacji dotyczących Dydaktycznego Systemu Mikroprocesorowego DSM-51.
Poniżej przedstawiono przykładowy program stworzony w ramach lekcji Pracowni Mikroprocesorowej. Ma on na celu wykorzystanie wyświetlacza LED bez korzystania z wewnętrznych procedur systemu DSM-51.
Niektóre warunki, jakie musi spełnić procedura obsługi wyświetlacza wielocyfrowego LED:
- sterowanie sekwencyjne (w danym momencie świeci tylko jedna z cyfr),
- częstotliwość odświeżania wyświetlacza powinna wynosić kilkadziesiąt Hz, aby nie występowało zjawisko migotania,
- czas świecenia kolejnych cyfr musi być identyczny, aby ich jasność była jednakowa,
- w momencie zmiany numeru świecącej cyfry, najpierw należy wygasić poprzednią, co uchroni nas przed pojawianiem się tzw. „duchów” (słabo świecących segmentów, które powinny być wygaszone)
Program obsługuje wyświetlacz rzeczywisty, zatem należy uwzględnić w nim fakt, że po włączeniu zasilania lub sprzętowym resecie, rejestry robocze (tzw. uniwersalne) mają nieokreśloną wartość.
Powstający program musi uwzględniać połączenia sprzętowe. Przy jego tworzeniu uwzględniono następujące fakty:
- wybór aktywnej cyfry „leży” w pamięci zewnętrznej pod adresem 0FF30h
- wybór zaświecanych segmentów pod adresem 0FF38h
Teraz można przystąpić do pisania programu.
Przypomnę tylko, że po średniku znajdują się komentarze wyjaśniające funkcjonowanie poszczególnych fragmentów programu.
;**************************************************
;* DSM-51 - Wyświetlacz sekwencyjny 7-segmentowy *
;**************************************************
znaki EQU 200h
cyfra EQU 0FF30h
segm EQU 0FF38h
;------------------------------------------------
LJMP start ; ominięcie wektora przerwań
;============= PRZERWANIE PERODYCZNE ============
ORG 0Bh
period:MOV TH0,#0DCh
; ustawienie periodu 1,25ms
;------------------------------------------------
MOV DPTR,#segm
CLR A
MOVX @DPTR,A ; wygaszenie poprzedniej cyfry
;------------------------------------------------
MOV 6,R7
MOV A,#80h
digit: RL A
DJNZ R6,digit ; generowanie numeru cyfry
MOV DPTR,#cyfra
MOVX @DPTR,A
;------------------------------------------------
MOV A,R7
ADD A,#9
MOV R0,A ; wczytanie znaku do wyświetlenia
MOV A,@R0
;------------------------------------------------
MOV DPTR,#znaki
MOVC A,@A+DPTR
MOV DPTR,#segm
MOVX @DPTR,A ; zaświecenie segmentów cyfry
;------------------------------------------------
; w tym miejscu można dopisać dodatkowe procedury
; np. animacji napisu czy zegara czasu rzeczywistego
;------------------------------------------------
DJNZ R7,out
MOV R7,#6 ; przygotowanie numeru kolejnej cyfry
out: RETI
;===========================
ORG 100h
start: CLR A
MOV R0,#0FFh
resRAM:MOV @R0,A ; zerowanie rejestrów roboczych
DJNZ R0,resRAM
;------------------------------------------------
MOV TMOD,#0 ; wybór trybu nr 0 licznika T0
MOV IE,#82h ; otwarcie przerwania od timera T0
MOV SP,#77h ; przesunięcie wskaźnika stosu w głąb „RAMu”
MOV R7,#6 ; numer pierwszej cyfry do wyświetlenia
CLR P1.6 ; włączenie wyświetlacza LED
SETB TR0 ; start timera T0
;------------------------------------------------
MOV 0Fh,#0Dh
MOV 0Eh,#5
MOV 0Dh,#17h ; wpisanie tekstu do wyświetlenia
MOV 0Ch,#1EH ; tutaj: „dSn-51”
MOV 0Bh,#5
MOV 0Ah,#1
;------------------------------------------------
sleep: ORL PCON,#1 ; wymuszenie trybu IDLE
SJMP sleep
;================ TABLICA ZNAKÓW ================
ORG 200h
DB 3Fh, 06h, 5Bh, 4Fh, 66h, 6Dh, 7Dh, 07h ; 0,1,2,3,4,5,6,7 \
DB 7Fh, 6Fh, 77h, 7Ch, 39h, 5Eh, 79h, 71h ; 8,9,A,b,C,d,E,F | bez
DB 00h, 51h, 3Dh, 74h, 76h, 1Eh, 38h, 54h ; ,c,G,h,H,J,L,n | kropek
DB 5Ch, 73h, 50h, 78h, 1Ch, 3Eh, 40h, 08h ; o,P,r,t,u,U,-,_ /
DB 0BFh,086h,0DBh,0CFh,0E6h,0EDh,0FDh,087h ; 0,1,2,3,4,5,6,7 \
DB 0FFh,0EFh,0F7h,0FCh,0B9h,0DEh,0F9h,0F1h ; 8,9,A,b,C,d,E,F | z
DB 080h,0D1h,0BDh,0F4h,0F6h,09Eh,0B8h,0D4h ; ,c,G,h,H,J,L,n | kropkami
DB 0DCh,0F3h,0D0h,0F8h,09Ch,0BEh,0C0h,088h ; o,P,q,r,t,U,-,_ /
Konstruując podobny układ i dokonując ewentualnych modyfikacji niezbędnych ze względów sprzętowych, będzie można wykorzystać omawiany program we własnym urządzeniu.
Autor Bogdan Wykręt