Zadanie do wykonania na mikrokontrolerze

Jesli jesteś początkującym elektronikiem, to tu z pewnością znajdziesz pomoc. Miejsce dobre do dyskusji nad podstawami elektroniki w zakresie teorii i praktyki.
ODPOWIEDZ
m4tik
-
Posty: 2
Rejestracja: 10 paź 2010, 22:22
Lokalizacja: Jaworzno

Zadanie do wykonania na mikrokontrolerze

Post autor: m4tik » 10 paź 2010, 22:24

Witam
Mam do wykonania 2zadania, nie było mnie na lekcji mam tylko odpisane lekcje ale nie umiem tego zrobić otóż:
1.W rejestrze A umieść 1zmienną, w rejestrze B drugą zmienną.Używając stosu zamień te zmienne miejscami
2.Dodaj do siebie dwie dowolne liczby 16-bitowe,wynik umieść w pamięci wewnętrznej RAM.

Musze napisać do tych zadań program.Byłbym bardzo wdzięczny za pomoc

Awatar użytkownika
szimon
-
Posty: 87
Rejestracja: 06 maja 2008, 16:47
Lokalizacja: K-lin/Wa-wa
Kontakt:

Post autor: szimon » 10 paź 2010, 23:21

Ma to być asembler, czy schemat blokowy? Jeśli to pierwsze, to asembler jakiego mikrokontrolera?

m4tik
-
Posty: 2
Rejestracja: 10 paź 2010, 22:22
Lokalizacja: Jaworzno

Post autor: m4tik » 11 paź 2010, 6:14

asembler mikrokontrolera 8051

[ Dodano: 2010-10-12, 20:05 ]
Pomoże ktoś??

gomarko
-
Posty: 71
Rejestracja: 13 paź 2010, 21:20
Lokalizacja: Konin

Post autor: gomarko » 13 paź 2010, 22:20

do zadania 1

Kod: Zaznacz cały

ZMIENNA1	EQU	1
ZMIENNA2	EQU	2
	MOV	A,ZMIENNA1
	MOV	B,ZMIENNA2

	PUSH 	ACC    	;odłozenie na stos
	PUSH 	B
	
	POP	ACC     ;pobranie ze stosu(to co było ostatnio odłożone)
	POP	B       ;po tej operacji w B jest ZMIENNA1 
			;natomiast w A jest ZMIENNA2
	
	
	;tak na marginesie to do zamiany zawartości dwóch rejestrów jest
	;specjakny rozkaz 
	XCH 	A,B
do zadania 2

Kod: Zaznacz cały

LICZBA1_H	EQU	1    ;bardziej znaczący bajt liczby 1
LICZBA1_L	EQU	2    ;mniej znaczący bajt liczby 1

LICZBA2_H	EQU	3    ;bardziej znaczący bajt liczby 2
LICZBA2_L	EQU	4    ;mniej znaczący bajt liczby 2

	;najpierw dodajemy mniej znaczące bajty
	
	MOV	A,LICZBA1_L      ;pierwszy składnik do akumulatora
	ADD	A,LICZBA2_L	 ;dodaje drugi sładnik
	
	;jeżeli wystąpiło przepełnienie, to została ustawiona flaga C
	
	MOV	R5,A	;najmniej znaczącą część wyniku umieszcza w R5
	
	;teraz dodawanie bardziej znaczących bajtów 
	;z uwzglednieniem przeniesienia z poprzedniego dodawania
	
	MOV	A,LICZBA1_H      ;pierwszy składnik do akumulatora
	ADDC	A,LICZBA2_H	 ;dodaje drugi sładnik z przeniesieniem
	MOV	R6,A	;bardziej znaczącą część wyniku umieszcza w R6
	
	;wynik dodawania dwóch liczb 16-bitowych może przekroczyć
	;pojemność 2 bajtów dlatego trzeba przewidzieć trzeci bajt
	;w którym pojawi się 1 jeżeli nastąpiło przeniesienie
	;z ostatniej operacji dodawania
	
	MOV	A,#0	;zerujemy akumulator
	ADDC	A,#0	;dodajemy tylko przeniesienie
	MOV	R7,A	;najbardziej znaczącą część wyniku umieszcza w R7
          ;wynik mamy w trzech komórkach pamięci RAM (w rejestrach R7,R6,R5)

ODPOWIEDZ