Sari la conținut
ELFORUM - Forumul electronistilor

Pini aflati intr-un array.


Eugen_B

Postări Recomandate

Salut ,

doresc sa plasez niste pini intr-un array, pentru a apela anumite operatii pe ei direct printr-un for.

Ma gandeam ca o sa fie ceva de genul:

bit *pin[4];bit *tris[4];
unde eu trebuie sa pun la fiecare adresa pinului ,
*pin[0]=@ ((unsigned)&PORTC*8)+0;
(de exemplu pt RC0 ), la fel si pentru TRIS, si dupa aceste operatii urmeaza sa folosesc pin[0] in locul la RC0 .

Problema este ca nu-i convine compilatorului (HITEC-C18) , si cel mai probabil nu am scris eu bine cu pointerii .Cum trebuie scris corect? Adica mie mi se pare corect ,definesc un pointer la un bit , ii dau adresa pinului , si folosesc valoarea de la adresa pointerului ca pe pin .

Sigur gresesc pe undeva , poate cineva sa ma lamureasca ?

Link spre comentariu
  • Răspunsuri 2
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Liviu M

    1

  • Eugen_B

    1

  • izua

    1

Zile populare

Top autori în acest subiect

Din cate stiu eu, compilatoarele de la hitech nu accepta pointeri catre bit. Citat din manualul picc - compilatorul pentru midrange de la hitech:

It is, however, not possible to declared pointers to bit variables or statically initialise bit variables.

Cauta si tu in manualul de la C18 si vezi ce zic.
Link spre comentariu

Nu ai cum. Standardul C-99 tocmai de-aia sugerează măștile pe biți.

Poți să faci câteva definiri de precompilator, dar tot nu le poți itera programatic.

 

Dacă vrei să iterezi bit cu bit, încearcă mascare cu deplasare

uint8_t registru = 0x00;for (uint8_t k = 0; k < 7; k++) if ((k % 2) == 0)  registru |= (1 << k);

Astfel, pe biții 0, 2, 4, 6 (adică ăia care dau rest 0 la împărțirea la 2- operatorul % -) vor fi setați, pe când ceilalți vor rămâne pe 0. registru va avea valoarea 0101 0101 la final.

 

Vezi că la PIC apar probleme de genul read-modify-write (unul din motive pentru care eu nu suport arhitectura PIC). E recomandat să faci toate operațiile în memorie, într-un registru numit de obicei shadow, după care să scrii acest registru în PORT.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări