Jak zrealizować migający sygnał na porcie P1 w 80C31 z użyciem RAM 8KB?
intel hex i 80c31
From: "Lukas" <no_at_nospam_spam.com>
Subject: intel hex i 80c31
Date: Tue, 9 Mar 2004 14:12:21 +0100
Kawalek mapy pamieci:
108000000280007590007590FF028000FFFFFFFF66
10801000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F
a teraz zapytanie
mam na plytce procek 80c31, eprom z programem i ram 8kb. Do ramu pod adres
8000 wrzucilem program typu:
06800000028000759000F3
068006007590FF028000EE
00000001FF
a zrodlo:
CPU '8052.DEF'
INCLUDE 'CONST.INC'
INCLUDE 'BIOS.INC'
LJMP START
ORG 8000H
START:
mov 90h,#00000000b
mov 90h,#11111111b
STOP:
ljmp START
END
chce zeby cos sobie mrygalo na oscyloskopie na porcie prierwszym(p1, nie
p0), na wszytkich liniach, ale nic sie nie dzieje i nie wiem czemu jest:
10800000028000
przeciez to odzysyla spowrotem do adresu 8000!?
Nie rozumie, a na oscylospokie sie wlasciwie nic nie dzieje :/
Pozdrawiam
========
Path: news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!news.nask.pl!uw.edu.pl!news.pw.edu.pl!not-for-mai
From: BLE_Maciek <i80c586_at_nospam_cyberspace_NO_SPAM_.org>
Subject: Re: intel hex i 80c31
Date: Tue, 09 Mar 2004 15:00:51 +0100
Tue, 9 Mar 2004 14:12:21 +0100 jednostka biologiczna o nazwie "Lukas"
<no_at_nospam_spam.com> wyslala do portu 119
jednego z serwerow news nastepujace dane:
mam na plytce procek 80c31, eprom z programem i ram 8kb. Do ramu pod adres
chce zeby cos sobie mrygalo na oscyloskopie na porcie prierwszym(p1, nie
p0), na wszytkich liniach, ale nic sie nie dzieje i nie wiem czemu jest:
Podales wszystko bardzo niejasno, zreszta po cholere wrzucasz tu IHX ?
Wystarcza zrodla.
A wogole to chciales wykonac program z pamieci RAM ? Jezeli nie jest
to kostka RAM polaczona jako pamiec programu to nie wykonasz. Zauwaz
ze w '51 w odroznieniu od '86 jest wyrazne rozroznienie miedzy
pamiecia programu a pamiecia operacyjna. Jezeli dajesz rozkaz np.
ljmp 8000
to nastepna instrukcja zostanie przez procesor pobrana spod adresu
8000 ale w PAMIECI PROGRAMU !!! Nie da sie wykonywac w '51 programu z
pamieci operacyjnej, chyba ze chodzi Ci o kostke ktora jest pamiecia
RAM, ale jest podlaczona jako pamiec programu.
A wogole to wez sobie jakas dokumentacje do '51 i poczytaj do czego
sluza nozki oznaczone !PSEN, ALE, !EA, RD, WR itd.
========
Path: news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!news.man.poznan.pl!not-for-mai
From: ".sat.elita." <satelita_at_nospam_antysp.am-sp.kkonin.llm.pt>
Subject: Re: intel hex i 80c31
Date: Tue, 9 Mar 2004 16:25:12 +0100
mam na plytce procek 80c31, eprom z programem i ram 8kb. Do ramu pod
adres
chce zeby cos sobie mrygalo na oscyloskopie na porcie prierwszym(p1, nie
p0), na wszytkich liniach, ale nic sie nie dzieje i nie wiem czemu jest:
Podales wszystko bardzo niejasno, zreszta po cholere wrzucasz tu IHX ?
Wystarcza zrodla.
A wogole to chciales wykonac program z pamieci RAM ? Jezeli nie jest
to kostka RAM polaczona jako pamiec programu to nie wykonasz. Zauwaz
ze w '51 w odroznieniu od '86 jest wyrazne rozroznienie miedzy
pamiecia programu a pamiecia operacyjna. Jezeli dajesz rozkaz np.
ljmp 8000
to nastepna instrukcja zostanie przez procesor pobrana spod adresu
8000 ale w PAMIECI PROGRAMU !!! Nie da sie wykonywac w '51 programu z
pamieci operacyjnej, chyba ze chodzi Ci o kostke ktora jest pamiecia
RAM, ale jest podlaczona jako pamiec programu.
A wogole to wez sobie jakas dokumentacje do '51 i poczytaj do czego
sluza nozki oznaczone !PSEN, ALE, !EA, RD, WR itd.
Jest to dobry poczatek do wykonania emulatora, tez long, long time ago...
sie tym bawilem - pewnie to jakas praca, bo lepiej kupic gotowca...:
1. Pamiec Eprom, gdzie jest zaszyty program systemu, który mui sie
zaczynac skokiem ljmp 8000h (czyli w komórce 0000h musi byc
zaprogramowany ten rozkaz), ale tam (8000h) nie ma zadnego
programu - lepiej tradycyjnie przeskaczyc tylko wektor przerwan,
wykonac zaladowanie programu poprzez lacze szeregowe do pamieci
RAM od adresu 8000h, która tez musi byc jako pamiec programu i danych...
Na to jest cale 8000h intrukcji w epromie
2. Ogranizacja pamieci programu (0000h - 0FFFFh i danych 0000h-8FFFh
3. Wspólne obszary pamieci danych i programu 8000h-0FFFFh - np:Pamiec RAM
Reasumujac.
4. Mozna zrobis mix pamiec od 8000h poprzez iloczyn rd\ i psen\, sygnal wr\
na swoje wejscie...
czyli oba sygnaly odczytu beda odwolywaly sie do tego obszaru;
5. Pamiec eprom w dolnym zakresie (od 0000h), gdzie bedzie skok
sjmp monitor
program wczytujacy fragment do testowania
który na koncu bedzie mial instrukcje
ljmp 8000h; po wczytaniu tam
programu.... dostarczony program powinien byc ladowany z offesem 8000h,
czyli pisany jakby sie nic nie dzialo w systemie adresowania wzglednego
z dyrektywa poczatkowa ORG 8000h, a ewentualne zastosowanie
tablic o adresie bezwlednym powinno zawierac offset=8000h
ORG IE_Timer1+offset; nowy wekto przerwania od T1
6. W pamieci eprom mozna przeniesc caly wektor przerwan do górnej pamieci...
stosujac skladnie
stale
OFFSET equ 8000h
IE_TIMER1 equ 13h
program monitor
Org 0h
Sjmp monitor;
ORG ie_timer1
ljmp ie_timer1 + offset
org 60h;
Monitor:
ladowanie programu do ramu, dostepnego jako pamiec programu
ljmp offset; skok do zaladowanego programu
Ostatnio wykonywana instukcja manitora musi buc LJMP offset
Przyklad ladowanego progtamu
ORG OFsSET; czyli ustawienie licznik pc na 8000h
sjmp Start
ORG IE_TIMER1 + OFFSET ; np: 13h + 8000h
(nie mam podrecznika, zakladam, ze przerwanie od timera 1 jest pod adresem
13h)
ORG 60h + OFFSET
Start:
tu jest miejsce na akcje
sjmp start
7. W testowanym programie skoki bezwgledne ljmp musza zawierac offset
-wówczas po przetestowaniu podstawienie offsetu=0h daje gotowy program.
Troche przydlugie....
Pozdrawiam
ST
========
Path: news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!news.nask.pl!uw.edu.pl!news.pw.edu.pl!not-for-mai
From: BLE_Maciek <i80c586_at_nospam_cyberspace_NO_SPAM_.org>
Subject: Re: intel hex i 80c31
Date: Tue, 09 Mar 2004 19:29:02 +0100
Tue, 9 Mar 2004 16:25:12 +0100 jednostka biologiczna o nazwie
".sat.elita." <satelita_at_nospam_antysp.am-sp.kkonin.llm.pt> wyslala do portu
119 jednego z serwerow news nastepujace dane:
programu - lepiej tradycyjnie przeskaczyc tylko wektor przerwan,
wykonac zaladowanie programu poprzez lacze szeregowe do pamieci
Mozna tez przez USB, IDE, SCSI, Bluetooth ... ;-))
4. Mozna zrobis mix pamiec od 8000h poprzez iloczyn rd\ i psen\, sygnal wr\
na swoje wejscie...
czyli oba sygnaly odczytu beda odwolywaly sie do tego obszaru;
No tak, to jest racja. W sumie tak proste rozwiazanie a jakos mi nie
przyszlo mi do glowy.
7. W testowanym programie skoki bezwgledne ljmp musza zawierac offset
-wówczas po przetestowaniu podstawienie offsetu=0h daje gotowy program.
Znaczy chcialbys postac relokowalna ?
Ale w sumie po co ? I tak w kodzie zrodlowym uzywa sie etykiet, np
ljmp costam, a przed poczatkiem testowanego programu wystarczy dac
dyrektywe org i podac skad ma sie zaczynac.
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!news.internetia.pl!not-for-mai