MPLAB IDE v7.21
Pavel Prochazka.zde.cz
hacesoft@mujmail.cz
Pondělí Říjen 24 09:13:29 CEST 2005
Aha to me nenapadlo. Je to PIC16F877A v pouzdre PCLL44
Pavel Prochazka.zde.cz
Marek Pavlu napsal(a):
>Zdravim,
>
>
>No program vypada v poradku, ale myslim, ze jste zapomněl zminit, jaky typ
>procesoru jste pouzil:). Totiž mnohe typy PIC mají na portech ruzne další
>funkcni bloky a často jsou implicitne po startu zapnuty, takze digitalni I/O
>brana se z nich teprve musí udelat.
>
>Trebas 16F628, 16F627, 12F675, ...
>Tohle je jen par typu, které maji nohy jako analogove komparatory nebo A/D
>prevodník. Tak dejste vedet, jaky typ a urcite se něco vymysli:).
>
>
>
>// #define PORTBIT(adr, bit) ((unsigned)(&adr)*8+(bit))
>// static bit button @ PORTBIT(PORTA, 0);
>
>Tyhle dva radky jsou trosku nebo spis uplne mimo misu ANSI C:).
>Cele je to o tom, jak PICC pracuje s jednotlivym bitem na urovni syntaxe,
>pricemz v ANSI C nemá "bit" co pohledavat:).
>
>Funguje to tak, ze mate nejakou sadu registru a chcete u konkretniho
>registru pouzivat paty bit.
>
>Tak kompiler si vezme adresu toho registru vzhledem k pocatku registru. Coz
>je ta magicka formule:
>
>(unsigned)(&adr)
>
>v prvnim radku. No ted kdyz to vynásobíte osmi, tak simuzete představit, ze
>kompiler jako by chape pole registru jako bitove pole a ten nas registr
>zacina nultym bitem prave na pozici udavane cislem:
>
>(unsigned)(&adr)
>
>Ted když chcete paty bit, tak k tomu prictete tu petku a kompiler jakoby se
>posunul v bitove adresovatelne pameti na danou pozici daneho bitu.
>
>Ve skutecnosti to cele je jen konvence a kompiler takto nepracuje, to je jen
>"jakasi" nazorna konstrukce v syntaxi PICC, aby tomu bylo lepe rozumet a
>
> dalo se pouzivat i typ bit.
>
>Na urovni asm po kompilaci se pracuje primo s požadovaným registrem a zadne
>posuny v bitove pameti se nerealizuji. Predpokladam, ze jednim z duvodu
>pridani typu bit bylo zlepseni optimalizace kodu.
>
>Kdyz se bitove operace deji primo pomoci operaci and, or, xor, tak ne vzdy
>to je pro slozite operace pro kompiler unosne. Treba pitome zapsani nuly
>nebo jednicky jeste není velky problem a dobře se optimalizuje, ale pokud
>hodlate v jednom kroku udelat několik bitovych operaci, tak se to bude na
>jednom radku hemzit logickými funkcemi...
>
>Snad jsem to rekl srozumitelne :).
>
>
>
>S pozdravem,
> Marek Pavlu
>
>//
>// #define PORTBIT(adr, bit) ((unsigned)(&adr)*8+(bit))
>// static bit button @ PORTBIT(PORTA, 0);
>// #define time 1
>// main(void)
>// {
>// unsigned i;
>// unsigned char j;
>// TRISA = 1; /* bit 0 jako vstup */
>// TRISB = 0; /* veschno ven */
>// j = 0;
>// for(;;) {
>// PORTB = 0x00; /* ->0 */
>// for(i = time ; --i ;)
>// continue;
>// PORTB = j; /* set out ->j */
>// for(i = time ; --i ;)
>// continue;
>// if(button == 1){
>// j++;
>// }
>// }
>// }
>//
>// Jedine cemu dokonale nerozumim jsou prvni dva radky, ten prvni me nic
>// nerika ale ten druhy je nejaka definice jednoho bitu na promennou.
>// Puvodne jeste tam bylo jako prvni prikaz static ale to se me nezdalo a
>// tak jsem to umazl. Budu rad za kazdou pomoc...
>// A jeste radky s prikazem for puvodne vypadali takto: for(i = 1600 ; --i
>// ;) ale pro krokovani jsem to upravil.
>//
>// Pavel Prochazka.zde.cz
>//
>//
>// **
>// Pavel Prochazka.zde.cz napsal(a):
>//
>// >Dobry den,
>// >prave jsem stahnul MPLAB IDE v7.21 a HI-TECH PICC kompiler pro cecko.
>// >Nějaký příklad jsem už našel abych si mohl vyzkoušet jak to všechno
>// >funguje. Kod se přeloží, akorát jsem nepřišel na to jak přeložené cecko
>
>// >do asm zobrazit, jinak než že se podivám na hdd a prohlidnu si
>// výsledek.
>// >uvítal bych kdyby se preklad ukazal v MPLABu vedle kodu v cecku abych
>// >vedel jak co přeložil.
>// >Po přeložení jsem si chtel vyškoušet simulaci. Kod bez problému
>// >krokuji. Ale nemohu za boha přijít na to jak menit hodnoty na potrech
>// >IO. Aby program reagoval na podnety. A vubec celkove abych mel přehled
>// o
>// >registrech a podobne.
>// >Poradi nekdo?
>// >
>// >
>// >Pavel Prochazka.zde.cz
>// >
>// >
>// >_______________________________________________
>// >HW-list mailing list - sponsored by www.HW.cz
>// >Hw-list@list.hw.cz
>// >http://list.hw.cz/mailman/listinfo/hw-list
>// >
>// >
>// >
>// >
>// >
>// >
>// >
>// _______________________________________________
>// HW-list mailing list - sponsored by www.HW.cz
>// Hw-list@list.hw.cz
>// http://list.hw.cz/mailman/listinfo/hw-list
>
>
>
> _____
>
>avast! Antivirus <http://www.avast.com> : Odchozi zprava cista.
>
>
>Virova databaze (VPS): 0542-5, 21.10.2005
>Testovano: 24.10.2005 0:34:27
>avast! - copyright (c) 2000-2003 ALWIL Software.
>
>
>
>_______________________________________________
>HW-list mailing list - sponsored by www.HW.cz
>Hw-list@list.hw.cz
>http://list.hw.cz/mailman/listinfo/hw-list
>
>
>
>
>
>
>
Další informace o konferenci Hw-list