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
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
Moderatorzy:Jacek Bogusz, procesorowiec, robertw, tomasz_jablonski, r-mik, Moderatorzy
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości