Paso 3: 'Casa sola': el Software
El programa anterior muestra cómo conducir mi particular paso a paso y puede que necesite cambiar los valores que se escriben en PORTB si tienes debes paso a paso. Como el Attiny13 es algo pequeña en la memoria y también no proporciona demasiados pins, el programa pierde cierta sofisticación. Escribir directamente a PORTB está bien, pero en este caso también escribirá un "0" PB4 y PB5. PB5 no es un problema, pero puede que desee utilizar PB4. En mi caso es donde pongo mi servo y que realmente no causa un problema como no usarlos al mismo tiempo.
Sin embargo, si desea usar otro microcontrolador como un 328 y quieres evitar escritura PB4 y PB5, PB6 y PB7, usar una máscara para escribir sólo en bit 0-3. La máscara para hacerlo es B00001111.
Si desea configurar bits de bits 0 y 2, va como esto:
En lugar de PORTB = 5, estado: PORTB = (PORTB & ~ máscara) | (B00000101);
Para aquellos que encuentran esto demasiado críptico:
lo primero y el valor de PORTB con máscara de no y del resultado con el valor que queremos escribir y cesionarios que a PORTB.
Así, supongamos que PORTB = 00010000 y queremos escribir 00000101, no podemos asignar que inmediatamente porque eso sería claro PB4.
Sin embargo, si lo hacemos como se describe, se convierte:
PORTB = (PORTB & 11110000) | 00000101
PORTB = (00010000 & 11110000) | 00000101
PORTB = 00010000 | 00000101
PORTB = 00010101
Hemos escrito nuestro valor y mantenerse PB4
Así que, ¿por qué cant nos inmediatamente PORTB o con el valor que queremos en lugar de y-ing lo primero?
Bueno ya que puede mantener PB4 y PB5... pero también mantiene PB3-PB0 sin cambios si uno de ellos contenía ya un '1'
Por supuesto invertir la máscara no sería necesario si lo ya invertido definimos, pero es práctica común hacer como tal