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