www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Vhodno izhodni pini pri pic
Pojdi na stran Prejšnja  1, 2
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 21.71
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Čet Mar 08, 2007 1:18 pm    Naslov sporočila:   Odgovori s citatom

Intel 8008, prvi 8 bitni mikro iz leta 1972, ki je deloval samo z 3500 tranzistorji je imel compare:

1 0 1 1 1 s s s CMP s compare s with A, set flags
1 0 1 1 1 1 1 1 CMP M compare M with A, set flags
0 0 1 1 1 1 0 0 CPI b compare const b with A, set flags

Sramota je, da ga večina PICov nima. Evil or Very Mad

Jur
_________________
Koda:
CAIE A,9 ali CAIE A,8, to je tu vprašanje.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Highlag
Član
Član



Pridružen-a: Pet 23 Jan 2004 20:42
Prispevkov: 4034
Aktiv.: 17.03
Kraj: Črnuče

PrispevekObjavljeno: Čet Mar 08, 2007 3:11 pm    Naslov sporočila:   Odgovori s citatom

Pici so RISC procesorčki.

Reduced
Instruction
Set
Computer

Kar je približno podobno: Računalnik z zmanjšanim naborom ukazov. Zato pač nima določenih ukazov, ki se drugod pojavljajo.

_________________
If at first you don't succeed, destroy all evidence that you tried.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
GJ
Član
Član



Pridružen-a: Čet 02 Nov 2006 15:51
Prispevkov: 946
Aktiv.: 4.17
Kraj: Ljubljana

PrispevekObjavljeno: Čet Mar 08, 2007 3:57 pm    Naslov sporočila:   Odgovori s citatom

jur je napisal/a:
Sramota je, da ga večina PICov nima. Evil or Very Mad


Ahh.. jur kaj pa nakladaš Question
Oprosti, ampak pravzaprav je lahko tebe sram!
Ker nimaš prav!!!

Ukaz cmp obstaja vendar ni dolg le en CPU ukaz temveč dva. (Tudi v Intelov 8008 ni dolg le en CPU byte.)
Moraš le uporabiti 'macro language' (ali pa ročno, če ne programiraš veliko), ki ga MPLAB-ASM dobro podpira.
Primer:
Koda:
cmpwl macro Value                 ;if w < l then c = 1
      addlw   -Value              ;-l - w = w
      addlw   Value
      endm
;
;programska koda z makrom...
;
      movlw   2
      cmpwl   5
;
;programska koda brez makra...
;
      movlw   2
;if w < 5 then c = 1
      addlw   -5
      addlw   5


Podobno kot za cmpwl lahko napišeš še cmpwf makro.
Ko enkrat napišeš vse glavne/osnovne makrote je programiranje precej lažje.. Wink

LP GJ
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 21.71
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Čet Mar 08, 2007 4:44 pm    Naslov sporočila:   Odgovori s citatom

Če že moram izbirati, potem raje izberem sublw, kot pa macro. Je še vedno manj tipkanja. Sramota (za PICe) je, da je potrebno tipkati sublw ali pa macro namesto caie. Exclamation

Jur
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
GJ
Član
Član



Pridružen-a: Čet 02 Nov 2006 15:51
Prispevkov: 946
Aktiv.: 4.17
Kraj: Ljubljana

PrispevekObjavljeno: Čet Mar 08, 2007 5:10 pm    Naslov sporočila:   Odgovori s citatom

jur je napisal/a:
Če že moram izbirati, potem raje izberem sublw, kot pa macro. Je še vedno manj tipkanja. Sramota (za PICe) je, da je potrebno tipkati sublw ali pa macro namesto caie. Exclamation


Zopet nimaš povsem prav...
Moja koda ohrani prvotno vrednost registra w. In jo uporabiš le tam, kjer je to potrebno. Ukaz sublw pa to ne stori! Moj makro je povsem enakovreden ukazu cmp!
Drugače pa makrote napišeš le enkrat in jih spraviš/dopisuješ v eno 'macro.inc' datoteko. V nov projekt le vklučiš datoteko z makri nakar kličeš poljuben makro.
Preprosto in efektivno mar ne? Rolling Eyes
'Macro language' je zelo koristna, pregledna, zanesljiva in za pisanje programov hitra stvar, le logiko makrov je potrebno osvojiti.

