Menú English Ukrainian Ruso Inicio

Biblioteca técnica gratuita para aficionados y profesionales. biblioteca técnica gratuita


ENCICLOPEDIA DE RADIOELECTRÓNICA E INGENIERÍA ELÉCTRICA
biblioteca gratis / Esquemas de dispositivos radioelectrónicos y eléctricos.

¿Que es PIC? Enciclopedia de radioelectrónica e ingeniería eléctrica. Enciclopedia de radioelectrónica e ingeniería eléctrica.

biblioteca técnica gratuita

Enciclopedia de radioelectrónica e ingeniería eléctrica. / Microcontroladores

Comentarios sobre el artículoComentarios sobre el artículo

Introducción. Los PIC16CXX son microcontroladores RISC de 8 bits fabricados por Microchip Technology. Esta familia de microcontroladores se caracteriza por su bajo precio, bajo consumo de energía y alta velocidad.

Los microcontroladores tienen un programa EEPROM incorporado, RAM de datos y están disponibles en paquetes de 18 y 28 salidas.

Los PIC OTP son controladores de una sola vez programables por el usuario diseñados para productos completamente probados y terminados que no sufrirán más cambios de código. Estos controladores están disponibles en estuches de plástico baratos con un tipo preestablecido de oscilador externo: cuarzo o RC.

Para programas de depuración y creación de prototipos, está disponible una versión de controladores con borrado ultravioleta. Estos controladores permiten una gran cantidad de ciclos de escritura/borrado y tienen un tiempo de borrado muy corto, generalmente de 1 a 2 minutos.

Sin embargo, el precio de dichos controladores es significativamente más alto que los programados una vez, por lo que no es rentable instalarlos en la producción en serie.

Para productos, cuyo programa puede cambiar, o contiene partes variables, tablas, parámetros de calibración, teclas, etc., está disponible un controlador PIC16C84 eléctricamente borrable y reprogramable. También contiene una ROM de datos flashable eléctricamente. Es este controlador el que usaremos para los experimentos.

Para sacar el máximo provecho de este artículo, necesitará una computadora personal compatible con IBM PC, un programador conectado al puerto paralelo de la computadora, un chip PIC16C84, una placa de pruebas, 8 LED con resistencias, una fuente de alimentación de +5V y un enchufe para el chip.

Estaremos escribiendo pequeños fragmentos de software PIC, ensamblándolos, colocándolos en el chip y luego observando los resultados en los LED. Usaremos la mnemotécnica básica de MICROCHIP en este artículo para que pueda usar más fácilmente los otros ejemplos de aplicaciones y las listas proporcionadas en el Manual de control incorporado.

FAMILIA PIC16CXX Comenzaremos una descripción detallada de la familia de microcircuitos PIC con aquellas características y ventajas que distinguen a estos microcontroladores de otros. Para aplicaciones de seguridad de datos, cada PIC tiene un bit de seguridad que se puede programar para deshabilitar la lectura del código del programa y la ROM de datos. Al programar, primero se escribe el código del programa, se verifica que esté escrito correctamente y luego se establece el bit de seguridad. Si intenta leer el chip con el bit de seguridad establecido, entonces para el PIC16C5X los 8 bits superiores del código se leerán como 0 y los 4 bits inferiores se codificarán como 12 bits del comando. Para PIC16C84, de manera similar, los 7 bits más significativos se leerán como ceros y los 7 bits menos significativos representarán los 14 bits codificados del comando. La EEPROM PIC16C84 no se puede leer cuando se establece el bit de seguridad. La figura 1 muestra todos los microcontroladores producidos actualmente y brinda sus breves características. (Figura en la página 2-1) La familia de microcontroladores PIC tiene un conjunto de instrucciones muy eficiente que consta de solo 35 instrucciones. Todas las instrucciones se ejecutan en un ciclo, excepto los saltos condicionales y las instrucciones que cambian el contador de programa, que se ejecutan en 2 ciclos. Un ciclo de ejecución de instrucción consta de 4 ciclos de reloj. Así, a una frecuencia de 4 MHz, el tiempo de ejecución de la instrucción es de 1 µs. Cada instrucción consta de 14 bits, divisibles por el código de operación y el operando (posible manipulación con registros, ubicaciones de memoria y datos inmediatos). El conjunto de comandos de los microcontroladores PIC16CXX se muestra en la Figura 2. (Tabla 7.2 en la página 2-569) La alta velocidad de ejecución de comandos en el PIC se logra mediante el uso de una arquitectura Harvard de dos buses en lugar de la arquitectura Von Neumann tradicional de un solo bus. arquitectura. La arquitectura de Harvard se basa en un conjunto de registros con buses separados y un espacio de direcciones para instrucciones y datos. Un conjunto de registros significa que todos los objetos de software, como puertos de E/S, celdas de memoria y un temporizador, son registros de hardware implementados físicamente.

La memoria de datos (RAM) para el PIC16CXX es de 8 bits, la memoria de programa (PROM) es de 12 bits para el PIC16C5X y de 14 bits para el PIC16CXX. El uso de la arquitectura Harvard le permite lograr una alta velocidad de operaciones de bit, byte y registro. Además, la arquitectura de Harvard permite la ejecución canalizada de instrucciones, cuando se ejecuta la instrucción actual y se lee la siguiente al mismo tiempo. En la arquitectura tradicional de Von Neumann, los comandos y los datos se transfieren a través de un solo bus compartido o multiplexado, lo que limita las posibilidades de canalización. La Figura 3 muestra un diagrama de bloques de la estructura de bus dual PIC16CXX. (Figura B en la página 2-536) Como puede ver, los componentes físicos y lógicos internos que conforman el PIC16CXX son similares a cualquier otro microcontrolador con el que haya trabajado hasta ahora. Por lo tanto, escribir programas para el PIC no es más difícil que para cualquier otro procesador. Lógica, y sólo lógica...

Por supuesto, la arquitectura Harvard y el gran tamaño de los comandos permiten que el código PIC sea mucho más compacto que para otros microcontroladores y aumenta significativamente la velocidad de ejecución del programa.

CONJUNTO DE REGISTRO DE PIC Todos los objetos de software con los que puede trabajar el PIC son registros físicos. Para comprender cómo funciona el PIC, debe comprender qué registros tiene y cómo trabajar con cada uno de ellos. La Figura 4 muestra todos los registros del PIC16C84. (imagen 3.7.1 en la pág.

2-541) Comencemos con un conjunto de registros operativos. Este conjunto consta del registro de dirección indirecta (f0), el registro de temporizador/contador (f1), el contador de programa (f2), el registro de palabra de estado (f3), el registro de selección (f4) y los registros de entrada/salida ( f5,f6).

Es imperativo que comprenda cómo usar estos registros, ya que representan la mayor parte de los objetos accesibles por software del microcontrolador. Dado que principalmente necesitamos entender "cómo administrar" y no "cómo se hace internamente", hemos incluido ejemplos muy simples que muestran los posibles usos de cada registro.

f0...REGISTRO DE DIRECCIÓN INDIRECTA IND0 El registro de dirección indirecta f0 no existe físicamente. Utiliza el registro de selección f4 para seleccionar indirectamente uno de los 64 registros posibles.

Cualquier instrucción que use f0 en realidad accede al registro de datos apuntado por f4.

f1... REGISTRO DEL TEMPORIZADOR/CONTADOR TMR0 El registro del temporizador/contador TMR0 se puede escribir y leer como cualquier otro registro. TMR0 se puede aumentar mediante una señal externa aplicada al pin RTCC o mediante una frecuencia interna correspondiente a la frecuencia de comando.

El uso principal del temporizador/contador es contar el número de eventos externos y medir el tiempo. La señal de una fuente externa o interna también se puede dividir previamente utilizando el divisor programable incorporado del PIC.

f2...CONTADOR DE PROGRAMA PCL El contador de programa (PC) se utiliza para generar una secuencia de direcciones de celda de ROM de programa que contienen instrucciones de 14 bits. La PC tiene una capacidad de 13 bits, lo que le permite direccionar directamente celdas ROM de 8Kx14. Sin embargo, para el PIC16C84, solo hay 1K celdas físicamente disponibles. Los 8 bits inferiores de la PC se pueden escribir y leer a través del registro f2, los 5 bits superiores se cargan desde el registro PCLATCH, que tiene la dirección 0Ah.

f3... REGISTRO DE ESTADO El registro de palabra de estado es similar al registro PSW que se encuentra en la mayoría de los microprocesadores. Contiene los bits de acarreo, acarreo decimal y cero, así como bits de modo habilitado y bits de paginación.

f4...REGISTRO DE SELECCIÓN FSR Como ya se mencionó, el registro de selección FSR se usa junto con el registro de direccionamiento indirecto f0 para seleccionar indirectamente uno de los 64 registros posibles. Están físicamente involucrados 36 registros de RAM de usuario ubicados en las direcciones 0Ch-2Fh y 15 registros de servicio ubicados en diferentes direcciones.

f5, f6... REGISTROS I/O PORTA, PORTB Los registros f5 y f6 corresponden a los dos puertos I/O disponibles en el PIC16C84. El puerto A tiene 5 bits PA4-PA0, que se pueden programar individualmente como entradas o salidas utilizando el registro TRISA en la dirección 85h. El puerto B tiene 8 bits PB7-PB0 y se programa usando el registro TRISB con dirección 86h. El establecimiento de 1 en el bit de registro TRIS programa el bit de puerto correspondiente como una entrada. Al leer el puerto, se lee el estado inmediato de la salida, al escribir en el puerto, la escritura se produce en el registro del búfer.

f8, f9...EEDATA, REGISTROS EEPROM EEADR El PIC16C84 tiene una EEPROM integrada de 64 bytes que se puede leer y escribir utilizando el registro de datos EEDATA y el registro de direcciones EEADR. Escribir un nuevo byte dura unos 10 ms y está controlado por un temporizador incorporado. El control de escritura y lectura se realiza a través del registro EECON1, que tiene la dirección 88h. Para un control adicional sobre la grabación, se utiliza el registro EECON2, que tiene la dirección 89h.

REGISTROS DE PROPÓSITO GENERAL Los registros de propósito general son RAM estáticas ubicadas en las direcciones 0Ch-2Fh. Se puede utilizar un total de 16 celdas RAM en el PIC84C36.

REGISTROS ESPECIALES W, INTCON, OPCIÓN Finalmente, veamos los registros especiales PIC. Estos incluyen el registro de trabajo W, utilizado como registro acumulador en la mayoría de los comandos, y los registros INTCON y OPTION. El registro de interrupción INTCON (dirección 0Bh) se usa para controlar los modos de interrupción y contiene bits de activación de interrupción de varias fuentes y banderas de interrupción. El registro de modo OPCIÓN (dirección 81h) se usa para establecer las fuentes de señal para el preescalador y el temporizador/contador, así como para establecer el factor de división del preescalador, el flanco activo de la señal para RTCC y la entrada de interrupción. Además, utilizando el registro de OPCIÓN, las resistencias de terminación se pueden habilitar para los bits del puerto B programados como entradas.

WDT WDT Watchdog El WDT watchdog está diseñado para evitar consecuencias catastróficas por fallas accidentales del programa. También se puede utilizar en aplicaciones de temporización, como un detector de pulsos perdidos. La idea de usar un temporizador de vigilancia es reiniciarlo regularmente bajo el control de un programa o una influencia externa antes de que expire su tiempo de retardo y el procesador no se reinicie. Si el programa se ejecuta con normalidad, entonces el comando de restablecimiento del mecanismo de vigilancia CLRWDT debe ejecutarse regularmente para evitar que el procesador se restablezca. Si el microprocesador accidentalmente sobrepasó los límites del programa (por ejemplo, debido a una fuerte interferencia en el circuito de alimentación) o se atascó en alguna parte del programa, lo más probable es que el comando de restablecimiento de vigilancia no se ejecute dentro de un tiempo suficiente, y Se producirá un reinicio completo del procesador, inicializando todos los registros y poniendo el sistema en condiciones de funcionamiento.

El temporizador de vigilancia en el PIC16C84 no requiere ningún componente externo y funciona con un oscilador RC incorporado, y la generación no se detiene incluso en ausencia de la frecuencia del reloj del procesador. El período de vigilancia típico es de 18 ms. Puede conectar un preescalador al temporizador de vigilancia y aumentar su período hasta 2 segundos.

Otra función del temporizador de vigilancia es encender el procesador desde el modo de bajo consumo, en el que el procesador se transfiere mediante el comando SLEEP. En este modo, el PIC16C84 consume muy poca corriente, alrededor de 1 µA. Puede cambiar de este modo al modo de trabajo ya sea por un evento externo de presionar un botón, activar un sensor o por un temporizador de vigilancia.

GENERADOR DE RELOJ Se pueden utilizar cuatro tipos de generadores de reloj para microcontroladores de la familia PIC: XT resonador de cuarzo HS resonador de cuarzo de alta frecuencia LP microconsumidor RC cristal RC circuito chip proceso de programación. Si se configuran las opciones XT, HS y LP, se conecta un resonador de cuarzo o cerámica o una fuente de reloj externa al microcircuito, y si se configura la opción RC, se conectan una resistencia y un capacitor. Por supuesto, un resonador de cerámica y, especialmente, de cuarzo es mucho más preciso y estable, pero si no se necesita una alta precisión de temporización, el uso de un generador RC puede reducir el costo y las dimensiones del dispositivo.

CIRCUITO DE REINICIO La familia de microcontroladores PIC utiliza un circuito interno de reinicio de encendido en combinación con un temporizador de inicio del oscilador, lo que elimina la necesidad de una resistencia y un condensador tradicionales en la mayoría de las situaciones.

