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ę

pierwszy program w assembler, początkujący, edsim51

kicia0014
-
-
Posty: 9
Rejestracja: 9 sty 2014, o 21:37

pierwszy program w assembler, początkujący, edsim51

Postautor: kicia0014 » 9 sty 2014, o 21:41

Witam, mam mały problem z pisaniem programów w assemblerze, potrzebuje napisać 3 programy:

1) napisz program w assemblerze ,który po wciśniecie dokładnie 2 przycisków z pośród sw0 , sw1 i sw2 powoduje miganie LED 0, inne ustawienie klawiszy dioda nie reaguje

2) napisz program, który po wciśnięciu jednego z przycisków sw0-sw7 powoduje przesuwanie zapalonej diody LED na diodach LED 0-7, w sposób cykliczny, ale jeżeli nie wciśniemy żadnego klawisza LED nie przesuwa się, a jeżeli wciśnięty jest nie parzysty to LED przesuwa sie o 1, a jeżeli parzysty o 2 pozycje, jeśli wciśniemy więcej niż 1 przycisk to nie działa

3)napisz program, który po wciśnięciu przycisku parzystego powoduje przesuniecie LED w prawo, a jeżeli naciśniemy nie parzysty to w lewo, sw0-7, led0-7

programy są testowane na symulatorze edsim51, próbowałem coś pisać ale mi nie działa albo wyskakują błędy, czy mógłby mi ktoś pomruż??

LED p1.0-p1.7 sterowana stanem niskim, sw p2.0-p2.7 po wciśnięciu jest stan niski na porcie. Schemat całego układu: http://www.mytutorialcafe.com/image/logicDiagramBW.gif

Z góry dziękuję za pomoc:)

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty: 2650
Rejestracja: 24 sty 2005, o 00:39
Lokalizacja: Winny gród

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: pajaczek » 9 sty 2014, o 23:16

Na początek pokaż kod i błędy z kompilacji.

kicia0014
-
-
Posty: 9
Rejestracja: 9 sty 2014, o 21:37

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: kicia0014 » 10 sty 2014, o 20:51

mov c,p2.0
mov 00h,c
mov c,p2.1
mov 01h,c
mov c,p2.2
mov 02h,c


mov R1,03h
mov c,p2.0
cpl c
addc a,acc

mov c,p2.1
cpl c
addc a,acc

mov c,p2.3
cpl c
addc a,acc

sw0 equ p1.1

to nie są wszystkie programy które próbowałem pisac, bo nie wszystkie sobie zapisywałem, wie ktos jak napisać te programy??

Awatar użytkownika
rafal.220
-
-
Posty: 1274
Rejestracja: 27 paź 2012, o 15:46

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: rafal.220 » 10 sty 2014, o 22:45

Można wiedzieć co to są za zadania ? Zaliczenia, czy może kolega uczy się podstaw? (trochę dziwny ten kod.)
Zadanie proste do zrobienia. (mogę pomóc w innym języku, o ile zależy ci na tzw. działającej sztuce)

kicia0014
-
-
Posty: 9
Rejestracja: 9 sty 2014, o 21:37

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: kicia0014 » 11 sty 2014, o 08:47

Są to zadania na pracownie, miałem te programy napisać w ciągu 4 lekcji, jednak nikt nie dał rady, a teraz mam zrobić z tego sprawozdanie, niestety nie mogę mieć tego w innym języku musi być to assembler, wiem że prościej byłoby napisać te programy w c++

Awatar użytkownika
ACeK
-
-
Posty: 1520
Rejestracja: 30 mar 2003, o 19:35
Lokalizacja: Kielce

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: ACeK » 11 sty 2014, o 12:04

Obrazek Na forum nikt za nikogo :no: odrabia zadan ale jesli ktos ma problem to mozna naprowadzic gdzie robi blad :idea: tu masz :arrow: kurs radzia z prosta obsluga led oraz klawiszy Obrazek

kicia0014
-
-
Posty: 9
Rejestracja: 9 sty 2014, o 21:37

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: kicia0014 » 11 sty 2014, o 22:46

dziękuje wszystkim za pomoc jak będę jeszcze pomocy w czymś to napisze

Awatar użytkownika
rafal.220
-
-
Posty: 1274
Rejestracja: 27 paź 2012, o 15:46

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: rafal.220 » 11 sty 2014, o 22:57

dziękuje wszystkim za pomoc jak będę jeszcze pomocy w czymś to napisze
Jak chcesz to ci wyślę kody źródłowe w języku graficznym. (zobaczysz jak to wszystko kręci wirtualny symulator i może wpadnie ci do głowy pomysł na stworzenie sensownego kodu w asm).

kicia0014
-
-
Posty: 9
Rejestracja: 9 sty 2014, o 21:37

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: kicia0014 » 12 sty 2014, o 12:16

przeczytałem kilka jakiś poradników/książek o assemblerze i już napisałem te programy, we wtorek będę musiał napisać kolejne programy wiec jak coś to napisze

Awatar użytkownika
rafal.220
-
-
Posty: 1274
Rejestracja: 27 paź 2012, o 15:46

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: rafal.220 » 12 sty 2014, o 12:31