Logična arhitektura PIC-ov pa je še vedno ena najboljših/najmočnejših!!!

LP GJ
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
GJ
Član
Član



Pridružen-a: Čet 02 Nov 2006 15:51
Prispevkov: 946
Aktiv.: 4.17
Kraj: Ljubljana

PrispevekObjavljeno: Čet Mar 08, 2007 5:25 pm    Naslov sporočila:   Odgovori s citatom

Še en namig, da boš spoznal moč makrov.

Moj najlubši/največkrat uporabljen makro za družino PIC F18...

Koda:
mCopyRam macro Source, Destination, Length
  variable Offs = 0
  if (Length <= 0) | (Length > 256)
    error "Macro error length must be in range 1..256"
  endif
  while Length > Offs
    movff   Source + Offs, Destination + Offs
Offs ++
  endw
 endm


Recimo da imamo..
Variabli RegA in RegB, ki sta 32 bitni.
Če želiš napisati RegA = RegB napišeš..

Koda:

     mCopyRam   RegA, RegB, 4


Oziroma enakovredno asm kodi..

Koda:

    movff    RegA + 0, RegB + 0
    movff    RegA + 1, RegB + 1
    movff    RegA + 2, RegB + 2
    movff    RegA + 3, RegB + 3


No kaj je hitrejše, preglednejše in zaneslivejše ???

LP GJ
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.58

PrispevekObjavljeno: Čet Mar 08, 2007 7:54 pm    Naslov sporočila:   Odgovori s citatom

jur je napisal/a:
Če že moram izbirati, potem raje izberem sublw, kot pa macro. Je še vedno manj tipkanja. Sramota (za PICe) je, da je potrebno tipkati sublw ali pa macro namesto caie. Exclamation


No, 8008 ni bil ravno najboljsi primer, ker ima ukaze za primerjavo zelo podobne tistim od malih PICov. Mnemonik se morda res imenuje drugace in ima se druge nacine uporabe, a vseeno opravi svojo nalogo:

1: CMP s in CMP M na malih PICih izvedes kot "xorwf naslov, w" ali s podobno logicno oz. aritmeticno operacijo (ti si recimo uporabil odstevanje, ki postavi tudi zastavico za "vecje", ceprav je bilo vprasanje samo kako preveriti ali je vrednost tocno 9 ali ne). PIC ima vsaj toliko prednosti, da je ukaz en sam za *cel* podatkovni naslovni prostor, ne pa da je locen na nekaj registrov in okno v pomnilnik (M). Na vecjih PICih je se nekaj drugih ukazov, ki lahko pomagajo pri primerjavi (nekaj tudi precej nenavadnih za pisanje kode v assemblerju, ocitno so bili dodani zaradi pogoste rabe v prevedenih visjenivojskih programih).

2: CPI b ima PICovski ekvivalent "xorlw vrednost" oz. druge aritmeticne zamenjave.

Da ne bo ravno izpadlo, kot da sem navdusen zagovornik PICovske arhitekture - je zastarela in se ji mocno pozna kdaj je bila razvita (nekatere druge so videti precej bolj razumno zasnovane tudi po vec kot dveh desetletjih); tudi pri novejsih primerkih (18F), kjer so poskrbeli za odpravo kupa nesmislov, je ostalo nekaj neverjetnih traparij (vsi ukazi na 18F so dolgi 2 ali 4 bajte, naslovni prostor za program je povsem locen od podatkovnega, PC pa kljub temu steje enobajtne vrednosti ?!?! :bonk: ) ... ima pa vseeno to, kar ima 8008 Smile

Najlepsa 8-bitna arhitektura MCUjev je po mojem mnenju Motorolina (HC11 in podobni); skoda da ni kaksna firma a'la NXP (ce za trenutek odmislim star Hitachijeve nadomestke) izdelal optimiziranega in nabildanega klona tega, sploh ker jih je Freescale ocitno bolj ali manj opustil.

_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja PIC-a v Assembler-ju Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2
Stran 2 od 2

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 491 dni


Powered by phpBB © 2001, 2005 phpBB Group