MPLAB IDE v7.21

Marek Pavlu pavlu@hwg.cz
Pondělí Říjen 24 15:15:32 CEST 2005


Zdravim, 

Tak tam zrovna sedi na RA0:3 A/D převodník :). 
Takze si doi programu pred praci s I/O branou dejte toto: 

ADCON1 = 6; 



S pozdravem, 
                Marek Pavlu 

//  -----Original Message----- 
//  From: hw-list-bounces@list.hw.cz [mailto:hw-list-bounces@list.hw.cz] On 
//  Behalf Of Pavel Prochazka.zde.cz 
//  Sent: Monday, October 24, 2005 9:13 AM 
//  To: HW-news 
//  Subject: Re: MPLAB IDE v7.21 
//  
//  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 
//  > 
//  > 
//  > 
//  > 
//  > 
//  > 
//  > 
//  _______________________________________________ 
//  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): 0543-0, 24.10.2005
Testovano: 24.10.2005 15:15:32
avast! - copyright (c) 2000-2003 ALWIL Software.






Další informace o konferenci Hw-list