Vai al contenuto
PLC Forum


Comporre Un Byte Da Pezzi Di Altri Byte - Ignoranza su operazioni bitwise


Neway

Messaggi consigliati

Sono un neofita che programma PIC in C18 e mi ritrovo a dover inviare tramite l'interfaccia SPI un byte composto da due bit singoli più un pezzo di un altro byte, così:

user posted image

i primi due bit blu vanno scartati perchè privi di informazioni.

Ho cercato di capire come comporlo con le operazioni di bitwise, ma da autodidatta quale sono non sono riuscito nell'impresa. potreste darmi una mano?

Grazie mille!

Modificato: da Neway
Link al commento
Condividi su altri siti


I 2 bit singoli da dove li prelevi e i che posizione sono?

Per comporre il byte è semplice.

Supponi di chiamare A il byte che contiene i 2 bit singoli nella posizione 0 e 1; èer portarli dalla posizione 1,0 alla 7,6 usi un loopdi shift a sx, simile aquesto:


         for (i=1;i<=6;++i)
             A =  << A;


poi pulisci i 2 bits di B e sommi

  A = A && C0h;
  B = B && 3Fh;
  C = A || B;


Dovresti verificare se nelle built in functions del tuo compilatore esistono funzioni che possono semplificare; p.e. nel compilatore CSC esiste la funzione shift_left (address, bytes, value).

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Grazie Livio, gentilissimo come sempre, però ho bisogno di ulteriori chiarimenti.

Per la parte relativa al bit shift ho capito. Nel mio caso i due primi bit li imposto a piacere, quindi posso creare un byte che li abbia direttamente all'inizio.

Ho invece bisogno di maggiori lumi per la seconda parte. Per favore conferma che i miei commenti siano esatti

 A = A && C0h;    //Pulisce i primi 6 bit di A
B = B && 3Fh;    //Pulisce gli ultimi due bit di B               
C = A || B;          //Unisce i due byte

Inoltre bisogna usare gli operatori & e | , non && e || che sono gli operatori logici, giusto?

Grazie ancora.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...