Simplemente conecte la entrada MCLR a una fuente de alimentación. Si es probable que se produzcan picos o sobretensiones cuando se enciende la alimentación, es mejor utilizar una resistencia en serie de 100-300 ohmios. Si el aumento de potencia es muy lento (menos de 70 ms), o si está funcionando a velocidades de reloj muy bajas, entonces se debe usar un circuito de reinicio de resistencia y capacitor tradicional.

DE LA TEORIA A LA PRACTICA...

Nos familiarizamos brevemente con los principales elementos que componen los microcontroladores de la familia PIC. Ahora pasemos a los ejercicios prácticos.

Escribiremos programas cortos, los ensamblaremos, los escribiremos en un microcircuito y veremos qué sucede.

Para hacer esto, necesitamos lo siguiente: - chip PIC16C84; - ensamblador MPALC; - programador PROPIC; - fuente de alimentación de corriente continua o alterna 18-36 V; - tablero de prototipos con dispositivo de visualización.

El diagrama esquemático del dispositivo de visualización, que usaremos para demostrar el funcionamiento de los comandos básicos del PIC16C84, se muestra en la Figura 5. (debe dibujarse) Como puede ver, el dispositivo consta simplemente de 8 LED con resistencias limitadoras de corriente y elementos de ajuste de frecuencia. Cada salida de microcontroladores de la familia PIC puede controlar directamente el LED sin necesidad de amplificadores adicionales.

¿Que es PIC?

