Re: kit thomsona



Masz problem? Zapytaj na forum elektroda.pl z bramką pl.misc.elektronika!

Poprzedni Następny
Wiadomoœć
spis treści
From: "Jaroslaw Lis" <lis_at_nospam_papuga.ict.pwr.wroc.pl>
Subject: Re: kit thomsona
Date: 18 Aug 1998 17:21:41 GMT


Zbyszek Rutkowski <zbychu_r_at_nospam_friko5.onet.pl> wrote:
2. Makroasembler (wg instrukcji obslugi :)) pozwala na przesuwanie w
prawo (>>). Jednak z tego co na razie zauwazylem to przesuwa tylko
konkretne wartosci, natomiast ja potrzebuje, zeby przesuwal zawartosc
rejestrow lub komorek. Czy jest to mozliwe?

Zebysmy sie zrozumieli - opcja macro przesuwania jest dla piszacego
program - np chcesz miec liczbe 537 [np szerokosc papieru]
podzielona przez 8. Jesli potem procesor ma przesuwac rejestr - to
wstawiasz rozkaz przesuwania. Na pewno jest.

J.

Poprzedni Następny
Wiadomoœć
spis treści
From: "Juliusz" <juliusz_at_nospam_wyscigi.multi-ip.com.pl>
Subject: Re: kit thomsona
Date: Tue, 18 Aug 1998 21:57:12 +0200



Jaroslaw Lis wrote in message <6rcd75$cqd$1_at_nospam_okapi.ict.pwr.wroc.pl>...
Zbyszek Rutkowski <zbychu_r_at_nospam_friko5.onet.pl> wrote:
2. Makroasembler (wg instrukcji obslugi :)) pozwala na przesuwanie w
prawo (>>). Jednak z tego co na razie zauwazylem to przesuwa tylko
konkretne wartosci, natomiast ja potrzebuje, zeby przesuwal zawartosc
rejestrow lub komorek. Czy jest to mozliwe?

Zebysmy sie zrozumieli - opcja macro przesuwania jest dla piszacego
program - np chcesz miec liczbe 537 [np szerokosc papieru]
podzielona przez 8. Jesli potem procesor ma przesuwac rejestr - to
wstawiasz rozkaz przesuwania. Na pewno jest.



Wlasnie, ze nie ma przesuwania w lewo ! przynajmniej ST62T10 nie mial i byl
klopot bo czasami trzeba bylo przesuwac 7 razy aby rezultat osiagnac. on
taki glupawy jest.
Zrobilem jedna rzecz na tych prockach, ale olalem je. Potrzebny mi byl
przetwornik analogowo cyfrowy wiec zdecydowalem sie na ST, ale nigdy wiecej

Juliusz




Poprzedni Następny
Wiadomoœć
spis treści
From: "=?ISO-8859-2?Q?Marcin_J=EAdrzejczak?=" <big8_at_nospam_ikp.atm.com.pl>
Subject: Re: kit thomsona
Date: 19 Aug 1998 08:42:57 GMT


Cześć!

Juliusz <juliusz_at_nospam_wyscigi.multi-ip.com.pl> napisał(a) w artykule
<O3lC1.1678$ds2.436614_at_nospam_news.tpnet.pl>...

Jaroslaw Lis wrote in message <6rcd75$cqd$1_at_nospam_okapi.ict.pwr.wroc.pl>...
Zbyszek Rutkowski <zbychu_r_at_nospam_friko5.onet.pl> wrote:
2. Makroasembler (wg instrukcji obslugi :)) pozwala na przesuwanie w
prawo (>>). Jednak z tego co na razie zauwazylem to przesuwa tylko
konkretne wartosci, natomiast ja potrzebuje, zeby przesuwal zawartosc
rejestrow lub komorek. Czy jest to mozliwe?
Operator ">>" służy tylko do przesuwania wartości stałych, podobnie zresztą
jak pozostałe operatory makroassemblera. Do przesuwania rejestru będziesz
musiał zastosować inne metody np. wielokrotne przesunięcie w lewo... (RLC
A)

Wlasnie, ze nie ma przesuwania w lewo ! przynajmniej ST62T10 nie mial i
byl
klopot bo czasami trzeba bylo przesuwac 7 razy aby rezultat osiagnac. on
taki glupawy jest.
Błąd! Nie ma przesuwania w prawo, natomiast jest "RLC A".

