Assembler i AT89C2051



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Adam" <awka_at_nospam_wp.pl>
Subject: Assembler i AT89C2051
Date: Sat, 11 Oct 2003 10:19:13 +0200


Witam!

Zacząłem uczyć się assemblera na '51 i wszystko jest dobrze oprócz
pewnej
rzeczy. Nie mogę wypisać na LCD liczby 16 bitowej. Jak to zrobić? Z
procedurą wyświetlającą
liczbę 8 bitową sobie jakoś poradziłem. Nie chodzi mi tu o wypisanie
liczby po jednej cyfrze jako ascii. Chcę umieścić taką liczbę np. w dptr (da
się?) a potem
ją wyświetlić. Mogły by być też inne dwa rejestry 8 bitowe, tylko jak do
nich wpisać
liczbę 16 bitową? I na koniec jeszcze jeden problem - jak wykonywać operacje
arytmetyczne
na dwóch 16 bitowych liczbach? Ma ktoś jakieś doświadczenia w tym temacie?
Mogą
być to gotowe procedury ale w miarę możliwości z wyjaśnieniem, bo ja chcę to
zrozumieć
a nie spisać.

AK



========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Marcin Osiniak" <marc__kropka__o_at_nospam_wp.pl>
Subject: Re: Assembler i AT89C2051
Date: Sat, 11 Oct 2003 15:48:16 +0200


Adam wrote:
Witam!

Zacząłem uczyć się assemblera na '51 i wszystko jest dobrze oprócz
pewnej
rzeczy. Nie mogę wypisać na LCD liczby 16 bitowej. Jak to zrobić? Z
procedurą wyświetlającą
liczbę 8 bitową sobie jakoś poradziłem. Nie chodzi mi tu o wypisanie
liczby po jednej cyfrze jako ascii. Chcę umieścić taką liczbę np. w
dptr (da się?) a potem

Liczba 16bit to jest liczba max 5-o cyfrowa, czyli trzeba rozbic ją na 5
cyfr i każdą cyfrę wyświetlac oddzielnie. Można to zrobić zarówno instrukcją
div jak i odejmowaniem. Później trzeba tylko dodać do naszej "cyfry" pewną
liczbę aby przekształcić cyfrę w kod ASCII cyfry.

--
Pozdrawiam,
Marcin Osiniak


========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Adam" <awka_at_nospam_wp.pl>
Subject: Re: Assembler i AT89C2051
Date: Sat, 11 Oct 2003 16:48:02 +0200


Użytkownik "Marcin Osiniak" <marc__kropka__o_at_nospam_wp.pl> napisał:

Liczba 16bit to jest liczba max 5-o cyfrowa, czyli trzeba rozbic ją na 5
cyfr i każdą cyfrę wyświetlac oddzielnie. Można to zrobić zarówno
instrukcją
div jak i odejmowaniem. Później trzeba tylko dodać do naszej "cyfry" pewną
liczbę aby przekształcić cyfrę w kod ASCII cyfry.

Właśnie taki manewr to ja zrobiłem w procedurze wyświetlającej liczbę 8
bitową.
Problem w tym, że żeby wykorzystać instrukcję div to muszę liczbę 16 bitową
zapisać do
akumulatora. Niestety akumulator jest 8 bitowy... Trzeba by to zrobić w
dwóch turach tzn.
najpierw wpisać pierwsze 8 bitów a potem drugie. Tylko że po rozdzieleniu to
każdy z tych
dwóch bajtów będzie miał inną liczbę niż wtedy, gdy są czytane razem.
Np. liczba 30000 to będzie starszy bajt 1110101 oraz młodszy 00110000.
Wpisując je
kolejno do akumulatora i wyświetlając dostanę 117 i 48. I tu mam problem.

--
Adam



========
Path: news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news2.icm.edu.pl!news.onet.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Lipin" <lipin_at_nospam_usunto.poczta.fm>
Subject: Re: Assembler i AT89C2051
Date: Sat, 11 Oct 2003 17:03:37 +0200


Właśnie taki manewr to ja zrobiłem w procedurze wyświetlającej liczbę 8
bitową.
Problem w tym, że żeby wykorzystać instrukcję div to muszę liczbę 16
bitową zapisać do
akumulatora. Niestety akumulator jest 8 bitowy... Trzeba by to zrobić w
dwóch turach tzn.
najpierw wpisać pierwsze 8 bitów a potem drugie. Tylko że po rozdzieleniu
to każdy z tych
dwóch bajtów będzie miał inną liczbę niż wtedy, gdy są czytane razem.
Np. liczba 30000 to będzie starszy bajt 1110101 oraz młodszy 00110000.
Wpisując je
kolejno do akumulatora i wyświetlając dostanę 117 i 48. I tu mam problem.

www.8052.com
dzielenie 16 bitowe



========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mai