Comencemos describiendo el código básico que se usará en nuestros ejemplos. Cuando comience a escribir código para su proyecto, la sección de encabezado (todo el código hasta la línea ORG 0) debe ser específica para su aplicación. La sección de encabezado define nombres lógicos para todos los recursos utilizados en el proyecto: puertos, variables de bits y bytes y registros. Nuestro encabezado también establece los puertos de E/S para que todos los bits de los puertos A y B se establezcan como salidas después de ejecutar los siguientes comandos: MOVLW INITA MOVWF TRISA MOVLW INITB MOVWF TRISB Cuando se enciende la alimentación, el PIC16C84 establece todos los bits de puertos A y B para ingresar y comienza a ejecutar el programa desde la dirección 000h. El código básico se muestra en la Figura 6. (necesita dibujar) Algo como esto: ; Ejemplo de código base para el programa de demostración; LISTA P=16C84, E=2 ; ; sección de encabezado; ; descripción de registros operativos TMR0 EQU 01h PC EQU 02h ESTADO EQU 03h FSR EQU 04h ; registros de E/S CNTRLPORT EQU 05h DATAPORT EQU 06h ; Ubicaciones de RAM SCRATCH EQU 0Ch DIGIT EQU 0Dh ; bits de registro ESTADO C EQU 0h DC EQU 1h Z EQU 2h PD EQU 3h TO EQU 4h RP EQU 5h ; registros de control TRISA EQU 85h TRISB EQU 86h ; palabras de inicialización para puertos de E/S INITA EQU B'00000000' INITB EQU B'00000000' ; ; Sección de trabajo; ; inicio del código ejecutable ORG 0 GOTO BEGIN ; ORG 100h INICIO MOVLW INITA MOVWF TRISA MOVLW INITB MOVWF TRISB ; ; Pegue el código de ejemplo aquí; FIN ; Consulte la Figura 4 si es necesario mientras discutimos el código básico. Primero, todas las líneas que comienzan con ";" son tratadas como comentarios por el ensamblador. Pasemos a la expresión TMR0. Le dijimos al ensamblador que cada vez que se encuentre la palabra TMR0, debe sustituir el valor 01h (01 hex). La palabra "EQU" significa igualdad. Así, le hemos asignado a TMR0 el valor 1h. Como puede ver en la Figura 4, el registro TMR0 sí tiene la dirección 1h. Puede usar 01h cada vez que desee dirigirse al registro TMR0, pero esto será mucho más difícil de depurar porque debe recordar que 01h significa RTCC todo el tiempo. También puede tener datos iguales a 01h. El uso de nombres simbólicos elimina la ambigüedad y facilita la lectura del texto fuente. También puede ver las expresiones para los registros PC, STATUS y FSR. El nombre PC corresponde a la dirección de registro 02h, el nombre ESTADO corresponde a la dirección de registro 03h, el nombre FSR corresponde a la dirección de registro 04h, y así sucesivamente. También hemos dado nombres a los puertos de E/S, CNTRLPORT (05h) y DATAPORT (06h). Las celdas de RAM también pueden tener nombres. Elegimos los nombres "SCRATCH" para la celda en 0Ch y "DIGIT" para la celda en 0Dh. Si lees hasta el final de este texto, verás que no usamos la PC directamente en ningún lado, aunque este nombre está definido. No hay error en esto: puede definir nombres y luego no usarlos, aunque, por supuesto, no puede usar un nombre si no se ha definido previamente. No se preocupe demasiado por esto: el trabajo del ensamblador es verificar el texto con todas las reglas, y obtendrá mensajes de error si algo no coincide. No solo puede nombrar registros, también puede nombrar bits individuales dentro de los registros. Observe la sección que establece el registro STATUS. La figura 7 muestra en qué consiste el registro STATUS. (Figura 3.9.1 en la página 2-544) El símbolo C se establece en 0h porque C, o CARRY, es el bit cero de la palabra de estado STATUS. Cada vez que necesitemos verificar el bit CARRY (bit 0), usaremos el carácter predefinido "C". Cada vez que queramos acceder al bit 2, o bit CERO, utilizaremos el carácter "Z" en lugar de 02h. Puede definir la estructura de bits completa de un registro, incluso si no los usa todos después. Ahora nos queda claro cómo se describen los registros y podemos pasar al código ejecutable. Antes de iniciar el código ejecutable, debemos establecer la expresión ORG en 0. Este es un indicador al ensamblador de que el código que sigue a esta expresión comienza en la dirección cero de la EEPROM. La expresión "ORG" se utiliza para asignar segmentos de código a diferentes direcciones dentro del tamaño de la EEPROM. Otra expresión ORG se produce antes de la etiqueta BEGIN en la dirección 100h, como se indica en la expresión ORG 100h. El código ejecutable debe terminar con una directiva END, lo que significa que no hay comandos ejecutables después de esta directiva. Al encenderse, el PIC16C84 salta a la dirección 000h. La primera instrucción que debe ejecutar el procesador es el comando GOTO BEGIN, que transferirá el control a la dirección 100h y continuará el trabajo desde esta dirección. BEGIN es un nombre de etiqueta seleccionable por el usuario (las etiquetas siempre deben comenzar en la posición de la primera línea) que el ensamblador usa como referencia. Durante la operación, el ensamblador determina la ubicación de la etiqueta BEGIN y recuerda que si se vuelve a encontrar este nombre, se sustituirá por la dirección de la etiqueta. Los comandos CALL y GOTO usan etiquetas para enlaces en el texto fuente. Ahora veamos los siguientes comandos ejecutados por el procesador. La instrucción MOVLW INITA carga el valor asignado al nombre INITA en el registro de trabajo W. Este valor se especifica en el encabezado y es igual a B'00000000', que es 00h. Los caracteres B' significan que los datos se dan en formato binario. Se podría escribir 0 (decimal) o 0h (hexadecimal) en el mismo lugar y obtener el mismo resultado. La representación binaria es más conveniente de usar en aquellos casos en los que se espera una operación con bits en un registro. La siguiente instrucción MOVWF TRISA carga el valor del registro de trabajo W en el registro de control de configuración del puerto A de TRISA. Establecer un bit de este registro en 0 especifica que el bit del puerto A correspondiente es una salida. En nuestro caso, todos los bits del puerto A están configurados por salidas. Tenga en cuenta que el puerto A tiene solo 5 bits y los 3 bits superiores del valor escrito en el registro TRISA, que también tiene 5 bits, no se utilizan. Si quisiéramos, por ejemplo, establecer el bit bajo del puerto A como entrada, estableceríamos el valor de INITA en B'00000001' en la sección de descripción del registro. Si durante el curso del programa necesitamos redefinir la asignación de bits de puerto individuales, por ejemplo, durante la transmisión bidireccional, entonces es más conveniente especificar todas las palabras de configuración necesarias en la sección de descripción, como hicimos para INITA e INITB. Los siguientes dos comandos MOVLW INITB y MOVWF TRISB definen la configuración del puerto B. Podríamos ahorrar dinero al no escribir el comando MOVLW INITB, porque en nuestro caso INITB también es 0h. Sin embargo, no hicimos esto porque puede generar errores difíciles de encontrar si posteriormente necesitamos cambiar la asignación de cualquier bit. En lugar de cambiar solo un bit en un puerto, cambiarán dos bits con el mismo número en dos puertos. Por lo tanto, mientras el programa no esté terminado, no es deseable hacer tales ahorros, aunque al final, en la etapa de optimización del código, tales repeticiones pueden eliminarse. ¿Qué hemos hecho ya? 1. Con las líneas EQU, le dijimos al ensamblador qué nombres de símbolos íbamos a usar. 2. Hemos configurado el vector de reinicio en la dirección 000h. 3. Hemos establecido la dirección de inicio de la ejecución del programa desde la etiqueta BEGIN hasta la dirección 100h. 4. Hemos configurado todos los bits de los puertos A y B como salidas. Ahora podemos insertar el código de ejemplo entre el encabezado y el final de nuestro código base en lugar de la línea comentada "Insertar código de ejemplo aquí". Reemplazaremos esta línea con comandos reales, ensamblaremos el programa resultante, lo escribiremos en un microcircuito, reorganizaremos el microcircuito en una placa de prototipos con un dispositivo de indicación y veremos qué sucede. PRIMER PROGRAMA Para el primer programa, solo necesitamos tres comandos: MOVLW k MOVWF f GOTO k Ya hemos usado estos comandos en el encabezado de nuestro código básico. La instrucción MOVLW carga un byte literal o constante en el registro de trabajo W. La siguiente instrucción MOVWF mueve un byte del registro de trabajo W al registro dado f. El comando GOTO transfiere el control a la dirección k. El siguiente programa escribe el valor 01010101 en el registro de trabajo W y luego escribe su contenido en el puerto B. Después de iniciar este programa, verá el brillo de cuatro LED. MOVLW B'01010101' ;carga 01010101 en el registro W MOVWF DATAPORT ;escribe W en el puerto B (DATAPORT) GOTO $ ;bucle para siempre La directiva del ensamblador "$" significa el valor actual del contador de programa (PC). Por lo tanto, el comando GOTO $ significa saltar a donde estamos actualmente. Tal ciclo es infinito, ya que no hay forma (aparte de la interrupción) de salir de él. El comando GOTO $ se usa a menudo para detener el código durante la depuración. MONTAJE Utilizaremos el macro ensamblador MPALC, ya que es de libre distribución por MICROCHIP, y contiene todas las funcionalidades que necesitamos. Si prefiere usar otro ensamblador, use su descripción para ensamblar nuestro programa. La línea de comando para ejecutar el ensamblador de macros MPALC es muy simple: MPALC <texto_fuente> [opciones] donde <texto_fuente> es el nombre del archivo que contiene el texto fuente que se va a ensamblar, y puede haber bastantes opciones. El ensamblador proporciona la descripción completa de las opciones en la opción /? Al principio, no necesitamos especificar ninguna opción. Lo único que nos queda por hacer es especificar el tipo de procesador para el que está escrito nuestro programa y el tipo de errores que debe producir el ensamblador. Esto se hace usando la directiva del ensamblador LIST (Fig. 6). La extensión de archivo de origen predeterminada es .ASM. Se debe especificar explícitamente otra extensión. Entonces, tome el archivo EXAMPLE.ASM que contiene el texto que se muestra en la Figura 6 y ejecute el ensamblador: MPALC EXAMPLE Como resultado del ensamblador, se crean archivos con las siguientes extensiones: * archivo de objeto OBJ * archivo de listado LST * error ERL y archivo de advertencia * archivo de símbolos SYM El archivo objeto se crea en formato hexadecimal y contiene código que debe escribirse en el chip. El archivo de lista contiene la lista completa del programa junto con el código de inicio. El archivo de errores y advertencias registra todos los errores y advertencias que ocurren durante el proceso de ensamblaje. También están presentes en el archivo de listado. La tabla de etiquetas simbólicas, que se escribe en un archivo simbólico, está diseñada para trabajar más con el depurador. Después de procesar nuestro programa, el ensamblador debería haber emitido el mensaje "El ensamblador no encontró errores", lo que significa que no se encontraron errores. El archivo de error no debería haberse creado. Si su ensamblador generó algún mensaje de error, o no se crearon los archivos EXAMPLE.OBJ, EXAMPLE.LST y EXAMPLE.SYM, verifique nuevamente si hizo todo correctamente. PROGRAMACIÓN Ahora tiene un archivo de objeto, EJEMPLO.OBJ, que debe escribirse en el chip. La grabación se realiza con la ayuda del programador y el programa PROPIC. La línea de comando para ejecutar el programa PROPIC es similar a la línea para ejecutar el ensamblador: PROPIC <archivo_objeto> [opciones] donde <archivo_objeto> es el nombre del archivo objeto creado por el ensamblador, y las opciones determinan el modo de escritura en el chip. La lista de opciones viene dada por la opción /? Como en el caso del ensamblador, al principio no necesitamos especificar ninguna opción. Tome el programador, conecte su cable al conector del puerto de impresora (al primer puerto de impresora si su máquina tiene 2 o 3 puertos de impresora).

¿Que es PIC? ¿Que es PIC?

