Programiranje AT89S8253 [C Jezik] , molim pomoć!
Moderators: pedja089, stojke369, trax, InTheStillOfTheNight
- milan_metal
- Posts: 20
- Joined: 27-12-2009, 12:41
Programiranje AT89S8253 [C Jezik] , molim pomoć!
Pozdrav,
Imam mikrokontroler AT89S8253 koji programiram razvojnim sistemom mikroelektronike (Easy8051 v6) i neke HELLO WORLD programe koje su oni prilozili uz sistem sam kompajlirao njihovima mikroC kompajlerom
Ako je neko koristio ovaj mikrokontroler, molim samo da mi pomogne kako da upravljam izlazima ovog kontrolera, posto za nekih 15ak dana trebam da napravim neki projekat, koji ce da upravlja sedmosegmentnim displejima za prikaz nekih brojeva, e sad, kontroler ima 32 I/O za koristenje, ima portove A,B,C,D (0,1,2,3) i svaki od njih ima po 8 izlaza - meni treba samo primjercici koda koji ce dati logicku jedinicu na izlaz A.1 ili nebitno, B.4, znaci bilo koji izlaz.
Pokusavao sam na mnoge nacine ali kompajler izbacivao greske i nije radilo.
Linija koda iz njihovog HELLO WORLD programa:
P0 = 0x00; // Turn ON diodes on PORT0
Pokusao sam napisati P0.1 = 0x00;, P A.1 = 0x00; i slicne primjere,ali bez uspjeha.
Unapred zahvalan.
Imam mikrokontroler AT89S8253 koji programiram razvojnim sistemom mikroelektronike (Easy8051 v6) i neke HELLO WORLD programe koje su oni prilozili uz sistem sam kompajlirao njihovima mikroC kompajlerom
Ako je neko koristio ovaj mikrokontroler, molim samo da mi pomogne kako da upravljam izlazima ovog kontrolera, posto za nekih 15ak dana trebam da napravim neki projekat, koji ce da upravlja sedmosegmentnim displejima za prikaz nekih brojeva, e sad, kontroler ima 32 I/O za koristenje, ima portove A,B,C,D (0,1,2,3) i svaki od njih ima po 8 izlaza - meni treba samo primjercici koda koji ce dati logicku jedinicu na izlaz A.1 ili nebitno, B.4, znaci bilo koji izlaz.
Pokusavao sam na mnoge nacine ali kompajler izbacivao greske i nije radilo.
Linija koda iz njihovog HELLO WORLD programa:
P0 = 0x00; // Turn ON diodes on PORT0
Pokusao sam napisati P0.1 = 0x00;, P A.1 = 0x00; i slicne primjere,ali bez uspjeha.
Unapred zahvalan.
Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!
E sad ovo dolje je zanimljivo!milan_metal wrote:meni treba samo primjercici koda koji ce dati logicku jedinicu na izlaz A.1
Ako sam dobro vidio port ti je definiran da sve bitove postavi u logičku nulu. P= 0x00.milan_metal wrote:Pokusao sam napisati P0.1 = 0x00;, P A.1 = 0x00; i slicne primjere,ali bez uspjeha.
Sad, nezanm jel ti compiler invetira podatak kod postavljnjanja porta u izvršni kod, sumjnjam, pa bi, da želiš sve jedinice, valjda trebao biti P=0xFF.
Ako je u pitanju P A.1 =0x01(opciono 0x02), P B.4=0x08 (opciono 0x10), stvar je u tome dali broji port od 0 ili ne. itd... itd...
Pojašnjenje je načelno, neznam kako mikroC definira naziv porta. Na kraju nije ni bitno to je samo stvar sintakse.
Nešto o hex kodu je pojašnjeno u postu: "Programiranje u assembleru".
Pozdrav
Today's scientists have substituted mathematics for experiments, and they wander off through equation after equation, and eventually build a structure which has no relation to reality.
- Nikola Tesla
- Nikola Tesla
- milan_metal
- Posts: 20
- Joined: 27-12-2009, 12:41
Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!
Hvala vam na brzom odgovoru,
Ovako stoji stvar, taj primjer koji ste citirali sam onako naveo smao da dam primjer, za logicku jedinicu mi treba FF naravno, kada odradim P0 = 0xFF tada mi cijeli taj port radi, a meni treba poseban podatak ili komanda koja ce da aktivira samo odredjeni port, posto saljem po 4 podatka na odredjene portove, koje cu posle dekodirati za sedmosegmentni displej.
Na razvojnom sistemu koji ima 32 LED diodeza testiranje programa, portovi za svaku od njih su mi imenovani P0.0 , P0.1 , P0.2 i tako dalje, pa bi trebalo tako nesto i u kodu da se nazivaju.
Da li znate mozda neki primjer ovoga u drugom kompajleru, kompajler nije toliko bitan kao kod koji ce da sluzi svrsi.
Hvala unapred,
Pozdrav.
Ovako stoji stvar, taj primjer koji ste citirali sam onako naveo smao da dam primjer, za logicku jedinicu mi treba FF naravno, kada odradim P0 = 0xFF tada mi cijeli taj port radi, a meni treba poseban podatak ili komanda koja ce da aktivira samo odredjeni port, posto saljem po 4 podatka na odredjene portove, koje cu posle dekodirati za sedmosegmentni displej.
Na razvojnom sistemu koji ima 32 LED diodeza testiranje programa, portovi za svaku od njih su mi imenovani P0.0 , P0.1 , P0.2 i tako dalje, pa bi trebalo tako nesto i u kodu da se nazivaju.
Da li znate mozda neki primjer ovoga u drugom kompajleru, kompajler nije toliko bitan kao kod koji ce da sluzi svrsi.
Hvala unapred,
Pozdrav.
-
- Penjem se :)
- Posts: 58
- Joined: 23-02-2005, 14:13
- Location: Hrvatska - Cakovec
- Contact:
Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!
Pozdrav, kako programe za ovaj kontroler pišem u asembleru možda ti neću odgovoriti sasvim ispravno za C programiranje ali evo pojašnjenja bazirano na asembleru.
Nisam siguran dali se port0(P0) može prozvati portA (PA) bez dodatne definicije u programu kao
PA equ P0
P0=0xFF postavlja sve bitove porta0 u jedinicu jer je 0xFF heksadecimalno = 1111 1111 binarno
P0.1=0xFF ili P0.1=0x00 će vjerojatno u kompajleru javiti grešku jer pokušavaš bit 1 porta nula postaviti u vrijednost 255 decimalno što je nemoguće vrijednost bita može biti o ili 1. Tako da bi ova sintaksa trebala biti P0.1=0 ili P0.1=1 odnosno P0=0x00 ili P0=0x02 pri ćemu posljednje dvije komande ne mjenjaju samo sadržaj P0.1 već kompletnog porta P0 (nule i na ostale bitove). Asembler ima i posebne komande za rad s bitovima te se isto radi sa CLR P0.1 ili SETB P0.1
Probaj shvatiti razliku između bita i bajta i sve će ti biti puno jasnije.
Nisam siguran dali se port0(P0) može prozvati portA (PA) bez dodatne definicije u programu kao
PA equ P0
P0=0xFF postavlja sve bitove porta0 u jedinicu jer je 0xFF heksadecimalno = 1111 1111 binarno
P0.1=0xFF ili P0.1=0x00 će vjerojatno u kompajleru javiti grešku jer pokušavaš bit 1 porta nula postaviti u vrijednost 255 decimalno što je nemoguće vrijednost bita može biti o ili 1. Tako da bi ova sintaksa trebala biti P0.1=0 ili P0.1=1 odnosno P0=0x00 ili P0=0x02 pri ćemu posljednje dvije komande ne mjenjaju samo sadržaj P0.1 već kompletnog porta P0 (nule i na ostale bitove). Asembler ima i posebne komande za rad s bitovima te se isto radi sa CLR P0.1 ili SETB P0.1
Probaj shvatiti razliku između bita i bajta i sve će ti biti puno jasnije.
- milan_metal
- Posts: 20
- Joined: 27-12-2009, 12:41
Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!
mikromatic,
hvala Vam na odgovoru, jako dobro ste mi obasnili i puno sam vam zahvalan. ja sam treca godina elektrotehnicke skole i razumijem te stvari sa bitovima dovoljno dobro. NIsam se sjetio da bi moglo tako da radi, ideja Vam je super. kod dijela 0xFF = 1111 1111 mi je postalo poprilicno jasno, tih 8 bitova zapravo odgoovara svakok od izlaza porta.isprobacu to sve doolk dodjem kuci. hvala jos jednom i lijep pozdrav.
hvala Vam na odgovoru, jako dobro ste mi obasnili i puno sam vam zahvalan. ja sam treca godina elektrotehnicke skole i razumijem te stvari sa bitovima dovoljno dobro. NIsam se sjetio da bi moglo tako da radi, ideja Vam je super. kod dijela 0xFF = 1111 1111 mi je postalo poprilicno jasno, tih 8 bitova zapravo odgoovara svakok od izlaza porta.isprobacu to sve doolk dodjem kuci. hvala jos jednom i lijep pozdrav.
- milan_metal
- Posts: 20
- Joined: 27-12-2009, 12:41
Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!
Evo pošto mi je jako vazno da mi neko pomogne, odlucio sam podjelit nekoliko slika sa vama, znaci isprobao sam mnoge varijante podataka da saljem ali ne mogu bas skapiram na kom principu tacno to radi, ako neko ima predstavu o cemu ovaj moj razvojni sistem "prica" nek pise.
P0 = 0x00; // sve LED-ice gore.. zar ne trebalo na FF da sve gore,a na 00 da su pogaseni svi portovi ?
P0 = 0x01; // sve osim P0.0
P0 = 0x02; // P0.1 ne radi
P0 = 0x03;
Čak sam pokušao i binarne podatke da saljem, evo primjera:
P0 = 11111110;
Sat i po sam cackao necu li napipati šablon po kome cu upisivati podatke pa da definisem sebi svaki port zasebno pa posle jednostavno da mogu koristiti, ali bez uspjeha.
Ako je neko programirao slican kontroler, saljite neki primjer moralo bi ovo biti slicno i na drugim...
Hvala Vam unapred,
Lijep Pozdrav.
P0 = 0x00; // sve LED-ice gore.. zar ne trebalo na FF da sve gore,a na 00 da su pogaseni svi portovi ?
P0 = 0x01; // sve osim P0.0
P0 = 0x02; // P0.1 ne radi
P0 = 0x03;
Čak sam pokušao i binarne podatke da saljem, evo primjera:
P0 = 11111110;
Sat i po sam cackao necu li napipati šablon po kome cu upisivati podatke pa da definisem sebi svaki port zasebno pa posle jednostavno da mogu koristiti, ali bez uspjeha.
Ako je neko programirao slican kontroler, saljite neki primjer moralo bi ovo biti slicno i na drugim...
Hvala Vam unapred,
Lijep Pozdrav.
- milan_metal
- Posts: 20
- Joined: 27-12-2009, 12:41
Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!
Probavao sam svakako da uklopim kombinaciju od 2 HEX broja pa da mi ispane nesto smisleno, ponekada ispane, recimo 0x55 dobijem svaku drugu ledicu da svijetli (01010101) jer je 5 u binarnom 0101 , i tako neke kombinacije.
Ali i dalje treba velika pomoc..
Hvala i izvinite za novi post.
Ali i dalje treba velika pomoc..
Hvala i izvinite za novi post.
Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!
LEDs ARE ACTIVATED BY LOGIC ZERO (0V)
To piše na ploči!!! Znači sve što ti upališ to se UGASI, a sve ugašeno SVIJETLI. Koliko sam imao prilike vidjeti sve ti radi kako treba.
To piše na ploči!!! Znači sve što ti upališ to se UGASI, a sve ugašeno SVIJETLI. Koliko sam imao prilike vidjeti sve ti radi kako treba.
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
- milan_metal
- Posts: 20
- Joined: 27-12-2009, 12:41
Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!
Eh da vidiš, toliki natpis a nisam obratio pažnju, štaviše vidio sam ga al mi nije imo smisla na prvi pogled pa sam zanemario.
Prelistacu opet sve kombinacije kojih se sjetim a u cetvrtak nosim u skolu da sa profesorom vidim oko toga, pa ako ne sredimo nista, pisacu dalje ovde da pomognu voljni ljudi za to.
Hvala vam za dosadasnju pomoć
Pozdrav
Prelistacu opet sve kombinacije kojih se sjetim a u cetvrtak nosim u skolu da sa profesorom vidim oko toga, pa ako ne sredimo nista, pisacu dalje ovde da pomognu voljni ljudi za to.
Hvala vam za dosadasnju pomoć
Pozdrav
Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!
To i te kako ima smisla. Prouci malo izlaze da tom kontroleru...
http://www.mikroe.com/eng/chapters/view ... hitecture/
http://www.mikroe.com/eng/chapters/view ... hitecture/