PIC elado

Istvan Retaller istvan.retaller at evoran.hu
Mon Apr 28 18:56:39 CEST 2003


Szia, Imre!

2003.04.28. 17:27:08, Miko Imre <imre.miko at siemens.com> wrote:

>Sziasztok,
>
>Kezd itt atmenni anyazasba a dolog.

En ennek nyomat sem lattam.


>Egy olyan feladatnal, ahol sok valtozod van, ott mar mindent nem tarolhatsz
>a regiszterekben.

En speciel lebegopontos szorzoaritmetikat irtam, csak regiszterekben.
Raadasul a feladat miatt a szokasos 3 helyett 4 byte volt az alap
es 1 byte a kitevo. Eleg volt az operandusok es az eredmeny tarolasara is,
hogy csak regisztereket hasznaltam.


>Lassunk egy-ket peldat:
>
>a PIC-nel egy operandusos muvelet (egy valtozo novelese)
>
>    incf valtozo,f
>
>AVR-nel ha jol sejtem ugyanez:
>
>    lds rega, cim
>    inc rega
>    sts cim, rega

Hm. Es ha az AVR-ben hozzatartozik a valtozo inicializalasa, majd mentese,
akkor a PIC-ben miert nincsen inicializalva es mentve...?


>ket operandusos muvelet (ket valtozo osszeadasa, es tarolas egy harmadikban a= b + c)
>
>PIC:
>    movf    b,w
>    addwf   c,w
>    movwf   a
>
>AVR:
>    lds rega, a
>    lds regb, b
>    add rega, regb
>    sts c, rega
>

Ugyanaz. A PIC-ben nem toltod fel a regisztereket, az AVR-ben igen.

>Nezzuk ugy, hogy a += b;
>
>PIC:
>    movf    b,w
>    addwf   a,f
>
>
>AVR:
>    lds rega, a
>    lds regb, b
>    add rega, regb
>    sts a, rega
>

Ez is inkorrekt. PIC-ben feltetelezed, hogy a regiszterek mar
inicializalva vannak, az avr-ben meg nem.

>Tegyleg igazatok van, kisarkitott voltak a peldaim, mert altalaban
>tobb muveletet vegezunk altalaban egymas utan, es csak utanna
>taroljuk az eredmenyt. Erre legyen pelda az Istvan morickaja:
>
>
>Istvan Retaller wrote:
>
>> Egy Moricka-pelda:
>> Negy portot olvasok be es az a+b*c-d fuggvenyt kell kiszamitanom.
>> Ez hany utasitas, mennyi ido PIC-ben?, Tetelezzuk fel,
>> hogy 8 bites a szorzas eredmenye, mert ha 16 bites, a PIC meg jobban
>> lemarad. AVR-re igy nez ki:
>> in rega,PORT_A
>> in regb,PORT_B
>> in regc,PORT_C
>> in regd,PORT_D
>> mul regb,regc
>> add rega,R0
>> add regd,rega
>
>Ha mar hw szorzo, akkor en a 18-as szeriat emlitem:
>PIC18xxx -en:
>
>movf    PORTB,w
>mulwf    PORTC
>movf    PORTD,w
>subwf    PRODL,w
>addf    PORTA,w
>

Ez mar majdnem korrekt, csak nem a pelda szerinti dolgot csinalja.

>
>Meg mielott erzelmekkel tulfutve lehordjuk a sarga foldig a PIC-eket,
>es istenitjuk az AVR-t, legalabb objektiven gondoljuk at. Az MCU-k is

Nezd, kifejezetten a te kedvedert irom le ujra, hogy nekem tokmindegy,
ki milyen processzorral dolgozik. Nekem jo tizeneves PIC-es mult utan
nehezemre esett valtani, de belekenyszerultem. Annal is nehezebb volt,
mert az elso PIC szimulatort, amit a Humansoft forgalmazott, en irtam,
igy erosen kotodtem a PIC-hez.
Aztan talaltam jobbat es maradtam.

Azert abban is lehet valami, hogy aki PIC-rol AVR-re valtott, olyan
tobb is van a listan.
De olyanrol nem hallani, hogy valaki az AVR utan PIC-ezni kezdett. Akik
mindkettoben dolgoztak, ott egy iranyu az elvandorlas.

>Es vegul, hogy ne csak kisarkitott peldakat hozzunk, lassunk egy eleg
>gyakori muveletet egy 16 bites binaris szam BCD-ve alakitasat:
>Ez PIC-en igy nez ki (32 word a programmemoriaban, 6 fileregiszter,
>es 406 orajel hosszu):
>Varom az AVR-es implementaciojat, hogy egy ropke oszehasonlitast
>tegyunk.

Ez a feladatkituzes nagyon kedves, bizonyara sokan nekiugranak, hogy
a kedvedert megirjak, de en lustabb vagyok.
En legfeljebb egy 32*32 bites, mul utasitasok mellozesevel kialakitott
szorzorutint tudok felajanlani, hogy ird meg PIC-ben es hasonlitsuk
ossze. Szerintem lesz annyi kedved, mint nekem a bin-bcd irasahoz.

Egyebkent sajnalatos, hogy az osszehasonlitasbol a sebessegek, a
programmmemoria, RAM, korlatlan stackmelyseg es legfokeppen
az _ar_ mind-mind kimaradtak. ;))

Udv, RI






More information about the Elektro mailing list