Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Konwersja symboliki DSM-51 na asembler 51

gryguta
-
-
Posty: 1
Rejestracja: 31 mar 2009, o 08:35
Lokalizacja: kce

Konwersja symboliki DSM-51 na asembler 51

Postautor: gryguta » 31 mar 2009, o 08:57

Witam,
mam problem ze sprawozdaniem z "portów mikrokontrolera" (chodzi o 8051). Pracowaliśmy na DSM-51 i prowadzący laboratorium zażyczył sobie konwersję symboliki z wyświetlacza DSM-51 na asembler 51. Z tego co szukałam w internecie, wygląda to następująco:

[<etykieta>] [<rozkaz>] [<operandy>] [;<komentarz>]

Proszę powiedzieć mi, co robię źle... Dziękuję z góry za jakąkolwiek pomoc




1. Zapalenie diody a następnie zgaszenie jej po 1,6s.

CLR P1.7 ; zapala diodę
MOV A, #10H ; wprowadza do akumulatora liczbę 16
LCALL DELAY_100MS ; czeka 1,6s – dioda świeci się
SETB P1.7 ; gasi diodę
L00: LJMP L00 ; kończy działanie programu


2. Zapalenie diody po czasie 1s, a następnie zgaszenie jej po 1s.

L00: MOV A, #0AH ; wprowadza do akumulatora liczbę 10
LCALL DELAY_100MS ; czeka 1s – dioda nie świeci się
CLR P1.7 ; zapala diodę
MOV A, #0AH ; wprowadza do akumulatora liczbę 10
LCALL DELAY_100MS ; czeka 1s – dioda świeci się
SETB P1.7 ; gasi diodę
LJMP L00 ; powtarza całą procedurę od L00


3. Zapalenie diody i zgaszenie w 1 sekundowych odstępach czasu. Program rozpoczyna się od zapalenia diody.

L00: CLR P1.7 ; zapala diodę
MOV A, #0AH ; wprowadza do akumulatora liczbę 10
LCALL DELAY_100MS ; czeka 1s – dioda świeci się
SETB P1.7 ; gasi diodę
MOV A, #0AH ; wprowadza do akumulatora liczbę 10
LCALL DEL_100 ; czeka 1s – dioda nie świeci się
LJMP L00 ; powtarza całą procedurę od L00

4. Zapalenie diody na czas 1,5s i zgaszenie na 0,5s.

L00: CLR P1.7 ; zapala diodę
MOV A, #0FH ; wprowadza do akumulatora liczbę 15
LCALL DELAY_100MS ; czeka 1,5s – dioda świeci się
SETB P1.7 ; gasi diodę
MOV A, #05H ; wprowadza do akumulatora liczbę 5
LCALL DELAY_100MS ; czeka 0,5s – dioda nie świeci się
LJMP L00 ; powtarza całą procedurę od L00




5. Czyszczenie wyświetlacza przed wyświetleniem liczby z akumulatora.

LCALL LCD_CLR ; czyści wyświetlacz
MOV A, #10H ; wprowadza do akumulatora liczbę
LCALL WRITE_HEX ; wyświetla na wyświetlaczu liczbę z akumulatora
L00: LJMP L00 ; kończy działanie programu

6. Czyszczenie wyświetlacza przed wyświetleniem liczby z akumulatora, którą wcześniej zwiększono o 1.

LCALL LCD_CLR ; czyści wyświetlacz
MOV A, #10H ; wprowadza do akumulatora liczbę
INC A ; zwiększa liczbę z akumulatora o 1
LCALL WRITE_HEX ; wyświetla liczbę powiększoną o 1
L00: LJMP L00 ; kończy działanie programu

7. Liczba zapaleń diody jest zliczana i automatycznie wyświetlana.

MOV R0, #0 ; wprowadza do rejestru liczbę 0
L00: MOV A, #0AH ; wprowadza do akumulatora liczbę 10
LCALL DELAY_100MS ; czeka 1s
CLR P1.7 ; zapala diodę
LCALL DELAY_100MS ; czeka 1s – dioda świeci się
SETB P1.7 ; gasi diodę
INC R0 ; zwiększa liczbę z rejestru o 1
MOV A, R0 ; przenosi liczbę z rejestru do akumulatora, aby ją wyświetlić
LCALL LCD_CLR ; czyści wyświetlacz
LCALL WRITE_HEX ; wyświetla liczbę z akumulatora
LJMP L00 ; powtarza całą procedurę od L00

Wróć do „8051”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 27 gości