 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.71 Kraj: [color=zelena]Ljubljana[/color]
|
Objavljeno: Čet Mar 08, 2007 1:18 pm Naslov sporočila: |
|
|
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.
Jur
_________________
Koda: |
CAIE A,9 ali CAIE A,8, to je tu vprašanje. |
|
|
Nazaj na vrh |
|
 |
Highlag Član


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Čet Mar 08, 2007 3:11 pm Naslov sporočila: |
|
|
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 |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.17 Kraj: Ljubljana
|
Objavljeno: Čet Mar 08, 2007 3:57 pm Naslov sporočila: |
|
|
jur je napisal/a: |
Sramota je, da ga večina PICov nima. |
Ahh.. jur kaj pa nakladaš
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..
LP GJ |
|
Nazaj na vrh |
|
 |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.71 Kraj: [color=zelena]Ljubljana[/color]
|
Objavljeno: Čet Mar 08, 2007 4:44 pm Naslov sporočila: |
|
|
Č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.
Jur |
|
Nazaj na vrh |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.17 Kraj: Ljubljana
|
Objavljeno: Čet Mar 08, 2007 5:10 pm Naslov sporočila: |
|
|
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. |
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?
'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 |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.17 Kraj: Ljubljana
|
Objavljeno: Čet Mar 08, 2007 5:25 pm Naslov sporočila: |
|
|
Š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 |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Čet Mar 08, 2007 7:54 pm Naslov sporočila: |
|
|
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. |
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 ?!?! ) ... ima pa vseeno to, kar ima 8008
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 |
|
 |
|
|
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: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|