Zrobilem jedna rzecz na tych prockach, ale olalem je. Potrzebny mi byl
przetwornik analogowo cyfrowy wiec zdecydowalem sie na ST, ale nigdy
wiecej
Zrobiłem kilka różnych układów na tym procku i jedno trzeba mu przyznać:
jest odporny na zakłócenia i nie sieje zakłóceń jak dajmy na to '51.
Oczywiście nie nadaje się do ciężkich obliczeń arytmetycznych, natomiast
doskonale sprawdzi się np. jako programator pralki automatycznej.

Pozdrawiam. Marcin J.

Poprzedni Następny
Wiadomoœć
spis treści
From: Zbyszek Rutkowski <zbychu_r_at_nospam_friko5.onet.pl>
Subject: Re: kit thomsona
Date: Wed, 19 Aug 1998 18:55:02 -0700




Marcin Jędrzejczak wrote:

Cześć!

Juliusz <juliusz_at_nospam_wyscigi.multi-ip.com.pl> napisał(a) w artykule
<O3lC1.1678$ds2.436614_at_nospam_news.tpnet.pl>...

Operator ">>" służy tylko do przesuwania wartości stałych, podobnie zresztš
jak pozostałe operatory makroassemblera. Do przesuwania rejestru będziesz
musiał zastosować inne metody np. wielokrotne przesunięcie w lewo... (RLC
A)

Zgadza sie. Juz sprawdzilem.

Błšd! Nie ma przesuwania w prawo, natomiast jest "RLC A".


Tu tez masz racje.

Zrobiłem kilka różnych układów na tym procku i jedno trzeba mu przyznać:
jest odporny na zakłócenia i nie sieje zakłóceń jak dajmy na to '51.
Oczywiście nie nadaje się do ciężkich obliczeń arytmetycznych, natomiast
doskonale sprawdzi się np. jako programator pralki automatycznej.

Na szczescie urzadzenie, ktore robie nie potrzebuje skomplikowanych obliczen.
Tzn. tak mi sie wydaje. Czy dzielenie przez dziesiec jest dla niego
(mikrokontrolera) trudne?Poniewaz widze, ze masz najwieksze doswiadczenie z tym
modelem (nie ujmujac niczego pozostalym grupowiczom :)) zapytam Cie jeszcze:
czy mozna (o ile pamietam instrukcja JRR) sprawdzic n-ty bit komorki, gdzie n
jest wartościa innej komorki (nie konkretna liczba)?
Wracajac do Twojej poprzedniej odpowiedzi (chodzi o realizacje przesuwu w prawo
za pomoca przesuwania w lewo): jezeli dobrze zrozumialem, aby przesunac o 1 bit
w prawo musze przesunac o 8 bitow w lewo, aby przesunac o 2 bity w prawo musze
przesunac 7 bitow w lewo itd? A ten "dodatkowy" bit to flaga CARRY? Wymyslilem
sobie, ze moglbym sprawdzac kolejne bity komorki sprawdzajac np. bit zerowy,
nastepnie przesunac bity i znowu sprawdzic bit 0. Jak wczesniej pisalem
asembler znam slabo, dopiero zaczalem, ale taki sposob chyba bylby dobry?
Moglbys napisac "probke" takiej procedury, chociazby "schematycznie"?

Pozdrawiam. Marcin J.

Rowniez pozdrawiam
Zbyszek


Poprzedni Następny
Wiadomoœć
spis treści
From: "=?ISO-8859-2?Q?Marcin_J=EAdrzejczak?=" <big8_at_nospam_ikp.atm.com.pl>
Subject: Re: kit thomsona
Date: 20 Aug 1998 11:33:41 GMT


Zbyszek Rutkowski <zbychu_r_at_nospam_friko5.onet.pl> napisał(a) w artykule
<35DB81F5.F423739_at_nospam_friko5.onet.pl>...
czy mozna (o ile pamietam instrukcja JRR) sprawdzic n-ty bit komorki,
gdzie n
jest wartościa innej komorki (nie konkretna liczba)?
Bezpośrednio rozkazem JRR lub JRS, to nie. Trzeba pokombinować. Nie
rozumiem tylko, po co Ci to jest potrzebne. Mi nigdy nie było to potrzebne.
Przedstaw problem bardziej ogólnie, to może znajdzie się inne
rozwiązanie...

