Programiranje AT89S8253 [C Jezik] , molim pomoć!

Rasprava o AVR mikrokontrolerima, AVR projekti i drugo vezano za AVR...

Moderators: pedja089, stojke369, trax, InTheStillOfTheNight

Post Reply
User avatar
milan_metal
Posts: 20
Joined: 27-12-2009, 12:41

Programiranje AT89S8253 [C Jezik] , molim pomoć!

Post by milan_metal »

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.
buco-1
Napredujem
Napredujem
Posts: 105
Joined: 24-10-2010, 21:22

Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!

Post by buco-1 »

milan_metal wrote:meni treba samo primjercici koda koji ce dati logicku jedinicu na izlaz A.1
E sad ovo dolje je zanimljivo!
milan_metal wrote:Pokusao sam napisati P0.1 = 0x00;, P A.1 = 0x00; i slicne primjere,ali bez uspjeha.
Ako sam dobro vidio port ti je definiran da sve bitove postavi u logičku nulu. P= 0x00.
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
User avatar
milan_metal
Posts: 20
Joined: 27-12-2009, 12:41

Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!

Post by milan_metal »

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.
micromatic
Penjem se :)
Penjem se :)
Posts: 58
Joined: 23-02-2005, 14:13
Location: Hrvatska - Cakovec
Contact:

Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!

Post by micromatic »

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.
__________________
http://www.micromatic.hr
__________________
User avatar
milan_metal
Posts: 20
Joined: 27-12-2009, 12:41

Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!

Post by milan_metal »

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.
User avatar
milan_metal
Posts: 20
Joined: 27-12-2009, 12:41

Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!

Post by milan_metal »

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 ?
Image

P0 = 0x01; // sve osim P0.0
Image

P0 = 0x02; // P0.1 ne radi
Image

P0 = 0x03;
Image

Čak sam pokušao i binarne podatke da saljem, evo primjera:
P0 = 11111110;
Image


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.
User avatar
milan_metal
Posts: 20
Joined: 27-12-2009, 12:41

Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!

Post by milan_metal »

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.
User avatar
Kukinjos
Pravi forumaš
Pravi forumaš
Posts: 1724
Joined: 28-03-2012, 18:01
Location: Split

Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!

Post by Kukinjos »

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.
Cezare, star sam i nemoćan, ali poslušaj moj savjet ....
User avatar
milan_metal
Posts: 20
Joined: 27-12-2009, 12:41

Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!

Post by milan_metal »

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
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7873
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Programiranje AT89S8253 [C Jezik] , molim pomoć!

Post by pedja089 »

To i te kako ima smisla. Prouci malo izlaze da tom kontroleru...
http://www.mikroe.com/eng/chapters/view ... hitecture/
Post Reply