<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>https://www.binefa.com/index.php?action=history&amp;feed=atom&amp;title=Programaci%C3%B3_a_nivell_de_bit_a_Arduino</id>
	<title>Programació a nivell de bit a Arduino - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="https://www.binefa.com/index.php?action=history&amp;feed=atom&amp;title=Programaci%C3%B3_a_nivell_de_bit_a_Arduino"/>
	<link rel="alternate" type="text/html" href="https://www.binefa.com/index.php?title=Programaci%C3%B3_a_nivell_de_bit_a_Arduino&amp;action=history"/>
	<updated>2026-04-24T10:57:53Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.binefa.com/index.php?title=Programaci%C3%B3_a_nivell_de_bit_a_Arduino&amp;diff=12004&amp;oldid=prev</id>
		<title>Jordi Binefa: Es crea la pàgina amb «= Operadors de Bits en Arduino = La manipulació de bits ens permet interactuar directament amb el maquinari de l'Atmega328P (o el xip que usis) de forma extremadament...».</title>
		<link rel="alternate" type="text/html" href="https://www.binefa.com/index.php?title=Programaci%C3%B3_a_nivell_de_bit_a_Arduino&amp;diff=12004&amp;oldid=prev"/>
		<updated>2026-03-09T15:55:06Z</updated>

		<summary type="html">&lt;p&gt;Es crea la pàgina amb «= Operadors de Bits en Arduino = La manipulació de bits ens permet interactuar directament amb el maquinari de l&amp;#039;Atmega328P (o el xip que usis) de forma extremadament...».&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Operadors de Bits en Arduino =&lt;br /&gt;
La manipulació de bits ens permet interactuar directament amb el maquinari de l'Atmega328P (o el xip que usis) de forma extremadament ràpida i eficient.&lt;br /&gt;
&lt;br /&gt;
== L'operador AND (&amp;amp;) ==&lt;br /&gt;
S'utilitza sovint per llegir l'estat d'un bit específic (fent el que anomenem una &amp;quot;màscara&amp;quot;). El resultat és 1 només si els dos bits comparats són 1.&lt;br /&gt;
&lt;br /&gt;
 byte valor = 0b10101100;    // Un byte de prova&lt;br /&gt;
 byte mascara = 0b00000100;  // Volem mirar el bit 2 (el tercer per la dreta)&lt;br /&gt;
 &lt;br /&gt;
 if (valor &amp;amp; mascara) {&lt;br /&gt;
  // Aquesta condició serà certa si el bit 2 de 'valor' és '1'&lt;br /&gt;
 }&lt;br /&gt;
== L'operador OR (|) ==&lt;br /&gt;
S'utilitza per activar un bit (posar-lo a 1) sense modificar la resta de bits del byte.&lt;br /&gt;
&lt;br /&gt;
 byte pins = 0b01000000; &lt;br /&gt;
 pins = pins | 0b00000001; // Activem el bit 0&lt;br /&gt;
 &lt;br /&gt;
 // El resultat final de 'pins' és 0b01000001&lt;br /&gt;
== L'operador NOT (~) ==&lt;br /&gt;
Inverteix tots els bits: els 0 passen a ser 1 i els 1 passen a ser 0.&lt;br /&gt;
&lt;br /&gt;
 byte original = 0b11110000;&lt;br /&gt;
 byte invertit = ~original; &lt;br /&gt;
 &lt;br /&gt;
 // 'invertit' ara val 0b00001111&lt;br /&gt;
== Desplaçaments a l'esquerra (&amp;lt;&amp;lt;) i a la dreta (&amp;gt;&amp;gt;) ==&lt;br /&gt;
Moure els bits cap a un costat és la forma més ràpida de multiplicar o dividir per potències de 2, o de crear màscares dinàmiques.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt; (Esquerra): Desplaça els bits a l'esquerra i afegeix zeros a la dreta.&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt; (Dreta): Desplaça cap a la dreta i els bits que &amp;quot;surten&amp;quot; es perden.&lt;br /&gt;
&lt;br /&gt;
 byte x = 0b00000001;&lt;br /&gt;
 byte y = x &amp;lt;&amp;lt; 3; // Movem el '1' tres posicions: 0b00001000 (8 en decimal)&lt;br /&gt;
 &lt;br /&gt;
 byte z = y &amp;gt;&amp;gt; 2; // Movem dues posicions a la dreta: 0b00000010 (2 en decimal)&lt;br /&gt;
Exemple Pràctic: Manipulació de Ports&lt;br /&gt;
En Arduino, és molt comú veure aquesta sintaxi per modificar un pin (com el Pin 13, que sol ser el bit 5 del registre PORTB) sense afectar els altres pins del mateix port:&lt;br /&gt;
&lt;br /&gt;
 // ACTIVAR: Posem el bit 5 a '1' (HIGH)&lt;br /&gt;
 PORTB |= (1 &amp;lt;&amp;lt; 5); &lt;br /&gt;
 &lt;br /&gt;
 // DESACTIVAR: Posem el bit 5 a '0' (LOW)&lt;br /&gt;
 PORTB &amp;amp;= ~(1 &amp;lt;&amp;lt; 5); &lt;br /&gt;
&lt;br /&gt;
Explicació de la lògica PORTB &amp;amp;= ~(1 &amp;lt;&amp;lt; 5):&lt;br /&gt;
&lt;br /&gt;
(1 &amp;lt;&amp;lt; 5): Crea la màscara 0b00100000.&lt;br /&gt;
&lt;br /&gt;
~: Inverteix la màscara a 0b11011111.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;: En fer l'AND amb el registre original, tots els bits es queden igual (perquè estan multiplicats per 1) excepte el bit 5, que es multiplica per 0 i s'apaga.&lt;/div&gt;</summary>
		<author><name>Jordi Binefa</name></author>
		
	</entry>
</feed>