16-2-2004
Sprawozdanie z Assemblera
Adrian Miraś
Przerwania:
ORG 0 ;Zarezerwowanie X komorki pamieci
SJMP POCZ ;Skok do części Pocz
ORG 0Bh ;Rezerwuje pamięć (dla 0BH)
PUSH ACC ;Przekazanie akumulatora
PUSH PSW ;Przekazanie rejestru słowa
DJNZ R0,WPISZ ;Porównanie - zminejsz wartość o jeden pierwszego argumentu i skocz jeśli w
rejestrze R0 jest wartość różna od zera kodu programu pod etykietą WPISZ
MOV TH0,#0FFh ;Przeniesienie do licznika T0 liczby 0FFH
MOV ACC,P2 ;Wpisanie do akumulatora wartości z portu P2
MOV TL0,ACC ;Wpisanie akumulatora do licznika T0
SETB P3.1 ;Poprzez wstawienie 1, ustawienie bitu pierwszego na porcie P3
MOV R0,#TIME ;Zapisanie do rejestru R0 pamięci RAM mikrokontrolera
SJMP DALEJ ;Skok do części Dalej
WPISZ: MOV TH0,#0FFh ;Wpisanie do licznika T0 liczby 0FFH
MOV ACC,P1 ;Załadowanie wartości z portu P1 do rejestru A
MOV TL0,ACC ;Załadowanie do 4 bitów licznika T0 rejestru A
CLR P3.1 ;Wyzerowanie pierwszego bitu na porcie P3
DALEJ:POP PSW ;Zdjęcie ze stosu wartości rejestru PSW
POP ACC ;Zdjęcie ze stosu wartości rejestru akumulatora
RETI ;Powrót , przepisanie dwóch bitów ze szczytu do rejestru rozkazów PC.
POCZ: MOV TMOD,#1h ;Wpisanie do rejestru TMOD wartości 1H
MOV TH0,#0ffh ;Wczytanie do licznika T0 liczby 0FFH
MOV TL0,#WART_A ;Wczytanie do licznika T0 liczby pod etykietą WART_A
SETB TR0 ;Ustawienie znacznika TR0 w celu odblokowania licznika T0
MOV R0,#TIME ;Wpisanie do rejestru R0 wartości 02H
SETB EA ;Wstawienie do EA bitu o wartości 1
SETB ET0 ;Wstawienie do ET0 bitu o wartości 1
SJMP $ ;Skok do końca programu
WART_A EQU 256-20 ;Przypisanie wartości 256-20 symbolowi WART_A,
WART_L EQU 256-30 ;Przypisanie wartości 256-30 symbolowi WART_L
TIME EQU 02H ;Przypisanie wartości 02H symbolowi TIME
END ;Zakończenie programu
Klawiatura:
NAME klawiatura
SPR0: MOV C,P0.0 ;Przypisanie wartości jednobitowej z portu P0 bitu zerowego do znacznika przeniesienia.
JC SPR1 ;Skok do części SPR1 programu jeśli znacznik jest ustawiony (wartość 1)
MOV P2,#cyfra0 ; Wyświetlenie na porcie P2 wartości z etykiety cyfra0
SPR1: MOV C,P0.1 ; Przypisanie wartości jednobitowej z portu P0 bitu pierwszego do znacznika przeniesienia
JC SPR2 ;Skok do części SPR2 programu jeśli znacznik jest ustawiony (wartość 1)
MOV P2,#cyfra1 ;Wyświetlenie na porcie P2 wartości z etykiety cyfra1
SPR2: MOV C,P0.2 ; Przypisanie wartości jednobitowej z portu P0 bitu drugiego do znacznika przeniesienia.
JC SPR3 ;Skok do części SPR3 programu jeśli znacznik jest ustawiony (wartość 1)
MOV P2,#cyfra2 ;Wyświetlenie na porcie P2 wartości z etykiety cyfra2
SPR3: MOV C,P0.3 ; Przypisanie wartości jednobitowej z portu P0 bitu trzeciego do znacznika przeniesienia.
JC SPR4 ;Skok do części SPR4 programu jeśli znacznik jest ustawiony (wartość 1)
MOV P2,#cyfra3 ;Wyświetlenie na porcie P2 wartości z etykiety cyfra3
SPR4: MOV C,P0.4 ; Przypisanie wartości jednobitowej z portu P0 bitu czwartego do znacznika przeniesienia.
JC SPR5 ;Skok do części SPR5 programu jeśli znacznik jest ustawiony (wartość 1)
MOV P2,#cyfra4 ;Wyświetlenie na porcie P2 wartości z etykiety cyfra4
SPR5: MOV C,P0.5 ; Przypisanie wartości jednobitowej z portu P0 bitu piątego do znacznika przeniesienia.
JC SPR6 ;Skok do części SPR6 programu jeśli znacznik jest ustawiony (wartość 1)
MOV P2,#cyfra5 ;Wyświetlenie na porcie P2 wartości z etykiety cyfra5
SPR6: MOV C,P0.6 ; Przypisanie wartości jednobitowej z portu P0 bitu szóstego do znacznika przeniesienia.
JC SPR7 ;Skok do części SPR7 programu jeśli znacznik jest ustawiony (wartość 1)
MOV P2,#cyfra6 ;Wyświetlenie na porcie P2 wartości z etykiety cyfra6
SPR7: MOV C,P0.7 ; Przypisanie wartości jednobitowej z portu P0 bitu siódmego do znacznika przeniesienia.
JC SPR0 ;Skok do części SPR0 programu jeśli znacznik jest ustawiony (wartość 1)
MOV P2,#cyfra7 ;Wyświetlenie na porcie P2 wartości z etykiety cyfra7
;deklaracje stałych cyfr
cyfra0 equ 0C0h ;Deklaracja stałej cyfra0
cyfra1 equ 0F9h ;Deklaracja stałej cyfra1
cyfra2 equ 0A4h ;Deklaracja stałej cyfra2
cyfra3 equ 0B0h ;Deklaracja stałej cyfra3
cyfra4 equ 099h ;Deklaracja stałej cyfra4
cyfra5 equ 0921h ;Deklaracja stałej cyfra5
cyfra6 equ 082h ;Deklaracja stałej cyfra6
cyfra7 equ 0F8h ;Deklaracja stałej cyfra7
end
Wnioski:
Klawiatura - program miał symulować wyświetlacz siedmio segmentowy, zapalany za pośrednictwem klawiatury. Miał za zadanie rozpoznawać wpisywaną cyfrę i na wyświetlaczu zapalić odpowiednie segmenty.
3