Vai Indietro   PcTuner Forum > Sezione Hardware > Programmazione PIC
Arcade Registrazione Blogs Regolamento Feedback FAQ Lista Utenti Calendario Segna come Letti

Ultimi 5 blog pubblicati su PcTuner Blog
Data Titolo

Rispondi
 
Strumenti Discussione Modalità Visualizzazione
Vecchio 17-06-2012, 16.11.21   #1
Credendo Vites
 
L'avatar di  SoldatoSemplice
 

Iscritto da: 17-11-2005
Locazione: Roma
Messaggi: 1,535
Feedback: (0)
Cosa significa e come si interpreta questo costrutto?

Ciao a tutti,

Stò cercando di replicare una sorgente assembly alquanto complessa ed ho incontrato nel cammino questo tipo di costrutto:

#define TOKEN_ACK (0x02<<2)

Io vorrei ora sapere: cosa significa e come interpreto quel (0x02<<2) ?

Potrebbe significare qualcosa del tipo i soli due bit meno significativi della costante 0x02 sono gli unici a dover rimanere immutati? Oppure sono gli unici a poter variare? Oppure cosa?

Nelle istruzioni assembly l'operatore << indica un'operazione di shift ma, in questo caso, associato ad una define che non fa altro che associare una costante numerica ad un'etichetta non credo abbia molto senso.

Qualcuno di voi ha mai incontrato prima questa istruzione? Sa illuminarmi su cosa significa?
__________________
Il tempo è il miglior maestro, purtroppo uccide tutti i suoi allievi.
SoldatoSemplice Non in Linea   Rispondi Citando
Vecchio 19-06-2012, 10.25.53   #2
Registered User
 
L'avatar di  Camillo
 

Iscritto da: 31-01-2006
Locazione: Genova
Messaggi: 1,471
Feedback: (0)
E' proprio uno shift a sinistra di 2 volte.
0x02<<2=0x08

E' una costruzione che uso molto soprattutto per definire la potenza di 2 di un numero.
Un esempio reale:
Codice:
#define	P_BUZZ	PORTBbits	// Port del buzzer.
#define	B_BUZZ	RB5	 	// Bit del buzzer.
#define	BB_BUZZ	5	 	// Bit del buzzer.
#define P_LED	PORTBbits	// Port del LED.
#define B_LEDV	RB1		// BIT del LED.
#define B_LEDR	RB2		// BIT del LED.
#define B_LEDG	RB3		// BIT del LED.
#define BB_LEDV	1		// BIT del LED.
#define BB_LEDR	2		// BIT del LED.
#define BB_LEDG	3		// BIT del LED.

#define PBTRIS	~(1<<BB_LEDV | 1<<BB_LEDG | 1<<BB_LEDR | 1<<BB_BUZZ)
.
.
.
void main(){

  TRISA = PATRIS;
  TRISB = PBTRIS;
  TRISC = PCTRIS;
  TRISD = PDTRIS;
  TRISE = PETRIS;
  // La direzione del port E al reset è analogica. Vedi manuale a pag.95.
Come sai le porte dei PIC di default sono completamente in input, con l'istruzione TRIS si definiscono i bit in ingresso ed uscita.
Quindi preparo le cose im modo che i bit in uscita vengano messi a 0.
In questo modo non mi devo preccupare se un'uscita cambia bit.
__________________
Camillo

Internet ti fa vedere tutto ma non ti fa toccare niente. (Camillo Ferrari)
Camillo Non in Linea   Rispondi Citando
Rispondi Per le vostre immagini su questo forum potete usare PcTunerUp!
Iscriviti gratuitamente alla nostra newsletter.


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 visitatori)
 
Strumenti Discussione
Modalità Visualizzazione

Regole di scrittura
non Puoi inserire messaggi
non Puoi rispondere ai messaggi
non Puoi inviare allegati
non Puoi modificare i tuoi messaggi

codice vB è Attivo
Smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Disattivato
Pingbacks are Disattivato
Refbacks are Disattivato
Vai al Forum


Tutti gli Orari sono GMT +2. Attualmente sono le 02.50.49.


Powered by vBulletin Versione 3.6.12
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright © 2010 - Master New Media S.r.l. a socio unico - P.I. 02947530784. Tutti i diritti di proprietà letteraria e artistica sono riservati- Privacy
www.pctuner.net è testata telematica registrata presso il Tribunale di Torino, n. 39 del 07.05.2008, Editore Master New Media S.r.l.