Sei sulla pagina 1di 10

Microcontroladores:

A) Generalidades:
Un Microcontrolador es Circuito integrado o chip que incluye en su interior las tres
unidades funcionales de un ordenador: CPU, Memoria y Unidades de Entrada/Salida, es
decir, se trata de un computador completo en un solo circuito integrado. Aunque sus
prestaciones son limitadas, además de dicha integración, su característica principal es su
alto nivel de especialización para tareas concretas.

B) Estructura interna y externa:

La estructura de un microcontrolador permite definir su forma de funcionamiento, las dos


arquitecturas principales usadas en la fabricación de microcontroladores son: arquitectura de Von
Neumann y arquitectura Harvard.

Arquitectura de Von Neumann

En esta arquitectura, los datos y las instrucciones circulan por el mismo bus ya que estos son
guardados en la misma memoria, su principal ventaja es el ahorro de líneas de entrada-salida,
pero esto supone una disminución en la velocidad con la que se realizan los procesos.

Arquitectura Harvard

A diferencia de la anterior, en la arquitectura Harvard existe una memoria específica para datos y
una memoria específica para las instrucciones, de esta forma se usan dos buses bien
diferenciados. Con esto se logra trabajar con las dos memorias simultáneamente y en
consecuencia se obtiene mucha más velocidad en la ejecución de los programas.
(Estructura interna del Microcontrolador PIC16F887)

(Estructura interna de un microcontrolador Atmega328)


(Estructura interna del microcontrolador PIC16F84)

(Tipos de encapsulados en microcontroladores)

C) Métodos de programación de microcontroladores:

1)-Lenguaje ensamblador:

El lenguaje ensamblador es el lenguaje de programación utilizado para escribir programas


informáticos de bajo nivel, y constituye la representación más directa del Código
máquina específico para cada arquitectura de computadoras legible por un programador.
Un programa escrito en lenguaje ensamblador consiste en una serie de Instrucciones que
corresponden al flujo de órdenes ejecutables que pueden ser cargadas en la Memoria de un
sistema.

Características:

-El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido
directamente por un ser humano ya que su estructura se acerca más bien al lenguaje máquina, es
decir, lenguaje de bajo nivel.

-El lenguaje ensamblador es difícilmente portable.

-Los programas hechos en lenguaje ensamblador, al ser programado directamente


sobre Hardware, son generalmente más rápidos y consumen menos recursos del sistema
(memoria RAM y ROM). Al programar cuidadosamente en lenguaje ensamblador se pueden crear
programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto
nivel.

-Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un
microcontrolador por lo que se pueden crear segmentos de código difíciles de programar en un
lenguaje de alto nivel.

-También se puede controlar el tiempo en que tarda una Rutina en ejecutarse, e impedir que se
interrumpa durante su ejecución.

2)-Lenguaje C

Lenguaje de programación C. También conocido como “Lenguaje de programación de sistemas”


desarrollado en el año 1972 por Dennis Ritchie para UNIX un sistema operativo multiplataforma. El
lenguaje C es del tipo lenguaje estructurado como son Pascal, Fortran, Basic. El lenguaje C es un
lenguaje de alto nivel (puesto que es estructurado y posee sentencias y funciones que simplifican
su funcionamiento) tenemos la posibilidad de programar a bajo nivel (como en
el Assembler tocando los registros, memoria etc.). Para simplificar el funcionamiento del lenguaje
C tiene incluidas librerías de funciones que pueden ser incluidas haciendo referencia la librería que
las incluye, es decir que si queremos usar una función para borrar la pantalla tendremos que
incluir en nuestro programa la librería que tiene la función para borrar la pantalla. Se usan
instrucciones que son muy parecidas a otros lenguajes incluyendo sentencias como if, else, for, do
y while...

La programación en C tiene una gran facilidad para escribir código compacto y sencillo a su misma
vez. En el lenguaje C no tenemos procedimientos como en otros lenguajes solamente tenemos
funciones los procedimientos los simula y esta terminante mente prohibido escribir funciones,
procedimientos y los comandos en mayúscula todo se escribe en minúsculas (a no ser las
constantes J) Los archivos en la C se escriben en texto puro de ASCII del Dos.

D) Especificaciones de microcontroladores comerciales.

I)Atmega328
El Atmega328 AVR 8-bit es un Circuito integrado de alto rendimiento que está basado un
microcontrolador RISC, combinando 32 KB ISP flash una memoria con la capacidad de leer-
mientras-escribe, 1 KB de memoria EEPROM, 2 KB de SRAM, 23 líneas de E/S de propósito general,
32 registros de proceso general, tres temporizadores flexibles/contadores con modo de
comparación, interrupciones internas y externas, programador de modo USART, una interfaz serial
orientada a byte de 2 cables, SPI puerto serial, 6-canales 10-bit Conversor A/D (canales
en TQFP y QFN/MLF packages), "watchdog timer" programable con oscilador interno, y cinco
modos de ahorro de energía seleccionables por software. El dispositivo opera entre 1.8 y 5.5
voltios. Por medio de la ejecución de poderosas instrucciones en un solo ciclo de reloj, el
dispositivo alcanza una respuesta de 1 MIPS, balanceando consumo de energía y velocidad de
proceso.

