Jump to content
PLC Forum


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


Neway
 Share

Recommended Posts

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!

Edited by Neway
Link to comment
Share on other sites


Livio Orsini

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).

Edited by Livio Orsini
Link to comment
Share on other sites

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 to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...