Tome una fuente de alimentación de 18...36 V CC o CA capaz de entregar hasta 100 mA y conéctela al programador. Prepare el chip PIC16C84, pero no lo inserte todavía en el zócalo del programador. Ahora puede iniciar el programador:

EJEMPLO PROPIC { debe insertarse aquí sobre cómo funciona el programa del programador. } Ahora tienes un chip programado y puedes ver cómo funcionará. PRUEBAS

Tome una placa de prueba y ensamble en ella el circuito que se muestra en la Figura 5. No hay partes críticas en este circuito. Todas las resistencias pueden tener una desviación del nominal + -30%, LED, cualquiera con una corriente nominal de no más de 10 mA. Para instalar el chip PIC16C84, use el zócalo. Para alimentar nuestro circuito, puede usar la misma fuente de alimentación que usó cuando programó el microcircuito. También puede utilizar una fuente de alimentación de laboratorio de 5 V. En este caso, el estabilizador KR142EH5A, el puente de diodos y el condensador electrolítico no son necesarios, y se suministra una tensión de 5 V al punto 2 del diagrama.

Después de ensamblar el circuito, verifique cuidadosamente que todo esté ensamblado correctamente, que los LED estén instalados en la polaridad correcta, que la alimentación del microcircuito llegue a los pines correctos y en la polaridad correcta. Tome el chip programado, insértelo en el zócalo de la placa y enciéndalo. 4 LED deben encenderse (después de uno). ¡Tu primer programa está funcionando! CONJUNTO DE COMANDO PIC

Ahora que ha aprendido a ensamblar un programa, escribirlo en un chip y probarlo en una placa de prueba, podemos pasar a describir el conjunto completo de instrucciones para los microcontroladores de la familia PIC. Seguiremos centrándonos en el PIC16C84, aunque casi todo lo que hablaremos es aplicable a otros microcontroladores de la familia PIC. En el transcurso de la descripción, haremos programas cortos para comprender mejor cómo funcionan ciertos comandos. Puede conectar estos programas al código base, ensamblarlos, ponerlos en un chip y conectar el chip a una placa de prueba y ver cómo funciona. Si todo está absolutamente claro para usted en el siguiente párrafo, no puede intentarlo, sino que vaya directamente al siguiente párrafo. NOP

Comencemos nuestra descripción con el comando NOP. Es difícil ver el resultado de este comando porque no hace nada. Esta instrucción se suele utilizar en bucles de retardo de tiempo o para afinar el tiempo de ejecución de una sección específica del programa. CLRW

Este comando borra el registro de trabajo W. Agreguemos una línea a nuestro ejemplo y veamos que todos los LED se encienden.

MOVLW B'01010101' ;carga 01010101 en el registro W

CLRW ;borrar registro W

MOVWF DATAPORT ;escribe W en el puerto B (DATAPORT)

GOTO $ ;bucle para siempre CLRF f

CLRF hace para cualquier registro lo que CLRW hace para el registro de trabajo W. El siguiente comando establecerá el puerto B en 0h.

CLRF DATAPORT ;borrar puerto B (DATAPORT) SUBWF f,d ADDWF f,d

Reste el registro de trabajo W de cualquier registro f. Este comando también establece las banderas CARRY, DIGIT CARRY y ZERO en el registro STATUS. Después de ejecutar el comando, puede verificar estos signos y determinar si el resultado es cero, positivo o negativo. El carácter d después de la coma significa la dirección donde se colocará el resultado del comando. Si d=0, el resultado se coloca en el registro de trabajo W, y si d=1, el resultado se escribe en el registro f utilizado en el comando.

En nuestro ejemplo, el valor 0FFh se carga en el registro SCRATCH y el valor 01h se carga en el registro W. Luego se ejecuta el comando SUBWF y el resultado se muestra en los LED.

MOVLW 0FFh ;carga 0FFh en el registro W

MOVWF SCRATCH; carga el contenido de W en el registro SCRATCH

MOVLW 01h ;carga 01h en el registro W

SUBWF SCRATCH,0 ;los LED de resta deben mostrar 11111110 donde 1 está apagado y 0 está encendido.

El comando ADDWF funciona exactamente de la misma manera, agregando el registro de trabajo W a cualquier registro f y configurando las mismas banderas. El siguiente ejemplo demuestra cómo funciona el comando ADDWF.

MOVLW 0h ;carga 0 en el registro W

MOVWF SCRATCH; carga el contenido de W en el registro SCRATCH

MOVLW 1h ;carga 01h en el registro W

ADDWF SCRATCH,0 ;los LED adicionales deben mostrar 00000001.

Tenga en cuenta que hay un "0" delante del valor FFh en el ejemplo de resta. El símbolo "0" para ensamblador significa que se trata de un número, no de una etiqueta. Si no existiera el símbolo 0, entonces el ensamblador comenzaría a buscar una etiqueta con el nombre FFh, que no existe en este programa y, en consecuencia, se produciría un error. el carácter "h" que sigue al valor 0FF significa que el valor se especifica en formato hexadecimal. SUBLW k ADDLW k

Estos dos comandos funcionan exactamente de la misma manera que se describió anteriormente, excepto que la operación se realiza entre el registro de trabajo W y la constante de byte especificada en el comando. El comando SUBLW resta el registro de trabajo W de la constante k, y el comando ADDLW suma el registro de trabajo W a la constante k. Estos comandos también establecen las banderas CARRY, DIGIT CARRY y ZERO. El resultado del comando se coloca en el registro de trabajo W. El siguiente ejemplo disminuirá SCRATCH en 5.

MOVLW 0FFh ;carga 0FFh en el registro W

MOVWF SCRATCH; carga el contenido de W en el registro SCRATCH

SUBLW 05h; restar 5 del registro de trabajo

MOVWF SCRATCH; cargar nuevos contenidos de SCRATCH Los LED deben mostrar 11111010. DECF f,d INCF f,d

El comando DECF decrementa el registro dado en 1, e INCF incrementa el registro dado en 1. El resultado se puede volver a colocar en el registro dado (para d=1) o en el registro de trabajo W (para d=0). Como resultado de la ejecución de estos comandos, se puede establecer el signo CERO en el registro de ESTADO. Aquí hay un ejemplo del uso de estos comandos:

MOVLW 0FFh ;carga 0FFh en el registro W

MOVWF SCRATCH; carga el contenido de W en el registro SCRATCH

DECF SCRATCH,0 ;disminuye SCRATCH en 1

Este ejemplo incrementará SCRATCH de 0 a 1.

CLRF RASGUÑO ;borrar RASGUÑO

INCF SCRATCH,0 ;Incrementa SCRATCH en 1 IORWF f,d ANDWF f,d XORWF f,d

Estos tres comandos realizan operaciones lógicas OR, AND y OR EXCLUSIVO. La operación OR de suma lógica se usa con mayor frecuencia para establecer bits individuales en registros. Luego, estos bits se restablecen mediante una operación lógica Y. Cuando se realiza una operación O EXCLUSIVO en bits idénticos, el resultado es 0. Por lo tanto, la operación O EXCLUSIVO se usa a menudo para verificar el estado (establecido o borrado) de ciertos bits en un registro. El siguiente procedimiento establecerá el bit 1 en el puerto B usando el comando IORWF:

CLRF DATAPORT ;borrar puerto B

MOVLW B'00000010' ;establecer máscara en el registro W

IORWF DATAPORT,1 ;establecer bits en el puerto B por máscara W

GOTO $ ;bucle para siempre Los LED deben mostrar 00000010. Ahora borre 2 bits con la instrucción ANDWF:

MOVLW B'11111111' ;Cargar 0FFh en el registro W

MOVWF DATAPORT; establecer todos los bits en el puerto B

MOVLW B'00000101' ;establecer máscara en el registro W

ANDWF DATAPORT,1 ;borrar bits en puerto B por máscara W

GOTO $ ;bucle para siempre Los LED deben mostrar 00000101.

Digamos que hemos usado el registro SCRATCH y queremos saber si es igual a 04h. Este es un buen momento para usar el comando XORWF:

MOVLW 04h ;carga 04h en el registro W

MOVWF SCRATCH ;carga registro W en SCRATCH

XORWF SCRATCH,0 ; comprobar si W y SCRATCH son iguales Dado que SCRATCH y W son iguales, el resultado de la operación XORWF es cero (todos los LED están encendidos). El registro de ESTADO establecerá el bit CERO, que el programa real puede verificar y procesar. IORLW k ANDLW k XORLW k

Estos tres comandos realizan las mismas acciones que sus contrapartes descritas anteriormente, excepto que la operación se realiza entre el registro de trabajo W y la máscara especificada en el comando. El resultado de la ejecución del comando se coloca en el registro de trabajo W. Por ejemplo:

MOVLW 0FFh ;carga 0FFh en el registro W

ANDLW 040h; los LED de 6.º bit mostrarán 01000000.

MOVLW 10h ;carga 10h en el registro W

IORLW 09h; establezca los bits 0 y 3 Los LED mostrarán 00011001.

MOVLW B'00100000' ;carga 40h en el registro W

XORLW B'11111111' ;los LED invertidos W muestran 11011111. MOVF f,d

Este comando se usa principalmente para mover un registro al registro de trabajo W (d=0). Si establece d=1, este comando cargará el registro en sí mismo, pero el bit CERO en el registro de ESTADO se establecerá de acuerdo con el contenido del registro. Por ejemplo, queremos cargar en el registro SCRATCH 0Fh y luego cargar el registro SCRATCH en el registro de trabajo W.

MOVLW 0Fh ;Cargar 0Fh en el registro de trabajo W

MOVWF SCRATCH ;carga registro W en SCRATCH

CLRW ;borrar W

MOVF SCRATCH,0 ;Cargar SCRATCH en el registro W

MOVF SCRATCH,1 El bit CERO del registro de ESTADO se establecerá si se cumple la condición (SCRATCH = 0h). COMF f,d

Este comando invierte cualquier registro dado. Cuando d=0, el resultado se ingresa en el registro de trabajo W, y cuando d=1, el contenido del registro especificado se invierte. Como ejemplo, invirtamos el valor 01010101:

MOVLW B'01010101' ;carga 01010101 en el registro W

MOVWF SCRATCH ;carga registro W en SCRATCH

COMF SCRATCH,0 ;los LED de inversión SCRATCH mostrarán 10101010. DECFSZ f,d INCFSZ f,d

A medida que adquiera algo de experiencia con el ensamblador PIC, utilizará estos comandos con mucha frecuencia. Con d=1, la instrucción DECFSZ disminuye en uno e INCFZ incrementa el registro especificado en uno y salta la siguiente instrucción si el registro se convierte en cero. Con d=0, el resultado se escribe en el registro W y se omite el siguiente comando si el registro de trabajo W se vuelve cero. Estos comandos se utilizan para generar retardos de tiempo, contadores, bucles, etc. Aquí hay un ejemplo típico del uso de un bucle: INICIO

MOVLW 0FFh ;cargar FFh en el registro W

MOVWF SCRATCH; carga el registro W en SCRATCH LOOP

DECFSZ SCRATCH,1 ;disminuye SCRATCH en 1

GOTO LOOP ;y retrocede hasta = 0

MOVF DIGIT ;carga registro DIGIT en W

MOVWF DATAPORT; salida a LED

DECF DIGIT,1 ;disminuye el registro DIGIT en 1

GOTO START ;ir a inicio Como resultado, los LED parpadearán a diferentes velocidades. El LED de orden bajo parpadeará con más frecuencia y el LED de orden alto parpadeará menos. Con una frecuencia de reloj de 4 MHz, la frecuencia de parpadeo del LED de mayor orden será de aproximadamente 8 Hz, y cada uno siguiente parpadeará el doble de veces. Ahora veamos cómo lo hicimos. El comando DECFSZ aquí funciona en un bucle de retardo que consta de dos comandos: DECFSZ y GOTO LOOP. Debido a que precargamos el registro SCRATCH con 0FFh, este bucle se ejecutará 255 veces hasta que SCRATCH se convierta en cero. Con una frecuencia de reloj de 4 MHz, esto da un retraso de 1 µs/instrucción * 2 instrucciones * 255 = 510 µs. En el registro DIGIT, no escribimos nada de antemano, por lo que podría haber cualquier valor que se muestre en los LED en el primer paso. Luego, el registro DIGIT se decrementa en 1 y el bucle se repite desde el principio. Como resultado, el registro DIGIT itera sobre todos los valores en 256 ciclos, es decir durante aproximadamente 130 ms.

El mismo código se puede usar con la instrucción INCFSZ cambiando el valor cargado en el registro SCRATCH de FFh a 0h. Los LED parpadearán de la misma manera si el comando DECF se reemplaza con el comando INCF. SWAF f, d

Este comando intercambia nibbles en cualquier registro. En cuanto a otros comandos, cuando d=0, el resultado se escribe en el registro de trabajo W, y cuando d=1, permanece en el registro. Aquí hay un ejemplo simple del uso de este comando:

MOVLW B'00001111' ;carga 0Fh en el registro W

MOVWF SCRATCH ;carga registro W en SCRATCH

SWAPF SCRATCH,0 ;los LED de intercambio de nibbles mostrarán 11110000. RRF f,d RLF f,d

Hay dos instrucciones de desplazamiento en el ensamblador PIC: un desplazamiento a la derecha a través del bit CARRY de cualquier registro RRF y un desplazamiento a la izquierda a través del bit CARRY de cualquier registro RRF. En cuanto a otros comandos, cuando d=0 el resultado del desplazamiento se escribe en el registro W, y cuando d=1 permanece en el registro. Las instrucciones de cambio se utilizan para realizar operaciones de multiplicación y división, para la transferencia de datos en serie y para otros fines. En todos los casos, el bit desplazado fuera del registro de 8 bits se escribe en el bit CARRY del registro STATUS y el bit CARRY se escribe en el otro extremo del registro, según la dirección del desplazamiento. El desplazamiento a la izquierda escribe RLF CARRY en el bit menos significativo del registro, y el desplazamiento a la derecha escribe RRF CARRY en el bit más significativo del registro.