pierwszy i trzeci jest prosty.
Ciekaw jestem jak żeś rozwiązał to drugie zadanie, bo tam akurat trzeba pogłówkować nad składnią logiczną, a w asm nie ma drogi na skróty. W języku graficznym też nie jest to aż takie proste zadanie do zrobienia. (nie jeden absolwent dobrej uczelni nie dał by rady)

kicia0014
-
-
Posty: 9
Rejestracja: 9 sty 2014, o 21:37

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: kicia0014 » 12 sty 2014, o 19:25

jak już zrozumiałem o co chodzi to te programy są łatwe, najtrudniej było napisać pierwszy program później było już z górki. funkcje licz sa tylko do testowania programu,
oto 2 program:

Kod: Zaznacz cały

po: sw0 equ p2.0 ;przypisanie całego portu mov r0, sw0 mov a,r0 cjne a,#0FEH,f1 ; skocz jeżeli a nie równe fc JMP led2 ; skocz jeżeli równe do led f1: cjne a,#0FDH,f2 ; JMP led ; f2: cjne a,#0FBH,f3 ; JMP led2 ; f3: cjne a,#0F7H,f4 ; JMP led ; f4: cjne a,#0EFH,f5 ; JMP led2 ; f5: cjne a,#0dfH,f6 ; JMP led ; f6: cjne a,#0bfH,f7 ; JMP led2 ; f7: cjne a,#07FH,po ; JMP led ; led: led0 equ p1.0 mov led0,r2 mov r2,#0ffh mov a,r2 subb a,#001h mov r2,a mov led0,r2 MOV R7,#00H licz1: inc r7 cjne r7,#0ffH,licz1 mov r2,#0ffh mov a,r2 subb a,#002h mov r2,a mov led0,r2 MOV R7,#00H licz2: inc r7 cjne r7,#0ffH,licz2 mov r2,#0ffh mov a,r2 subb a,#004h mov r2,a mov led0,r2 MOV R7,#00H licz3: inc r7 cjne r7,#0ffH,licz3 mov r2,#0ffh mov a,r2 subb a,#008h mov r2,a mov led0,r2 MOV R7,#00H licz4: inc r7 cjne r7,#0ffH,licz4 mov r2,#0ffh mov a,r2 subb a,#010h mov r2,a mov led0,r2 MOV R7,#00H licz5: inc r7 cjne r7,#0ffH,licz5 mov r2,#0ffh mov a,r2 subb a,#020h mov r2,a mov led0,r2 MOV R7,#00H licz6: inc r7 cjne r7,#0ffH,licz6 mov r2,#0ffh mov a,r2 subb a,#040h mov r2,a mov led0,r2 MOV R7,#00H licz7: inc r7 cjne r7,#0ffH,licz7 mov r2,#0ffh mov a,r2 subb a,#080h mov r2,a mov led0,r2 MOV R7,#00H licz8: inc r7 cjne r7,#0ffH,licz8 mov r2,#000h led2: mov r2,#0ffh mov a,r2 subb a,#001h mov r2,a mov led0,r2 MOV R7,#00H licz9: inc r7 cjne r7,#0ffH,licz9 mov r2,#0ffh mov a,r2 subb a,#004h mov r2,a mov led0,r2 MOV R7,#00H licz10: inc r7 cjne r7,#0ffH,licz10 mov r2,#0ffh mov a,r2 subb a,#010h mov r2,a mov led0,r2 MOV R7,#00H licz11: inc r7 cjne r7,#0ffH,licz11 mov r2,#0ffh mov a,r2 subb a,#040h mov r2,a mov led0,r2 MOV R7,#00H licz12: inc r7 cjne r7,#0ffH,licz12 mov r2,#000h jmp po
Edit Pajączek: tagi.

Awatar użytkownika
rafal.220
-
-
Posty: 1274
Rejestracja: 27 paź 2012, o 15:46

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: rafal.220 » 12 sty 2014, o 19:38

A jak realizujesz, że po wciśnięciu więcej niż 1 z pośród od 0-7 przycisków układ nie działa?

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty: 2650
Rejestracja: 24 sty 2005, o 00:39
Lokalizacja: Winny gród

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: pajaczek » 12 sty 2014, o 20:15

Ciekaw jestem jak żeś rozwiązał to drugie zadanie, bo tam akurat trzeba pogłówkować nad składnią logiczną, a w asm nie ma drogi na skróty.
To zadanie też jest proste, a Ty Rafał nie udawaj że rozumiesz cokolwiek z asemblera.
Btw. Przecież odpowiedź na Twoje pytanie jest w tym listingu, i to na jego początku.

Kicia: zasadniczo do wstawiania kodu służą taki

Kod: Zaznacz cały

, w pierwszym poście zostawiłem bo kod krótki to i nie jest to tak rażące, ale w drugim poprawiłem...

Awatar użytkownika
rafal.220
-
-
Posty: 1274
Rejestracja: 27 paź 2012, o 15:46

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: rafal.220 » 12 sty 2014, o 20:22

