Manual ATMEGA 164P
Short Description
Descripción: Manual del Microcontrolador ATM traducido al español...
Description
2. visión de conjunto El ATmega164P/324P/644P es un CMOS de baja potencia del microcontrolador de 8 bits basado en la arquitectura RISC AVR mejorada. Mediante la ejecución de instrucciones poderosas en un solo ciclo de reloj, el ATmega164P/324P/644P logra rendimientos se acercan a 1 MIPS por MHz que permite al diseñador del sistema para optimizar el consumo de energía en comparación con la velocidad de procesamiento. 2.1 Diagrama de bloques Figura 2-1. Diagrama de bloques El núcleo AVR combina un rico conjunto de instrucciones con 32 registros de trabajo de propósito general. Todos los 32 registros están conectados directamente a la unidad lógica aritmética (ALU), lo que permite dos registros independientes para acceder en una sola instrucción ejecutada en un ciclo de reloj. La arquitectura resultante es más código eficiente mientras que alcanza rendimientos de hasta diez veces más rápido que los microcontroladores CISC convencionales. El ATmega164P/324P/644P ofrece las siguientes características: 16K/32K/64K bytes del En-Sistema de flash programable con capacidad de lectura-While-Write, 512B/1K/2K bytes EEPROM, 1K/2K/4K bytes de SRAM, 32 de propósito general E / S líneas, registros de trabajo 32 de propósito general, contador de tiempo real (RTC), tres temporizadores / contadores flexibles con comparar los modos y PWM, 2 USART, a 2 hilos de interfaz Serial orientado byte, una de 8 canales, ADC de 10 bits con la etapa de entrada diferencial opcional con ganancia programable, temporizador de vigilancia programable con el oscilador interno, un puerto serie SPI, IEEE std. 1149.1 interfaz prueba JTAG compatibles, también se utiliza para acceder al sistema de depuración on-chip y la programación y seis de software seleccionables los modos de ahorro de energía. La pantalla de inicio se detiene la CPU al tiempo que permite la SRAM, temporizadores / contadores, un puerto SPI, y el sistema de interrupción para continuar funcionando. El modo Power-down guarda el contenido del registro, pero congela el oscilador, desactivando todas las demás funciones de chips hasta la siguiente interrupción o reinicio de hardware. En el modo de ahorro de energía, el temporizador asíncrono continúa funcionando, lo que permite al usuario mantener una base de temporizador mientras que el resto del dispositivo está durmiendo. El modo de reducción de ruido ADC detiene la CPU y todos los módulos de E / S, excepto temporizador asíncrono y ADC, para minimizar el ruido de conmutación durante conversiones ADC. En el modo de espera, el cristal / resonador oscilador está funcionando mientras que el resto del dispositivo está durmiendo. Esto permite muy rápida puesta en marcha combinada con bajo consumo de energía. En modo de espera extendido, tanto el oscilador principal y el temporizador asíncrono siguen funcionando. El dispositivo se ha fabricado con tecnología de memoria no volátil de alta densidad de Atmel. El Onchip destello de la ISP permite que la memoria de programa para ser reprogramado en-sistema a través de una interfaz en serie SPI, por un programador de memoria no volátil convencional, o por un programa de arranque en el chip que se ejecuta en el núcleo AVR. El programa de arranque puede usar cualquier interfaz para descargar el programa de aplicación en la memoria flash de la aplicación. Software en la sección Flash de arranque continuará funcionando mientras se actualiza la sección de aplicaciones Flash, que proporciona una verdadera operación Read-While-Write. Mediante la combinación de una CPU RISC de 8 bits con el En-Sistema de Auto-flash programable en un chip monolítico, Atmel ATmega164P/324P/644P es un potente microcontrolador que proporciona una solución eficaz altamente flexible y rentable para muchas aplicaciones de control embebido. El ATmega164P/324P/644P AVR es compatible con una gama completa de herramientas de desarrollo de programas y sistemas que incluyen: los compiladores de C, ensambladores macro, depurador de programas / simuladores, emuladores en circuito, y los kits de evaluación. 2.2 Comparación entre ATMEGA164P, ATMEGA324P y ATMEGA644P Tabla 2-1. Diferencias entre ATMEGA164P y ATMEGA644P 2.3 Descripciones Pin 2.3.1 VCC Tensión de alimentación digital . 2.3.2 GND Ground . 2.3.3 Puerto A ( PA7 : PA0 ) Puerto A sirve como entradas analógicas al convertidor de analógico a digital. Puerto A también sirve como un puerto bidireccional de E / S de 8 bits con resistencias pull-up internas (seleccionado para cada bit ) . Los buffers de salida del puerto A tienen características motrices simétricas con dos lavamanos y alta capacidad de la fuente. Como entradas , los pines del puerto A que se extraen externamente baja se abastecerán actual si se activan las resistencias pull-up . Los pines del puerto A son tri - declaró cuando una condición de reset se activa , aunque el reloj no se está ejecutando . Puerto A también sirve a las funciones de las diversas características especiales de la ATmega164P/324P/644P que figuran en la página 80 . 2.3.4 B Puerto ( PB7 : PB0 )
Puerto B es un bi -direccional de puerto de E / S de 8 bits con resistencias pull-up internas (seleccionado para cada bit ) . Los buffers de salida de puerto B tienen características simétricas de unidad tanto con alta capacidad de sumidero y fuente . Como entradas , pines del puerto B que se extraen externamente baja se abastecerán actual si se activan las resistencias pull-up . Los pines del puerto B son tri declaró cuando una condición de reset se activa , aunque el reloj no se está ejecutando . Puerto B también sirve a las funciones de las diversas características especiales de la ATmega164P/324P/644P que se enumeran en la página 82. 2.3.5 Puerto C ( PC7 : PC0 ) El puerto C es un bi -direccional de puertos de E / S de 8 bits con resistencias pull-up internas (seleccionado para cada bit ) . Los buffers de salida de puerto C tienen características motrices simétricas con dos lavamanos y alta capacidad de la fuente. Como entradas , pines del puerto C que se extraen externamente baja se abastecerán actual si se activan las resistencias pull-up . Los pines del puerto C son tri - declaró cuando una condición de reset se activa , aunque el reloj no se está ejecutando . Puerto C también sirve para las funciones de la interfaz JTAG, junto con las características especiales de la ATmega164P/324P/644P que figuran en la página 85 . 2.3.6 Port D ( PD7 : PD0 ) Port D es un bi -direccional de puerto de E / S de 8 bits con resistencias pull-up internas (seleccionado para cada bit ) . Los buffers de salida de puerto D tienen características motrices simétricas con dos lavamanos y alta capacidad de la fuente. Como entradas , pines del puerto D que se extraen externamente baja se abastecerán actual si se activan las resistencias pull-up . Los pines del puerto D son tri declaró cuando una condición de reset se activa , aunque el reloj no se está ejecutando . Port D también sirve a las funciones de las diversas características especiales de la ATmega164P/324P/644P que figuran en la página 87 . 2.3.7 REAJUSTE Entrada de reset. Un nivel bajo en este pin durante más tiempo que la duración mínima de impulso genera un reset, aunque el reloj no se está ejecutando. La duración mínima del impulso se da en "Sistema y Restablecer Características" en la página 331. Pulsos más cortos no están garantizados para generar un reset. 2.3.8 XTAL1 De entrada al amplificador del oscilador inversora y la entrada al circuito de funcionamiento del reloj interno. 2.3.9 XTAL2 La salida del amplificador oscilador inversor. 2.3.10 AVCC AVCC es el pin de la tensión de alimentación para el puerto A y el convertidor de analógico a digital. Debe ser conectado externamente a VCC, incluso si no se utiliza el ADC. Si se utiliza el ADC, debe estar conectado a VCC a través de un filtro de paso bajo. 2.3.11 AREF Este es el pin de referencia analógica para el convertidor de analógico a digital. 4. AVR CPU Core 4.1 Resumen En esta sección se analiza la arquitectura de núcleo AVR en general. La función principal del núcleo de la CPU es para asegurar la ejecución del programa correcto. Por consiguiente, la CPU debe ser capaz de acceder a memorias, realizar cálculos, controlar periféricos, y manejar las interrupciones. Figura 4-1. Diagrama de bloques de la arquitectura AVR Con el fin de maximizar el rendimiento y el paralelismo, el AVR usa una arquitectura de Harvard - con los recuerdos y los autobuses separados para programas y datos. Las instrucciones en la memoria de programas se ejecutan con una canalización de un solo nivel. Mientras se está ejecutando una instrucción, la instrucción siguiente es pre-descargue de la memoria del programa. Este concepto permite que las instrucciones a ejecutar en cada ciclo de reloj. La memoria de programa es del En-Sistema de memoria flash reprogramable. El acceso rápido registro del archivo contiene 32 registros de trabajo × propósito general de 8 bits con un solo tiempo de acceso a ciclo de reloj. Esto permite que un solo ciclo de unidad lógica aritmética (ALU) operación. En una operación típica ALU, dos operandos son emitidas desde el registro del archivo, se ejecuta la operación, y el resultado se almacena en el Registro de archivos - en un solo ciclo de reloj. Seis de los 32 registros pueden ser utilizados como triples registro de dirección indirecta de 16 bits para espacio de direccionamiento de datos - permitiendo a los cálculos de direcciones eficientes. Uno de los estos indicadores de dirección también se puede utilizar como un indicador de la dirección para buscar las tablas en la memoria de destello del programa. Estos registros de funciones añadidas son la de 16 bits X-, Y-y Z-registro, que se describe más adelante en esta sección.
La ALU soporta operaciones aritméticas y lógicas entre registros o entre una constante y un registro. Operaciones simples de registro también se pueden ejecutar en la ALU. Después de una operación aritmética, el registro de estado se actualiza para reflejar la información sobre el resultado de la operación. El flujo del programa es proporcionado por saltos y llamadas instrucciones condicionales e incondicionales, capaces de abordar directamente todo el espacio de direcciones. La mayoría de las instrucciones AVR tienen un único formato de palabra de 16 bits. Cada dirección de memoria de programa contiene una instrucción de 16 bits o 32 bits. Espacio de memoria de destello del programa se divide en dos secciones, la sección de programa de arranque y de la sección de programación de aplicaciones. Ambas secciones se han dedicado bits de bloqueo de escritura y de lectura / protección contra escritura. La instrucción SPM que escribe en la sección de memoria de aplicaciones de Flash debe residir en la sección de programa de arranque. Durante las interrupciones y llamadas a subrutinas, la dirección de retorno Contador de Programa (PC) se almacena en la pila. La pila se asigna de manera efectiva en la SRAM de datos generales, y en consecuencia el tamaño de pila sólo está limitado por el tamaño total de SRAM y el uso de la SRAM. Todos los programas del usuario deben inicializar el SP en el restablecimiento de rutina (antes de ejecutar subrutinas o interrupciones). El puntero de pila (SP) es de lectura / escritura accesible en el espacio de E / S. La SRAM de datos se puede acceder fácilmente a través de los cinco modos de dirección diferentes soportados en la arquitectura AVR. Los espacios de memoria en la arquitectura AVR son mapas de memoria lineales y regulares. Un módulo de interrupción flexible tiene sus registros de control en el espacio de E / S con un Global Interrupt Enable bit adicional en el registro de estado. Todas las interrupciones tienen una interrupción separada del vector en la tabla vector de interrupción. Las interrupciones tienen prioridad en función de su posición de vector de interrupción. Cuanto menor sea la dirección de vector de interrupción, mayor es la prioridad. El espacio de memoria de E / S contiene 64 direcciones para CPU funciones periféricas como Control de los Registros, SPI, y otras funciones de E / S. La memoria de E / S se puede acceder directamente, o como las ubicaciones espaciales de Datos tras los del Registro de archivos, 0x20 - 0x5F. Además, el ATmega164P/324P/644P ha extendido el espacio de E / S de 0x60 - 0xFF en la SRAM donde / LDS / LDD instrucciones se pueden utilizar sólo el ST / STS / STD y LD. 4.2 ALU - Unidad aritmética lógica El alto rendimiento del AVR ALU opera en conexión directa con todos los registros de trabajo 32 de propósito general. Dentro de un solo ciclo de reloj, se ejecutan las operaciones aritméticas entre registros de propósito general o entre un registro y una inmediata. Las operaciones de ALU se dividen en tres categorías principales - aritméticos, lógicos y bit-funciones. Algunas implementaciones de la arquitectura también proporcionan un multiplicador poderoso apoyo tanto firmado / multiplicación sin signo y formato fraccionario. Vea la sección "conjunto de instrucciones" para una descripción detallada. 4.3 Registro de estado El Registro de estado contiene información sobre el resultado de la operación aritmética ejecutada más recientemente. Esta información puede ser usada para alterar el flujo del programa con el fin de realizar operaciones condicionales. Tenga en cuenta que el registro de estado se actualiza después de todas las operaciones de la ALU, como se especifica en el conjunto de instrucciones de referencia. Esto, en muchos casos eliminar la necesidad de utilizar las comparativas instrucciones dedicadas, lo que resulta en más rápido y código más compacto. El Registro de estado no se guarda automáticamente al introducir una rutina de interrupción y restaurado al regresar de una interrupción. Esta debe ser manejado por el software. 4.3.1 SREG - Registro de estado El Registro de Estado AVR - SREG - se define como: • Bit 7 - I: Global Interrupt Enable La interrupción Global Enable bit debe establecerse para las interrupciones estén habilitadas. El individuo de habilitación de interrupción de control se lleva a cabo a continuación, en los registros de control separados. Si la interrupción Global Enable Register se borra, ninguna de las interrupciones están habilitadas independiente de la interrupción individuales permiten ajustes. El bit I se borra por hardware después se ha producido una interrupción, y se establece por la instrucción RETI a habilitar las interrupciones subsiguientes. El bit I también se puede ajustar y se aclaró por la aplicación de las instrucciones SEI y CLI, como se describe en la referencia del conjunto de instrucciones. • Bit 6 - T: Bit de almacenamiento de copia Las instrucciones de copia de bits BLD (carga de bits) y BST (tienda Bit) utilizan el T-bits como fuente o destino para el bit operado. Un poco de un registro en el Registro del archivo se puede copiar en T por la instrucción BST, y un poco en T se puede copiar en un bit en un registro en el Registro de archivos por la instrucción BLD.
• Bit 5 - H: Media indicador de acarreo The Half Carry Flag H indica a Half Carry en algunas operaciones aritméticas. La mitad Carry Es útil en aritmética BCD. Consulte la sección "Descripción del conjunto de instrucciones" para obtener información detallada. • Bit 4 - S: Señal Bit, S = N V El S-bit es siempre un exclusivo o entre el negativo de la bandera y del Complemento N Overflow Flag V. del Dos Consulte la sección "Descripción del conjunto de instrucciones" para obtener información detallada. • Bit 3 - V: Complemento Overflow Flag V de complemento de dos de desbordamiento de la bandera del dos soportes de dos aritmética de complemento. Consulte la sección "Descripción del conjunto de instrucciones" para obtener información detallada. • Bit 2 - N: Negativo Flag La negativa de la bandera N indica un resultado negativo en una operación aritmética o lógica. Consulte la sección "Descripción del conjunto de instrucciones" para obtener información detallada. • Bit 1 - Z: Flag Zero El cero de la bandera de Z indica un resultado cero en una operación aritmética o lógica. Consulte la sección "Descripción del conjunto de instrucciones" para obtener información detallada. • Bit 0 - C: indicador de acarreo El indicador de acarreo C indica un acarreo en una operación aritmética o lógica. Consulte la sección "Descripción del conjunto de instrucciones" para obtener información detallada. 4.4 Propósito Registro General Archivo El Registro del archivo está optimizado para el conjunto de instrucciones RISC AVR mejorada. Con el fin de lograr el rendimiento y la flexibilidad requerida, las siguientes esquemas de entrada / salida están soportados por el Registro del archivo: • Un operando de salida de 8 bits y una entrada de número 8-bit • Dos operandos de salida de 8 bits y una entrada número 8-bit • Dos operandos de salida de 8 bits y una entrada número 16 bits • Un operando de salida de 16 bits y una entrada de resultado de 16 bits La figura 4-2 muestra la estructura de los 32 registros de propósito general de trabajo en la CPU. Figura 4-2. Propósito AVR CPU general registros de trabajo La mayor parte de las instrucciones de uso en el Registro de archivos tienen acceso directo a todos los registros, y la mayoría de ellos son las instrucciones de ciclo único. Como se muestra en la Figura 4-2, cada registro también se le asigna una dirección de memoria de datos, la cartografía directamente en los primeros 32 lugares del espacio de datos de usuario. Aunque no está implementado físicamente como lugares de SRAM, esta organización de la memoria proporciona una gran flexibilidad en el acceso de los registros, ya que el X-, Y-y Z-registros de puntero pueden configurarse para indexar cualquier registro en el archivo. 4.4.1 El registro X, Y-registro y registro Z Los registros R26 .. R31 tienen algunas funciones añadidas a su uso para fines generales. Estos registros son punteros de direcciones de 16 bits para el direccionamiento indirecto del espacio de datos. Los tres dirección indirecta registra X, Y, y Z se definen como se describe en la Figura 4-3. Figura 4-3. Los-, X e Y, y Z-registros En los diferentes modos de direccionamiento estos registros de direcciones tienen funciones como el desplazamiento fijo, incremento automático, y decremento automático (consulte la referencia del conjunto de instrucciones para más detalles). 4.5 Stack Pointer La pila se utiliza principalmente para el almacenamiento de datos temporales, para almacenar las variables locales y para el almacenamiento de direcciones de retorno después de interrupciones y llamadas a subrutinas. Tenga en cuenta que la pila se implementa como creciente de mayor a ubicaciones de memoria más bajos. El Registro Stack Pointer siempre apunta a la parte superior de la pila. Los puntos de Stack Pointer a la zona Pila SRAM de datos donde se encuentra la subrutina de interrupción y Pilas. Un comando PUSH pila disminuirá el puntero de pila.
La Pila en la SRAM de datos debe ser definido por el programa antes de que se ejecuten todas las llamadas a subrutinas o interrupciones están habilitadas. Inicial Valor Stack Pointer es igual a la última dirección de la SRAM interna y el puntero de pila se debe establecer en el punto más arriba inicio de la SRAM, vea la Figura 5-2 en la página 20. Consulte la Tabla 4-1 para obtener más información Stack Pointer. Tabla 4-1. Instrucciones Stack Pointer Instrucción PUSH CALL ICALL RCALL POP RET RETI
Stack Pointer decrementa en 1 Disminuye en 2
Descripción Los datos se inserta en la pila Dirección de retorno se inserta en la pila con una llamada de subrutina o interrumpir
incrementa en 1 incrementa en 2
Los datos se extrae de la pila Dirección de retorno se extrae de la pila con el retorno de la subrutina o el retorno de interrupción
El AVR Stack Pointer se implementa como dos registros de 8 bits en el espacio de E / S. El número de bits utilizados efectivamente depende de la implementación, consulte la Tabla 4-2 en la página 14. Tenga en cuenta que el espacio de datos en algunas implementaciones de la arquitectura AVR es tan pequeña que sólo se necesita SPL. En este caso, el Registro SPH no estará presente. 4.5.1 SPH y SPL - Stack Pointer Alta y Baja Pila puntero Note: 1. Initial values respectively for the ATmega164P/324P/644P. 4.5.2 RAMPZ - Extended Registrarse Z-puntos para ELPM / SPM Para obtener instrucciones ELPM / SPM, el Z-puntero es una concatenación de RAMPZ, ZH y ZL, como se muestra en la Figura 4-4. Tenga en cuenta que LPM no se ve afectada por el ajuste RAMPZ. Figura 4-4. El Z-puntero utilizado por ELPM y SPM. El número real de bits depende de la implementación. Los bits no utilizados en una aplicación siempre se leerán como cero. Para la compatibilidad con futuros dispositivos, asegúrese de escribir estos bits a cero. 4.6 Instrucción de ejecución de temporización En esta sección se describen los conceptos generales de acceso de tiempo de ejecución de instrucciones. La CPU AVR es impulsado por el clkCPU reloj de la CPU, directamente generada a partir de la fuente de reloj seleccionada para el chip. No se utiliza ninguna división interna del reloj. Figura 4-5 en la página 15 muestra la instrucción paralela obtiene y ejecuciones de instrucción habilitada por la arquitectura de Harvard y el concepto de acceso rápido Registro de archivos. Este es el concepto básico de la canalización para obtener hasta 1 MIPS por MHz con los correspondientes resultados únicos para las funciones por el costo, las funciones por los relojes, y las funciones de cada grupo motor. Figura 4-5. La Instrucción paralela Obtiene y ejecuciones de instrucciones Figura 4-6 muestra el concepto de tiempo interno para el registro del archivo. En un solo ciclo de reloj se ejecuta una operación ALU utilizando dos operandos de registro, y el resultado se almacena en el registro de destino. Figura 4-6. Single Cycle ALU Operación 4.7 Reset y manejo de interrupciones El AVR proporciona varias fuentes de interrupción diferentes. Estas interrupciones y el restablecimiento separada Vector cada uno tiene un vector programa separado en el espacio de memoria de programa. Todas las interrupciones se asignan individuo bits de habilitación que debe ser uno lógico escritas junto con la interrupción Global Enable bit en el registro de estado para permitir la interrupción. Dependiendo del valor del contador de programa, las interrupciones pueden desactivarse automáticamente cuando la cerradura de arranque Bits BLB02 o BLB12 se programan. Esta característica mejora la seguridad del software. Vea la sección "Programación de la memoria" en la página 293 para obtener más información Las direcciones más bajas del espacio de memoria del programa son por defecto definido como el restablecimiento y vectores de interrupción . La lista completa de vectores se muestra en " Interrupciones " en la página 61 . La lista también determina los niveles de prioridad de las diferentes interrupciones. Cuanto menor sea la dirección de la mayor es el nivel de prioridad . REINICIAR tiene la más alta prioridad , y el próximo es INT0 - la interrupción externa Solicitar 0 . La interrupción de vectores se puede mover hasta el inicio de
la sección Flash de arranque activando el bit IVSEL en el Registro de Control de MCU ( MCUCR ) . Consulte la sección " Interrupciones " en la página 61 para más información. El restablecimiento del vector también se puede mover hasta el inicio de la sección de flash de inicio programando el BOOTRST fusible , consulte " Programación de la memoria" en la página 293 . Cuando se produce una interrupción, la interrupción Global Enable bit I se borra y todas las interrupciones están deshabilitadas. El software de usuario puede escribir uno lógico a la I- bits para habilitar las interrupciones anidadas. Todas las interrupciones habilitadas entonces pueden interrumpir la rutina de interrupción actual. El bit I se establece automáticamente cuando un Retorno de la instrucción de interrupción - RETI - se ejecuta Hay básicamente dos tipos de interrupciones . El primer tipo es provocado por un evento que pone la bandera de interrupción . Por estas interrupciones, el contador de programa se guía vectorial a la actual vector de interrupción con el fin de ejecutar la rutina de manejo de interrupciones , y el hardware borra la bandera de interrupción correspondiente . Banderas de interrupción también se pueden borrar escribiendo un uno lógico en la posición ( s ) bit de bandera que se solucione. Si una condición de interrupción se produce mientras la correspondiente habilitación de interrupción bit se borra , la bandera de interrupción se establecerá y se acordó hasta que la interrupción está habilitada, o la bandera es borrado por software. Del mismo modo, si se producen una o más condiciones de interrupción mientras que la interrupción Global Enable bit se borra, la bandera de interrupción correspondiente ( s ) se establecerá y se acordó hasta que la interrupción Global Enable bit está activado, y después será ejecutado por orden de prioridad. El segundo tipo de interrupciones activará siempre que la condición de interrupción está presente . Estas interrupciones no necesariamente tienen las banderas de interrupción . Si la condición de alarma desaparece antes de que se activa la alarma , no se ha activado la alarma . Cuando el AVR sale de una interrupción, siempre regresará al programa principal y ejecutar una instrucción más antes de que se sirve cualquier interrupción pendiente. Tenga en cuenta que el registro de estado no se almacena de forma automática al entrar en una rutina de interrupción, ni restaura al volver de una rutina de interrupción. Esta debe ser manejado por el software. Cuando se utiliza la instrucción CLI para deshabilitar las interrupciones, las interrupciones se desactivarán inmediatamente. Sin interrupción se ejecutará después de la instrucción de la CLI, incluso si se produce simultáneamente con la instrucción de la CLI. El siguiente ejemplo muestra cómo esto puede ser usado para evitar interrupciones durante la secuencia de escritura de EEPROM temporizada… Código ensamblaje Ejemplo en r16, SREG; almacenar valor SREG cli; deshabilitar las interrupciones durante la secuencia temporizada sbi EECR, EEMPE; empezar EEPROM sbi EECR, EEPE cabo SREG, r16, restaurar el valor SREG (I-bit) C Code Example char cSREG; cSREG = SREG; / * Valor tienda SREG * / / * Deshabilitar las interrupciones durante la secuencia temporizada * / __disable_interrupt (); EECR | = (1
View more...
Comments