CLRF STATUS ;borrar registro de ESTADO

MOVLW 0FFh ;carga 0FFh en el registro W

MOVWF SCRATCH ;carga registro W en SCRATCH

RRF SCRATCH,0 ;desplazamiento a la derecha Los LED deben mostrar 01111111 porque CARRY se ha cargado en el bit alto. Ahora pasemos a la izquierda:

CLRF STATUS ;borrar registro de ESTADO

MOVLW 0FFH ;carga 0FFh en el registro W

MOVWF SCRATCH ;carga registro W en SCRATCH

RLF SCRATCH,1 ;Los LED de desplazamiento a la izquierda deben mostrar 11111110. BCF f,b BSF f,b

Los comandos Clear BCF Bit y Set BSF Bit se utilizan para operar en bits individuales en los registros. El parámetro b significa el número de bit con el que se realiza la operación, y puede tomar valores de 0 a 7. Intentemos encender el LED usando el comando BCF:

MOVLW 0FFh ;carga 0FFh en el registro W

MOVWF DATAPORT; apaga los LED

BCF DATAPORT,7 ;borrar bit 7 en puerto B

GOTO $ ;loop forever Esto encenderá el LED correspondiente al bit 7. Recuerde que hicimos lo mismo con el uso de una máscara y el comando ANDWF. La diferencia es que las instrucciones ANDWF e IORWF requieren que la máscara esté preformada y almacenada en algún registro, pero al mismo tiempo pueden establecer o borrar varios bits al mismo tiempo. Las instrucciones BCF y BSF operan en un solo bit. Además, las instrucciones BCF y BSF no modifican el registro de ESTADO, por lo que suelen utilizarse en casos en los que no se requiere una comprobación posterior del registro de estado. BTFSC f,b BTFSS f,b

Las instrucciones de salto condicional BTFSC y BTFSS verifican el estado de un bit dado en cualquier registro y saltan la siguiente instrucción según el resultado. El comando BTFSC omite el comando si el bit especificado está limpio y el comando BTFSS si está establecido. Aquí hay un ejemplo simple:

MOVLW 0FFh ;carga 0FFh en el registro W

MOVWF DATAPORT; apaga los LED

MOVLW B'00000001' ;carga 01h en el registro W

MOVWF SCRATCH; carga el registro W en SCRATCH LOOP

BTFSS CNTRLPORT,0 ;verificar bit 0 en CNTRLPORT

GOTO LOOP; esperar hasta que se establezca el bit 0

BCF DATAPORT,7 ;encender LED

GOTO $ ;loop forever Este ejemplo verifica el bit 0 del puerto A (chip pin 17) y, si este pin está configurado alto, enciende el LED. Intente reemplazar BTFSS con BTFSC en este ejemplo. El LED se encenderá cuando el bit 0 del puerto A sea bajo.

Anteriormente mencionamos la posibilidad de verificar los bits de estado en el registro STATUS. Esto también se hace con los comandos BTFSS y BTFSC:

;Verificar bit CARRY

BTFSS STATUS,C ; si se establece C, salte GOTO

IR A DONDE_SIEMPRE; El bit CERO se comprueba de la misma manera:

;Comprobar bit CERO

BTFSS STATUS,Z ; si se establece Z, salte GOTO

IR A DONDE_SIEMPRE; Es seguro decir que utilizará estos ejemplos con mucha frecuencia. LLAMAR k VOLVER

Estos dos comandos están pensados ​​para trabajar con subrutinas. El comando CALL se usa para saltar a la subrutina en la dirección especificada en el comando, y el comando RETURN se usa para regresar de la subrutina. Ambos comandos se ejecutan en 2 ciclos. La dirección en la que se encuentra el comando CALL se almacena en registros especialmente organizados llamados pila. Estos registros no son accesibles y se usan solo para llamadas y retornos de subrutinas. Profundidad de pila, es decir el número de registros especiales es 8. Por lo tanto, no se pueden realizar más de 8 llamadas a subrutinas anidadas desde el programa principal. Después de que regresa la subrutina, la ejecución continúa con la siguiente instrucción después de CALL. El registro W y el registro STATUS no se guardan cuando se llama a una subrutina, por lo que, si es necesario, se pueden almacenar en ubicaciones de memoria separadas. Aquí hay un ejemplo simple del uso de una subrutina: INICIO

PUERTO DE DATOS BSF, 7; apagar LED

CALL TURNON ;llamar subrutina

GOTO START ;ir a inicio TURNON

BCF DATAPORT,7 ;encender LED

RETURN ; regreso de la subrutina Como resultado, el LED parpadeará a una frecuencia de aproximadamente 150 kHz. RETLW a RETFIE

Hay dos comandos más para regresar de las subrutinas. El comando RETLW devuelve en el registro de trabajo W la constante especificada en este comando, y el comando RETFIE habilita las interrupciones. El comando RETLW se usa a menudo para crear tablas de valores. Deje que el registro de trabajo W contenga un desplazamiento desde el comienzo de la tabla. Luego puede obtener el elemento deseado mediante el siguiente procedimiento:

MOVLW 02h ;establecer desplazamiento

CALL SHOWSYM ;llamar subrutina

MOVWF DATAPORT ;elemento de la tabla de salida al puerto B

GOTO $ ;bucle para siempre SHOWSYM

ADDWF PC; calcular el desplazamiento de la tabla

RETLW 0AAh ;1er elemento de la tabla

RETLW 0BBh ;2º elemento de la tabla

RETLW 0CCh ;Los LED de entrada de la tercera tabla deben mostrar 3. COMANDOS ESPECIALES

Nos queda mencionar dos comandos especiales: CLRWDT y SLEEP. El comando CLRWDT está destinado a restablecer el temporizador de vigilancia, cuyo propósito ya hemos discutido. Esta instrucción debe estar presente en tales secciones del programa para que el tiempo de ejecución del programa entre dos instrucciones CLRWDT adyacentes no exceda el temporizador de vigilancia. El comando SLEEP está destinado a poner el procesador en modo de bajo consumo. Después de ejecutar este comando, el generador de reloj del procesador se apaga y el procesador puede volver al modo operativo mediante la entrada de reinicio, el temporizador de vigilancia o la interrupción. CONCLUSIÓN