Características:

PARÁMETROS VALORES

Flash 32 Kbytes

SRAM 2 Kbytes

Cantidad Pines 28

Frecuencia máxima de operación 20 MHz

CPU 8-bit AVlR

Pines máximos de E/S 23

Interrupciones internas 24

SPI 1

UART 1

Canales ADC 8
Resolución de ADC 10

Eeprom 1K

Canales PWM 6

Voltaje de operación 1.8-5.5 v

Timers 3

Para compilar programas en ensamblador, C o C++ es necesario contar con la cadena de


herramientas "Atmel AVR Toolchain", la cual cuenta a su vez con las aplicaciones necesarias:
compilador C/C++, assembler, linker, debugger e incluso librerías en C para el desarrollo de
programas. Todas estas aplicaciones son tipo "command line", es decir que deben ejecutarse
desde una ventana de comando MSDOS.

II) PIC16F84

Características:

 Memoria Flash de programa (1K x 14 bits).


 Memoria RAM (68 registros x 8 bits).
 Un temporizador/contador (timer de 8 bits).
 Un divisor de frecuencia.
 Varios puertos de entrada-salida (13 pines en dos puertos, 5 pines el puerto A y 8 pines el
puerto B).
 Manejo de interrupciones (de 4 fuentes).
 Perro guardián (watchdog).
 Bajo consumo.
 Frecuencia de reloj externa máxima 10MHz. (Hasta 20MHz en nuevas versiones). La frecuencia
de reloj interna es un cuarto de la externa, lo que significa que con un reloj de 20Mhz, el reloj
interno sería de 5Mhz y así pues se ejecutan 5 Millones de Instrucciones por Segundo (5 MIPS)
 No posee conversores analógicos-digital ni digital-analógicos.
 Pipe-line de 2 etapas, 1 para búsqueda de instrucción y otra para la ejecución de la instrucción
(los saltos ocupan un ciclo más).
 Repertorio de instrucciones reducido (RISC), con tan solo 35 instrucciones distintas.
 4 tipos distintos de instrucciones, orientadas a byte, orientadas a bit, operación entre
registros, de salto.

En los últimos años se ha popularizado el uso de este microcontrolador debido a su bajo costo y
tamaño. Se ha usado en numerosas aplicaciones, que van desde los automóviles a decodificadores
de televisión. Es muy popular su uso por los aficionados a la robótica y electrónica.
Puede ser programado tanto en lenguaje ensamblador como en Basic y principalmente en C, para
el que existen numerosos compiladores (Por ejemplo: mikroC PRO for PIC: ambiente de desarrollo
de programación de microcontroladores PIC en lenguaje C).

Cuando se utilizan los compiladores Basic, es posible desarrollar útiles aplicaciones en tiempo
récord, especialmente dirigidas al campo doméstico y educacional.

El PIC16F84 posee una UAL (Unidad Aritmética Lógica) limitada que impide hacer cálculos
matemáticos básicos, como, por ejemplo, una multiplicación de dos números a 8 bits en una única
instrucción, o una división en una única instrucción. Por lo que el programador debe valerse de
otras técnicas matemáticas que se apoyan en el juego de instrucciones aritméticas disponibles en
este PIC para realizar este cálculo matemático básico.
Proyecto con Microcontroladores:
-Contador
Contador de pulsos desde 0 hasta 9. Se utiliza el PIC16F628A y un pulsador normalmente abierto
esto para generar los pulsos manualmente, estos pulsos serán mostrados en el display de 7
segmentos para representar el conteo.

(Esquema de conexiones)

//Contador.c

//Macros (simbolos equivalentes)


#define BOTON RA4_bit //BOTON es equivalente a RA4_bit
#define PRESIONADO 0 //PRESIONADO es equivalente a 0

//Función para convertir de Binario a 7 segmentos


char Bin2_7seg(char digit){
switch (digit){
case 0: return 0x3F; //0x3F es el código 7-segmentos del 0.
case 1: return 0x06; //0x06 es el código 7-segmentos del 1.
case 2: return 0x5B;
case 3: return 0x4F;
case 4: return 0x66;
case 5: return 0x6D;
case 6: return 0x7D;
case 7: return 0x07;
case 8: return 0x7F;
case 9: return 0x67;
}
}

//Declaracion de variables
char contador=0; //La variable contador es de tipo char y tiene valor inicial d
e 0.

//Función principal
void main(){
PORTB=0x00; //Estado inicial del puerto B.
CMCON=0x07; //Pines RA<3:0> como E/S digital.
TRISB=0x00; //Puerto B como salida.
while (1){
if (BOTON==PRESIONADO){ //Si se pulsa,
Delay_ms(10); //esperar 10ms,
if (BOTON==PRESIONADO){ //revisar si el boton sigue pulsado,
while (BOTON==PRESIONADO); //y esperar mientras siga presionado.
contador++; //Al soltar incrementar el contador,
if (contador>9) contador=0; //y reiniciarlo a 0 si supera el valor de 9.
}
}
PORTB=Bin2_7seg(contador); //Convertir y enviar al puerto B el valor
//presente en la variable contador.
}
}//Fin de la función principal

(Programación del contador)

Potrebbero piacerti anche