To zadanie też jest proste, a Ty Rafał nie udawaj że rozumiesz cokolwiek z asemblera.
A może też chcę się czegoś nowego nauczyć ? (wszystkie te zadania są proste, o ile wiadomo jak pisać tekst)
On jest dobry skoro przeczytał kilka poradników i od razu już klepie takie programy. Raczej nie zaczyna od zera.

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty: 2650
Rejestracja: 24 sty 2005, o 00:39
Lokalizacja: Winny gród

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: pajaczek » 12 sty 2014, o 20:32

No więc: odpowiedź na Twoje pytanie jest w linijce 1 i 28 (razem wziętych). Dokładniej to linijki 6-29 to taki typowy (np. z C) switch z 8 case'ami (8 przycisków wciskanych solo), i defaultem (każda inna kombinacja) ustawionym na powrót do początku (linii 1). Tylko czy to Ci coś wyjaśnia? Bo w graficznym tego rysować nie zamierzam.

Awatar użytkownika
rafal.220
-
-
Posty: 1274
Rejestracja: 27 paź 2012, o 15:46

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: rafal.220 » 12 sty 2014, o 22:10

Za wiele się nie dowiedziałem.... Zapewne więcej podpowiedzą mi koledzy po fachu. (coś mi się wydaje że to drugie zadanie można zrobić w inny sposób.)

kicia0014
-
-
Posty: 9
Rejestracja: 9 sty 2014, o 21:37

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: kicia0014 » 12 sty 2014, o 23:17

Każde z tych zadań można rozwiązać na kilka sposobów.
...On jest dobry skoro przeczytał kilka poradników i od razu już klepie takie programy. Raczej nie zaczyna od zera.
Pisze też programy na AVR w C++, głównie na ATmega, i jest znacznie prościej, niestety w szkole piszemy w assemblerze:( , myślałem też na pisaniu na 8051 w c i później otwieraniu pliku HEX w symulatorze, jednak to nie jest to samo ponieważ niektóre obliczenia wykonywane przez procesor są już gotowe.

Awatar użytkownika
r-mik
-
-
Posty: 351
Rejestracja: 14 cze 2005, o 19:18
Lokalizacja: Wawa
Kontaktowanie:

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: r-mik » 16 sty 2014, o 01:35

myślałem też na pisaniu na 8051 w c i później otwieraniu pliku HEX w symulatorze, jednak to nie jest to samo ponieważ niektóre obliczenia wykonywane przez procesor są już gotowe.
Przecież każdy kompilator C kompiluje najpierw do assemblera. Można sobie podejrzeć jak realizuje różne funkcje, rozkazy.

kicia0014
-
-
Posty: 9
Rejestracja: 9 sty 2014, o 21:37

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: kicia0014 » 5 lut 2014, o 16:28

Witam, pomoże mi ktoś w napisani dwóch programów w assemblerze?
1.program działa w następujący sposób: po każdorazowym wykonaniu programu zmienia się stan diody na przeciwny, po zmianie stanu diody wywoływany jest podprogram w którym są 2 zagnieżdżone pętle, program główny jest nie skończoną pętlą. Próbowałem coś pisać ale nie wiem jak zrobić z tymi pętlami bo mi się program zawiesza. To co napisałem:
po:
CPOL P0.1
ACALL PETLA
JMP PO

PETLA:
PETLA2:
JMP PETLA

2 PROGRAM działa następująco: po naciśnięciu dowolnego klawisza z klawiatury matrycowej zapala led1 a ponowne wciśniecie dowolnego klawisza gasi ją, w programie mam wykorzystać przerwania ale nie wiem nawet jak się za to zabrać

Awatar użytkownika
pajaczek
Moderator
Moderator
Posty: 2650
Rejestracja: 24 sty 2005, o 00:39
Lokalizacja: Winny gród

Re: pierwszy program w assembler, początkujący, edsim51

Postautor: pajaczek » 5 lut 2014, o 18:35

Pierwszy program się nie "zawiesza" tylko wykonuje dokładnie to, co mu zleciłeś(-aś??). Czyli nieskończoną pętlę na

Kod: Zaznacz cały

petla: jmp petla
pomyśl ile razy pętla ma się wykonać, dodaj do tego jakiś licznik (który będziesz porównywać ze wzorcem i inkrementować za każdym przejściem pętli), oraz "warunek powrotu" czyli właśnie ten test z licznikiem i wzorcem oraz instrukcję skoku poza pętlę.

Ps. do zagnieżdzenia pętli to jeszcze będzie troszkę ;) ale jeżeli to zrozumiesz, dalej powinno pójść gładko.

Ad 2. Jak ta klawiatura jest podpięta? Klawiatury matrycowe charakteryzują się tym, że mają x wejść (np. wierszy) i y wyjść (np. kolumn)... od tego na przecięciu którego wiersza z kolumną przyciśniesz przycisk, możesz otrzymać albo jedno z x przerwań, albo 1 przerwanie w którym musisz odczytać który z wierszy zaskoczył.

Wróć do „Pozostałe mikrokontrolery (PIC, MSP430, PSoC, 8051 ...)”

Kto jest online

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