| Author |
Message
|
ArtKar Poziom 14

Joined: 23 Jan 2002 Posts: 155
|
#1
29 Jan 2002 01:13 Assembler 8051 |
|
|
|
Cześć
Do tej pory programowałem w BASCOMIE. Chcę przejść na asemblera i dopiero się uczę. Czy do napisania programu na 2051 można użyć programu dla 8051?
Napisałem prosty programik, który przenosi stan portu P3.5 na P3.0. Czemu to nie działa? :I
START:
MOV A, P3.5
MOV P3.0, A
AJMP START
END
Co jest nie tak jak trzeba?
Jeżeli macie jakieś adresy do stron o asm-ie na 2051(lekcje, itp.) to podajcie. :smile:
Dzięki ArtKar
|
|
| Back to top |
|
 |
Google

|
#
29 Jan 2002 01:13 |
|
|
|
|
|
| Back to top |
|
 |
tmpat Guest
|
#2
31 Jan 2002 19:23 |
|
|
|
- Możesz użyć programu 8051 dla 2051
- Popełniłeś podstawowy błąd próbowałeś przenieść wartość jednobitową do akumulatora ośmiobitowego, prawidłowy program będzie wyglądał tak:
START:
mov c, p3.5
mov p3.0,c
sjmp start:
|
|
| Back to top |
|
 |
Google

|
#
31 Jan 2002 19:23 |
|
|
|
|
|
| Back to top |
|
 |
robt Guest
|
#3
05 Mar 2002 09:27 |
|
|
|
Tak jak ArtKar napisał wyżej, możesz zamiast C programować R0...R7, któte dają się programować bitowo lub załatwić sprawę za pomocą komend typu skoki.
|
|
| Back to top |
|
 |
Google

|
#
05 Mar 2002 09:27 |
|
|
|
|
|
| Back to top |
|
 |
Zaquadnik Poziom 20

Joined: 03 Aug 2005 Posts: 924 Location: Gdańsk
|
#4
03 Sep 2005 13:48 Re: Assembler |
|
|
|
Można też zrobić to tak:
| Code: |
start:
mov C,P3.5
mov P3.0,C
ljmp start
|
ljmp jest rozkazem skoku bezwzględnego, co oznacza, że do rejestru PC (licznika rozkazów) wpisywany jest bezpośrednio adres etykiety start. Natomiast sjmp spowoduje dodanie do PC wartości z zakresu <-128;127>, co przy dłuższych programach spowoduje błąd kompilacji "address out of range". Tutaj nie ma to znaczenia, jednak na przyszłość może się przydać :D
|
|
| Back to top |
|
 |