Wracajac do Twojej poprzedniej odpowiedzi (chodzi o realizacje przesuwu w
prawo
za pomoca przesuwania w lewo): jezeli dobrze zrozumialem, aby przesunac o
1 bit
w prawo musze przesunac o 8 bitow w lewo, aby przesunac o 2 bity w prawo
musze
przesunac 7 bitow w lewo itd?
Zgadza się.

A ten "dodatkowy" bit to flaga CARRY?
Tak. RLC => Rotate Left with Carry

Wymyslilem
sobie, ze moglbym sprawdzac kolejne bity komorki sprawdzajac np. bit
zerowy,
nastepnie przesunac bity i znowu sprawdzic bit 0. Jak wczesniej pisalem
asembler znam slabo, dopiero zaczalem, ale taki sposob chyba bylby dobry?
Moglbys napisac "probke" takiej procedury, chociazby "schematycznie"?
Jeśli chodzi Ci o osiągnięcie efektu, który opisałeś w pierwszym zdaniu
wypowiedzi, to nie będzie to takie banalne.
Zauważ, chcąc sprawdzić bit 1, to musisz przeprowadzić rotację w prawo 1
raz, natomiast dla bitu 7 - 7 razy. Tymczasem masz do dyspozycji tylko
rotację w lewo, więc zmienia Ci się numeracja bitów: bit 7 bedzie bitem 0
itd.

Mam następującą propozycję rozwiązania problemu:
1. Zamienić kolejność bitów w akumulatorze: 0 z 7, 1 z 6 itd.
2. Rotacja w prawo o określoną ilość razy
3. Sprawdzenie bitu, a właściwie CARRY

Oczywiście nie jest to dobre rozwiązanie w przypadku wielokrotnego
sprawdzania bitu, bo jest zbyt czasochłonne. Ja osobiście stosowałem
procedurę zamiany bitów na początku procedury obliczającej CRC-8. Tam było
potrzebne przesuwanie w prawo. Ja stosowałem przesuwanie w lewo, oczywiście
z wszystkimi konsekwencjami (zmiana numeracji bitów). CRC miałem cały czas
odwrócone, więc na żądanie dostępu odwracałem je ponownie. Takie odwrócenie
jest też przydatne dla procedur transmisji danych, w których wymagane jest
wysyłanie bitów począwszy od LSB, np. RS-232, IIC itp.

; *************************************************************************
*
; Sprawdzenie n-tego bitu w zmiennej, n zawarte w zmiennej NumBit
; *************************************************************************
*
call InvChr
inc NumBit ;zeby uniknac 256 iteracji dla bitu 0
Loop:
rlc A ;wysun kolejny bit do CARRY
dec NumBit
jrnz Loop ;zapetlenie na n iteracji
;w CARRY znajduje sie sprawdzany bit
jrc ...

jp $

; *************************************************************************
*
; Procedura zamiany kolejnosci bitow w akumulatorze
; Wykorzystuje wlasciwosc rozkazu JRS: kopiowanie sprawdzanego
; bitu do CARRY
; *************************************************************************
*
InvChr:
ld BitCnt, A ;BitCnt = zmienna robocza...
jrs 0, BitCnt, $+3 ;kolejny bit do CARRY
rlc A ;wsun do A
jrs 1, BitCnt, $+3 ;kolejny bit do CARRY
rlc A ;wsun do A
jrs 2, BitCnt, $+3 ;kolejny bit do CARRY
rlc A ;wsun do A
jrs 3, BitCnt, $+3 ;kolejny bit do CARRY
rlc A ;wsun do A
jrs 4, BitCnt, $+3 ;kolejny bit do CARRY
rlc A ;wsun do A
jrs 5, BitCnt, $+3 ;kolejny bit do CARRY
rlc A ;wsun do A
jrs 6, BitCnt, $+3 ;kolejny bit do CARRY
rlc A ;wsun do A
jrs 7, BitCnt, $+3 ;kolejny bit do CARRY
rlc A ;wsun do A
ret


Pozdrawiam. Marcin J.