Este artículo no pretende ser una descripción completa de las capacidades del microcontrolador PIC16C84. Para ello, debes leer su descripción técnica. Además, entender todas las posibilidades del ensamblador MPALC, macros, opciones, etc. Te será útil leer su manual. Para configurar correctamente todas las opciones necesarias, debe leer las instrucciones para usar el programador. Los ejemplos de aplicación de microcontroladores le darán una base sólida para proyectos independientes. Si tiene alguna pregunta, puede comunicarse con el centro de soporte regional para productos MICROCHIP en la siguiente dirección: Moscú, Rubtsovskaya nab. 3 oficina 502, tel. (095)-263-9930 Aquí siempre estarán listos para responder todas sus preguntas. También puede obtener nuevas versiones de software, ejemplos de aplicaciones, información de referencia en el BBS regional llamando al (095)-162-8405

ANUNCIO micro BBS

Publicación: N. Bolshakov, rf.atnn.ru

Ver otros artículos sección Microcontroladores.

Lee y escribe útil comentarios sobre este artículo.

<< Volver

Últimas noticias de ciencia y tecnología, nueva electrónica:

Cuero artificial para emulación táctil. 15.04.2024

En un mundo tecnológico moderno donde la distancia se está volviendo cada vez más común, mantener la conexión y la sensación de cercanía es importante. Los recientes avances en piel artificial realizados por científicos alemanes de la Universidad del Sarre representan una nueva era en las interacciones virtuales. Investigadores alemanes de la Universidad del Sarre han desarrollado películas ultrafinas que pueden transmitir la sensación del tacto a distancia. Esta tecnología de punta brinda nuevas oportunidades de comunicación virtual, especialmente para quienes se encuentran lejos de sus seres queridos. Las películas ultrafinas desarrolladas por los investigadores, de sólo 50 micrómetros de espesor, pueden integrarse en textiles y usarse como una segunda piel. Estas películas actúan como sensores que reconocen señales táctiles de mamá o papá, y como actuadores que transmiten estos movimientos al bebé. El toque de los padres sobre la tela activa sensores que reaccionan a la presión y deforman la película ultrafina. Este ... >>

Arena para gatos Petgugu Global 15.04.2024

Cuidar a las mascotas a menudo puede ser un desafío, especialmente cuando se trata de mantener limpia la casa. Se ha presentado una nueva e interesante solución de la startup Petgugu Global, que facilitará la vida a los dueños de gatos y les ayudará a mantener su hogar perfectamente limpio y ordenado. La startup Petgugu Global ha presentado un inodoro para gatos único que puede eliminar las heces automáticamente, manteniendo su hogar limpio y fresco. Este innovador dispositivo está equipado con varios sensores inteligentes que monitorean la actividad del baño de su mascota y se activan para limpiar automáticamente después de su uso. El dispositivo se conecta al sistema de alcantarillado y garantiza una eliminación eficiente de los residuos sin necesidad de intervención del propietario. Además, el inodoro tiene una gran capacidad de almacenamiento, lo que lo hace ideal para hogares con varios gatos. El arenero para gatos Petgugu está diseñado para usarse con arena soluble en agua y ofrece una gama de arena adicional ... >>

El atractivo de los hombres cariñosos. 14.04.2024

El estereotipo de que las mujeres prefieren a los "chicos malos" está muy extendido desde hace mucho tiempo. Sin embargo, una investigación reciente realizada por científicos británicos de la Universidad de Monash ofrece una nueva perspectiva sobre este tema. Observaron cómo respondieron las mujeres a la responsabilidad emocional y la voluntad de los hombres de ayudar a los demás. Los hallazgos del estudio podrían cambiar nuestra comprensión de lo que hace que los hombres sean atractivos para las mujeres. Un estudio realizado por científicos de la Universidad de Monash arroja nuevos hallazgos sobre el atractivo de los hombres para las mujeres. En el experimento, a las mujeres se les mostraron fotografías de hombres con breves historias sobre su comportamiento en diversas situaciones, incluida su reacción ante un encuentro con un vagabundo. Algunos de los hombres ignoraron al vagabundo, mientras que otros lo ayudaron, como comprarle comida. Un estudio encontró que los hombres que mostraban empatía y amabilidad eran más atractivos para las mujeres en comparación con los hombres que mostraban empatía y amabilidad. ... >>

Noticias aleatorias del Archivo

Lector resistente a la humedad y al polvo PocketBook 640 07.03.2014

En Rusia, se presenta un dispositivo para leer libros electrónicos PocketBook 640. Según el fabricante, este es "el primer lector en serie resistente a la humedad y al polvo del mundo".

La novedad puede resistir la inmersión total bajo el agua a una profundidad de un metro. El diseño resistente protege los componentes electrónicos del daño causado por el agua salada, la arena y la espuma de jabón.

El lector está equipado con una pantalla E Ink Pearl de 6 pulgadas con una resolución de 600x800 píxeles. Soporta control táctil. El fabricante ha aplicado la tecnología Film Touch: la película sensible más delgada se aplica a la superficie de la pantalla, lo que hace que el dispositivo sea más liviano que otros dispositivos similares con pantalla táctil y mejora la calidad de visualización del texto. El panel es bien legible a la luz del sol.

El lector está equipado con un procesador con una velocidad de reloj de 1,0 GHz, 256 MB de RAM y un módulo flash con una capacidad de 4 GB. Hay un adaptador para redes inalámbricas Wi-Fi (802.11b/g/n) y un puerto microUSB. El dispositivo pesa 170 g, sus dimensiones son 174,4x114,6x9 mm.

Linux se utiliza como plataforma de software. Admite PDF, PDF (DRM), EPUB, EPUB (DRM), DJVU, FB2, FB2.ZIP, DOC, DOCX, RTF, PRC, TCR, TXT, CHM, HTM, HTML e imágenes JPEG, BMP, PNG, TIFF .

La energía es proporcionada por una batería recargable de 1300 mAh, cuya carga es suficiente para ver hasta 8000 páginas. El precio de PocketBook 640 es de 7000 rublos.

Otras noticias interesantes:

▪ La genética tiene la culpa del envejecimiento del intelecto

▪ Vista de la casa desde arriba

▪ Técnica contra piratas

▪ catapulta espacial

▪ botellas de papel

Feed de noticias de ciencia y tecnología, nueva electrónica

 

Materiales interesantes de la Biblioteca Técnica Libre:

▪ sección del sitio Instrucciones estándar de seguridad y salud en el trabajo (TOI). Selección de artículos

▪ artículo Matamoscas siberiano. Consejos para el maestro de casa

▪ ¿Cuáles son las características específicas de China? Respuesta detallada

▪ artículo semilla esencial. Leyendas, cultivo, métodos de aplicación.

▪ artículo Medidor USB LC. Enciclopedia de radioelectrónica e ingeniería eléctrica.

▪ articulo Transistores de campo exterior. Enciclopedia de radioelectrónica e ingeniería eléctrica.

Deja tu comentario en este artículo:

Nombre:


Email opcional):


comentar:





Todos los idiomas de esta página

Hogar | Biblioteca | Artículos | Mapa del sitio | Revisiones del sitio

www.diagrama.com.ua

www.diagrama.com.ua
2000 - 2024